2012-04-22 3 views
18

Прямо сейчас я смотрю Play Framework и люблю его много. Одной из деталей, которые рекламируются среди функций, предлагаемых в Play, является Akka.Каковы альтернативы языку и продукту Akka?

Чтобы лучше понять Акку и как ее правильно использовать, можете ли вы рассказать мне, какие альтернативы на других языках или продуктах?

Как RabbitMQ по сравнению с ним? Много ли перекрывается? Это практическое использование их вместе? В каких случаях?

ответ

12

Лучшее место для начала - great Akka official documentation. Я думаю, что самым близким продуктом/каркасом для Akka является язык . I guess (Я не использовал Play framework) Akka используется там для реализации Comet и другой асинхронной обработки.

несколько похож на идеи (инфраструктура для отправки сообщений), обратите внимание, что RabbitMQ даже написан в , но у них несколько разных прецедентов. Я бы сказал, что в то время как RabbitMQ фокусируется на передаче сообщений, Akka больше касается участников (приемников сообщений и отправителей).

+17

RabbitMQ является брокером AMQP, то есть транспортным средством. Akka - это инструментарий параллелизма/масштабируемости/отказоустойчивости. Вы можете использовать AMQP в качестве почтовых ящиков Akka Actor или в качестве транспорта Akka. –

+0

Спасибо за ответ, просто для того, чтобы сделать клевету, если у меня есть несколько приложений java, я хочу, чтобы они общались, мне понадобится rabbitmq. Например, 2 отдельных игры 2 приложения, отдельные машины, акка не могут быть объединением, мне нужны jms или rabbitmq, это правильно? –

+5

Вы можете «присоединиться» к JVM, используя удаленных участников, они имеют транспорт по умолчанию, который основан на Netty. –

7

Лучший совет, который я могу предложить, поскольку я также прошел один и тот же процесс мышления, когда Play 2.0 присоединился к Typesafe и начал использовать Akka больше, - это поиск «модели Actor».

Википедия - отличный ресурс - http://en.wikipedia.org/wiki/Actor_model. В нем есть список языков программирования, которые могут поддерживать модель актера, а также список фреймворков (включая Akka), которые основаны на модели Actor.

Проще говоря, модель Actor основана на концепции актеров в параллельной вычислительной модели. Актеры не обязательно означают прохождение сообщений, но в большинстве распространенных случаев использования актеры передают сообщения (в которых приходят сходства с rabbitMQ).

+8

Небольшая коррекция с большим ударом: актеры могут ТОЛЬКО передавать сообщения, то есть суть концепции. Актеры - это модель вычисления, в то время как rabbitMQ - средство передачи сообщений, поэтому они живут на разных уровнях абстракции. –

15

Я использую RabbitMQ + Spring AMQP + EventAus Guava для автоматической регистрации актеров-подобных мессенджеров с использованием Guava's EventBus for pattern matching полученных сообщений.

Сходство с весной AMQP и Akka является сверхъестественным. Весна AMQP's SimpleMessageListenerContainer + MessageListener в значительной степени эквивалентна Актеру.

Однако для всех намерений и целей RabbitMQ более мощный чем Акку в том, что он имеет много клиентов реализации на разных языках, обеспечивает сохранение (долговечные очередей), топологической маршрутизации и штыревые QoS алгоритмы ,

Это говорит о том, что Akka более удобна и, по идее, Akka может делать все вышеперечисленное, а некоторые люди имеют письменные расширения, но большинство из них просто используют Akka, а затем Akka доставляют сообщения через RabbitMQ. Также Spring AMQP SimpleMessageListener контейнер является тяжелым, и его неясно, что произойдет, если вы создали пару миллионов из них.

Оглядываясь назад, я бы предпочел использовать Akka для RabbbitMQ вместо Spring AMQP для будущих проектов.

+1

Akka поддерживает надежные почтовые ящики, похожие на постоянные очереди, предоставляемые RabbitMQ. –

+1

Да, я нашел это недавно. Моя основная говядина с Akka заключается в том, что если вы используете Java для взаимодействия с ней, вам, похоже, нужно много делать. Другое дело, что на других языках, таких как python, есть клиенты amqp. –

+0

Согласно http://letitcrash.com/post/29988753572/akka-amqp-proxies, Akka может использовать AMQP в качестве транспорта. AMQP является стандартным протоколом проводного уровня, поэтому он не препятствует использованию Akka или любым языком программирования или операционной среды в качестве транспорта для связи с клиентами, написанными на других языках программирования. –

1

Akka представляет собой набор инструментов и выполнение для построения параллельных & распределенных систем. Для достижения этой цели Akka использует модель Actor. Если вы ищете альтернативу для Акку, я думаю, что вы не можете найти полное решение, как Акку, потому что Akka имеют несколько функций, которые позволяют разработать надежные параллельной & распределенной системы:

  • Akka актер
  • Актер маршрутизация, контроль и мониторинг
  • асинхронных и неблокирующие сообщения
  • Akka Cluster (для управления кластером)
  • Akka настойчивость (для реализации сорсинг событий, настойчивость актера и At-Least-Once сообщений Delivery)
  • Akka I/O (для TCP & UDP связи)
  • Akka HTTP (для HTTP связи, как клиент или сервер)
  • Akka потока (для обработки потока)
  • ...

Но я предлагаю взглянуть на Erlang/OTP и Quasar.

+0

Что касается сравнения с Quasar, я также предлагаю взглянуть на http://blog.paralleluniverse.co/2015/05/21/quasar-vs-akka/. Обратите внимание, что Galaxy еще не готово к производству (скоро это произойдет), но, с другой стороны, Quasar Actors настолько похожи на Erlang's (и, следовательно, настолько прямолинейны), что интеграция практически с любым решением для обмена сообщениями чрезвычайно проста, и мы скоро напишите об этом подробнее. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь частью команды Quasar. – circlespainter

1

http://scalecube.io - микроуслуги с низкой задержкой lib. - полное решение, позволяющее разрабатывать надежную параллельную распределенную систему &.

Как Akka: - его основанный на протоколах сплетен и плавания. - его сообщение управляется на основе protobuf (полный дуплекс). - его для JVM. - низкая латентность и примерно в 6 раз быстрее. - использует RxJava, который оказался быстрее, чем потоки акка.

В отличие от Akka: - его менее самоуверенный - не каркас. - не форсирование Актер шаблон как целостный рисунок.

+0

Кажется, что у него ничего не было для сопротивления. Может быть, другой зверь? – user2108278

0

Вы можете также рассмотреть вопрос использования VertX, который также является реактивная платформа http://vertx.io/

Там, где вы можете рассмотреть Verticle (http://vertx.io/docs/vertx-core/java/#_verticles) похож на актера парадигмы. И EventBus аналогичен Databus Akka (http://vertx.io/docs/vertx-core/java/#event_bus)

Смежные вопросы