Каковы альтернативы языка и продукта Акке?

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

  • Акка актер
  • Маршрутизация, надзор и мониторинг актеров
  • Асинхронная и неблокирующая передача сообщений
  • Кластер Akka (для управления кластерами)
  • Настойчивость Akka (для внедрения источника событий, актера настойчивости и обмена сообщениями "По крайней мере один раз" ).
  • Входы/выходы Akka (для связи по протоколу TCP и UDP)
  • Akka HTTP (для связи HTTP как клиент или сервер)
  • поток Akka (для обработки потока)
  • ...

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

Ответ 5

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

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

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