Каковы альтернативы языка и продукта Акке?
Сейчас я смотрю Play Framework и очень нравится. Одна из частей, которые рекламируются среди функций, предлагаемых в Play, - Akka.
Чтобы лучше понять Акку и как ее правильно использовать, можете ли вы рассказать мне, какие альтернативы на других языках или продуктах?
Как RabbitMQ по сравнению с ним? Много ли перекрывается? Это практическое использование их вместе? В каких случаях?
Ответы
Ответ 1
Лучшее место для начала - отличная официальная документация Akka. Я думаю, что ближайший продукт/структура для Akka erlang язык. Я предполагаю (я не использовал Play framework) Akka используется там для реализации кометы и другой асинхронной обработки.
rabbitmq несколько похож на идеи (инфраструктура для отправки сообщений), обратите внимание, что 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:
- его менее упрямый
- не рамки.
- не форсирование шаблона Актера как целостного рисунка.
Ответ 6
Вы также можете использовать 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)