На прошлой неделе я глубоко погрузился в документы Akka и, наконец, понял, что такое системы актеров и какие проблемы они решают.
Мое понимание (и опыт работы) с традиционными JMS / AMQP брокерами сообщений заключается в том, что они существуют для обеспечения следующего:
- Асинхронная обработка между производителем и потребителем; и
- Гарантия доставки сообщений, включая постоянство, повторные попытки и откат
Но разве Акка не обеспечивает это без всей необходимой инфраструктуры и эксплуатационных расходов?
- В Akka все коммуникации Actor являются асинхронными и неблокирующими; и
- В Акке
SupervisorStrategies
существуют попытки выполнить повторную попытку, восстановление и эскалацию. Актеры могут быть настроены на сохранение практически в любом типе хранилища, если это тоже требование.
Поэтому у меня возникает вопрос: если мое приложение использует Akka, возникает ли у меня необходимость привлечь брокеров JMS / AMQP (например, ActiveMQ, RabbitMQ, Kafka)? Другими словами, существует ли когда-либо сценарий использования, когда новое приложение на основе Akka будет также оправдывать введение нового кластера JMS / AMQP-брокера? Почему или почему нет?
Единственным аргументом будет то, что, возможно, мое приложение Akka должно интегрироваться с другой системой. Но в этом случае модуль Akka-Camel позволяет Akka использовать исчерпывающий, почти бесконечный список возможностей интеграции Camel (TCP, FTP, ZeroMQ, этот список можно продолжать и продолжать ...).
Мысли?
Ответы:
Актер модель
Модель актора - это компьютерная стратегия для создания приложений, которые обрабатывают много параллельных вычислений и обработку состояний. Это не единственная стратегия, но это очень хорошо проверенный, простой и надежный подход, который переносит вычисления в участников , которые передают сообщения, которые они обрабатывают по одному и по порядку.
Akka - это фреймворк, реализующий модель акторов и позволяющий создавать системы акторов со всей уже созданной инфраструктурой и функциями (например, с использованием JQuery вместо javascript).
обмен сообщениями
Системы сообщений - это приложения, которые могут отправлять и получать сообщения. Существует множество разновидностей, от базовых очередей до крупномасштабного программного обеспечения с темами, публикациями / подпрограммами, постоянством и другими функциями, но конечная цель та же. Сохраните несколько байтов где-нибудь и получите их позже, с некоторым порядком. Основным вариантом использования сегодня является разъединение систем и обеспечение асинхронной обработки с разным графиком или скоростью. RabbitMQ, NATS, Kafka и т. Д. Являются примерами систем сообщений.
сравнение
Модель Actor и инфраструктура Akka являются низкоуровневыми инструментами, которые являются отличным способом создания приложений , таких как очереди сообщений.
Можете ли вы использовать Akka вместо очереди сообщений? Конечно. Если вы создаете программное обеспечение, в котором уже используется модель актора, вам, вероятно, не понадобится внешняя очередь сообщений, особенно для отправки сообщений в пределах одного потока или приложения. Вы можете использовать возможности Akka Remoting, чтобы даже отправлять сообщения другим акторам, работающим на других машинах.
Однако делает ли это системы обмена сообщениями устаревшими? Точно нет. Просто потому, что вы можете сами кодировать все эти вещи, не означает, что вам это нужно, особенно когда модель актера не подходит для вашей проблемы или вам нужны разные языки, приложения, внешние API, операционные системы, базы данных и т. Д. друг с другом (независимо от того, являются ли они актерскими системами или нет).
Если вам просто нужно передать несколько сообщений между двумя системами, используйте очередь сообщений. Если вам требуется масштабируемая обработка с отслеживанием состояния и обмен сообщениями с малой задержкой в одном приложении, используйте модель актора. Они оба существуют на совершенно разных уровнях, и от того, как вы их используете, зависит решение, которое вы создаете.
На SO есть отличный ответ об этой же модели актера против обмена сообщениями: /programming/5693346/when-to-use-actors-instead-of-messaging-solutions-such-as-websphere-mq- или-TIBCO
источник