Как Акка сравнивается с Эрлангом? [закрыто

StackOverflow https://stackoverflow.com/questions/4491039

  •  11-10-2019
  •  | 
  •  

Вопрос

Я недавно смотрел на Акку, и это довольно впечатляет. Похоже, что у него есть большинство убийственных особенностей Erlang - прозрачность местоположения, иерархии надзора и многое другое. Есть ли какие -либо функции, которые у Эрлана есть, что у Акки нет?

Это было полезно?

Решение

Отказ от ответственности: я - по Акка

  • Erlang делает копирование на SNEND-Akka использует общую память (неизменные объекты) для in-VM Sends
  • Erlang делает Per -процесс GC - Akka использует JVM GCS
  • Эрланг есть ОТП - Akka интегрируется со всей экосистемой Java (Apache Camel, JAX-RS и т. Д.)
  • Erlang делает планирование процесса для вас - Akka позволяет использовать множество различных диспетчеров с бесконечными возможностями конфигурации
  • Erlang делает Hot Code Reload - Akka может поддержать его, но он менее гибкий из -за класса JVM.

Это те, что с моей головы.

С другой стороны, использование Akka означает, что вы можете использовать Scala, Java, Groovy или Jruby, чтобы написать ваши приложения.

Другие советы

В Erlang процессы гарантированно будут переключаться примерно каждые 1000 сокращений. В такой наивной структуре, как агент Scala/Akka владеет планировщиком, пока не завершит работу в получении. Мат. Игра закончена. Hasta La Vista :) люди, не тратьте время на псевдо -технические. Я шокировал, что парни здесь сравнивают Скала с Эрланг.

Кроме того, есть много других так называемых «убийственных функций», но вот мой совет, не думайте с точки зрения функций, подумайте об идиомах, которые обеспечивают конкретный язык. Scala крадет «лучшие функции», Erlang позволяет/реализует вас правыми идиомами надежно создавать системы, с языком высокого уровня, который вытекает из этих правильных идиомов. Когда вы изучаете Erlang, вы восстанавливаете свой разум, свой образ мышления о распределенной надежной системе, Эрланг учит вас и обновляет вас. Скала - это просто еще один императивный (о, извините, многомасштабный, забавный слова), который пытается украсть хорошие функции с других языков.

Почти никто не упоминает процесс изоляции. Без гарантий того, что «ваша ветка не может связываться с моим мусором», распределенные системы гораздо сложнее рассуждать. (Они уже достаточно сложны с Процессы Эрланга.)

AFAIK (который не далеко, учитывая мой ограниченный прямой опыт работы с JVM), только Эрланг фактически получает изоляцию процесса «правильно» на JVM. Г-н Google может дать некоторые намеки на то, где найти исследования Fox и Candea (?) На исследованиях, которые используют технику «микроребут» («Компьютерные вычисления, ориентированные на восстановление»). Разработчик Erlang читает это исследование и говорит несколько вещей:

  1. Добро пожаловать в клуб, что вас так долго занимало?
  2. Тем не менее, JVM делает его ужасно, ужасно трудно присоединиться. :-)

Для меня, горячий код, обмену целым кластером Erlang без простоя (например: make:all([netload]) является одной из признаков Эрланга.

Но давайте изменим ваш вопрос: чего нет у Акки, которого нет у Эрланга? Конечно, вы можете добавить десятки расширений и библиотек (Scala, Akka, Spring, Osgi, ...) в Java, чтобы попытаться приблизиться к Erlang. Но в чем дело? В целом, все эти расширения гораздо сложнее, чем изучение простого языка Erlang, который в настоящее время доказал более 2 десятилетий, что он может выполнять работу, предлагая верхнюю масштабируемость с нулевым временем простоя.

Вероятно, Erlang лучше для более крупных распределенных систем (после ответа Vjache), но для обычного сервера, если вы просто хотите использовать полную мощность нескольких процессоров, тогда Akka - хороший выбор - обеспечивает хорошую абстракцию, производительность и интеграцию с экосистемой Java.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top