Как Scala масштабируется в кластере?

Я изучаю Erlang, но также не открываю глаза для других технологий, таких как Scala. Кто-нибудь знает, как производительность Scala multi node сравнивается с Erlang?

Ответ 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.