@ericcartman

Актуальна ли еще модель акторов ( AKKA, Vert.X) или можно обойтись средствами Spring 5/Spring Boot 2 + Kafka?

Разрабатываю микросервисные архитектуры, использую асинхронные API(REST), Message queues, Spring Boot ( и его либы)
Конечно читал про реактивное программирование, как я понимаю, это когда клиент посылает request, его принимают, клиент продолжает заниматься другими своими делами, через некоторое время клиенту приходит response.
Модель акторов ( например возмем AKKA) позволяет реализовать этот архитектурный шаблон. Я как то обходился все время без AKKA и продолжаю обходится средствами описанными выше.
Вопрос заключается в следующем: актуальна ли еще AKKA / Vert.X ( я так понимаю что это конкурент AKKA который вдобавок хорошо интегрирован с Hazelcast) ?
То есть когда мне вот прямо необходимо ее использовать и скажем реактивные средства Spring 5/Spring Boot 2, Kafka или RabbitMQ вообще не вариант?
  • Вопрос задан
  • 1543 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Spring
Седой и строгий
Spring и Akka решают разные проблемы. Нет никаких препятствий к тому, чтобы использовать их вместе в одном приложении.

Что касается примера, когда стоит рассмотреть использование Akka: Представьте, что у вас есть международный банк. А у банка есть сложная скоринговая система, состоящая из множества подсистем. Одни подсистемы оценивают что, как часто и на какие суммы покупал клиент в прошлом. Другие оценивают источники, суммы и частоту пополнений карты. Третьи оценивают наличие имущества, суммы налогов и своевременность их уплаты. Четвёртые наличие страховок и возникновение страховых случаев. Пятые наличие кредитов в других банках. И т.д. и т.п. Каждая подсистема жрёт кучу ресурсов в процессе обработки одного клиента. Некоторые из них делают запросы к внешним сервисам, которые могут отвечать медленно или вообще не ответить. А обрабатывать надо десятки миллионов запросов в секунду. Желательно в реалтайме. И ни в коем случае не допускать сбоев. Да ещё и структура нагрузки постоянно меняется. Такое чудовище можно написать используя только spring-проекты, но притомишься обеспечивать производительность, масштабирование и устойчивость к сбоям. А вот Akka позволит сравнительно легко размазать систему по сотням серверов в нескольких ДЦ по всему миру.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sputterspark
@Sputterspark
Каждый раз, когда читаю твои вопросы, сразу вспоминается поговорка "Слышал звон, да не знает, где он." Каждый раз в кучу оказываются смешаны несвязанные или слабосвязанные понятия и всё это обильно приправлено огульными сравнениями мягкого с тёплым.

Конечно читал про реактивное программирование, как я понимаю, это когда клиент посылает request, его принимают, клиент продолжает заниматься другими своими делами, через некоторое время клиенту приходит response.

Ты даже близко не понял сути.

Реактивное программирование - это парадигма программирования, ориентированная на потоки данных и распространение изменений.
Модель акторов - это парадигма программирования, хорошо подходящая для разработки конкурентных и распределённых систем.

Они между собой даже не связаны. Можно разработать реактивную программу не использующую акторы. Можно разработать не реактивную программу на акторах. И конечно же можно разработать реактивную программу на акторах.

актуальна ли еще AKKA

Да, актуальна.

Vert.X ( я так понимаю что это конкурент AKKA который вдобавок хорошо интегрирован с Hazelcast) ?

Vert.X - не конкурент Akka. Они вообще разного поля ягоды. Vert.X - это очередной асинхронный фреймворк. Если сравнивать, то самый близкий аналог - Spring WebFlux.

То есть когда мне вот прямо необходимо ее использовать и скажем реактивные средства Spring 5/Spring Boot 2, Kafka или RabbitMQ вообще не вариант?

Вот как начнёшь различать разработку web-приложений и распределённых систем, так можно будет и подумать об Akka.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы