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

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

10
задан Zubair 4 February 2010 в 11:53
поделиться

3 ответа

Scala несколько ограничена тем фактом, что потоки Java довольно тяжелые. Он не будет масштабироваться по количеству потоков так сильно, как Erlang.

Проще говоря, забудьте о запуске тысяч актеров в Scala в ближайшее время. РЕДАКТИРОВАТЬ : см. Комментарий ниже, свидетельствующий об обратном. В свою защиту я имел в виду тысячи актеров в тысячах потоков.

Однако актеры не являются частью базового языка. Это просто библиотека, которая из-за присущих Scala сильных сторон выглядит так, как если бы она была частью языка. Важность этого состоит в том, что акторы заменяемы . Для Scala есть две важные альтернативные библиотеки акторов. Самый известный из них - это Акка, о котором говорили другие, и я могу только одобрить его как заслуживающий серьезного внимания. Другой - это акторы Lift, которые идут другим путем, предоставляя более простую (и надежную) реализацию акторов, которая отвечает собственным потребностям Lift и не пытается выходить за рамки этого.

Еще одним многообещающим достижением является добавление в Scala 2.8 ограниченных продолжений. Разграниченные продолжения, хотя и трудны в использовании, обеспечивают очень быструю реализацию актора. Чтобы быть ясным, сложно писать библиотеки (например, акторов) с разделенными продолжениями, но такая библиотека не будет чем-то отличаться от других библиотек акторов.

7
ответ дан 3 December 2019 в 16:09
поделиться

Два слова: тип безопасности

Есть небольшой лакомый кусок на тип безопасности (или его отсутствие) в C в Википедии, который может пролить свет на вас.

-121--1415133-
int o = 12;
void *i = &o;

Как получить доступ к int, которому i точек при наличии только пустых указателей и отсутствии int *. Вы можете знать, что на вашей платформе int составляет 4 байта, так что вы можете memcpy 4 байта от начала того, что пустота * указывает на во временной int и затем использовать это. Но это не очень удобно.

Или с помощью

struct Pair {
   char *first;
   char *second;
};

, насколько полезным был бы указатель void на структуру Pair? Скорее всего, вы захотите получить доступ к первому члену , и это будет большой работой, если у вас не будет указателя на структуру Pair.

-121--1415127-

[Отказ от ответственности: Я в команде 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

Надеюсь увидеть вас в перечислять рассылки в ближайшее время!

14
ответ дан 3 December 2019 в 16:09
поделиться

Scala не спроектирована как когерентная платформа (например, erlang) и поэтому по умолчанию не включает в себя возможности робастного распределения. Библиотека scala actor больше похожа на переработанную на языке модель процесса erlang. Существуют библиотеки, которые предоставляют OTP-подобные возможности и кластеризацию, т.е. Akka.

5
ответ дан 3 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: