Каковы языковые и товарные альтернативы Akka?

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

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

Как RabbitMQ сравнивается с этим? Есть много совпадений? Практично ли использовать их вместе? В каких случаях?

6 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В отличие от Акки: - менее упрямый - не рамки. - не заставлять актерский паттерн как целостный паттерн.

Другие вопросы по тегам