Я изучаю Erlang, но также не открываю глаза для других технологий, таких как Scala. Кто-нибудь знает, как производительность Scala multi node сравнивается с Erlang?
Как Scala масштабируется в кластере?
Ответ 1
Scala несколько ограничивается тем фактом, что потоки Java довольно тяжелые. Он не будет масштабироваться в количестве потоков столько, сколько делает Erlang.
Проще говоря, забудьте о запуске тысяч участников в Scala в краткосрочной перспективе. EDIT: см. комментарий ниже к опыту обратного. В моей защите я имел в виду тысячи актеров на тысячи тем.
Однако актеры не являются частью базового языка. Это всего лишь библиотека, которая из-за сильных сторон Scala выглядит так, как будто они являются частью языка. Важность этого заключается в том, что участники могут быть сменными. Для Scala существуют две важные альтернативные библиотеки. Самая известная из них - Акка, о которой говорили другие, и которую я могу только одобрить, поскольку заслуживаю серьезного взгляда. Другой - это актеры Lift, которые идут в другую сторону, обеспечивая более простую (и надежную) актерскую реализацию, которая отвечает собственным потребностям Лифт и не пытается выйти за рамки этого.
Другой перспективной разработкой является добавление разграниченных продолжений к Scala 2.8. Ограниченные продолжения, хотя и трудные в использовании, обеспечивают очень быструю реализацию актера. Чтобы быть понятным, трудно писать библиотеки (например, актеры) с разграниченными продолжениями, но такая библиотека не будет отличаться от других, чем другие библиотеки актеров.
Ответ 2
[Отказ: я нахожусь в команде Akka]
Я действительно рекомендую вам хорошо взглянуть на фреймворк Scala Akka
Мы действительно стремимся обеспечить платформу, которая масштабируется горизонтально и вертикально, и это включает в себя отказ от использования систем самовосстановления.
Features: Actors for concurrency Software Transactional Memory (STM) for concurrent transactional composition Supervisor hierarchies for fault-tolerance Cluster Membership Java API with ActiveObjects (Java Actors sort of) Distributed persistence through MongoDB, Cassandra or Redis REST support through exposing Actors as JAX-RS endpoints + (Comet/Ajax Push) + much much more
Надеемся скоро увидеть вас в списке рассылки!
Ответ 3
Scala не предназначен как когерентная платформа (например, erlang) и поэтому по умолчанию не включает надежные возможности распространения. Актерская библиотека scala больше похожа на модель процесса erlang, переоборудованную на языке. Существуют библиотеки, которые предоставляют OTP-подобные возможности и кластеризация, т.е. Akka.