Я уже некоторое время читаю блоги, слушаю подкасты и читаю документацию Akka, но я все еще не могу сказать, что действительно понимаю, подходит ли модель акторов для того, что я пытаюсь решить.
Давайте возьмем пример создания приложения, которое сообщает вам, какая собака лучше всего подойдет человеку (не совсем то, что я делаю, но хорошо описывает то, что я хочу сделать). Каждую секунду я получаю МНОГО сообщений от людей, которые хотят знать, какую собаку купить, и система должна решать, какую собаку им следует завести, на основе имеющейся у меня информации об этом человеке.
Событие: человек А хочет собаку
Мой подписчик: Хорошо, человек А хочет собаку, давай проверим, какую собаку ему подарить - ›просит мое приложение выяснить это
Приложение:
- Получает запрос
- Собирает больше данных об этом человеке из других систем (где он живет, какое пространство у него есть, время, насколько он спортивный и т. Д.)
- Просит темы / актеров / еще что-нибудь использовать набор правил, чтобы проверить, какую собаку им следует завести.
Примеры:
- Живет ли человек в какой-либо из этих областей (проверяет тайник с участками, подходящими для больших собак) (большинство проверок будет искать вещи в списках)
- Есть ли у человека дом больше или меньше x
- Человек работает много часов
- и т.д
Все эти проверки возвращают результат в приложение, и приложение собирает все ответы, пока все не будет сделано, и затем на основе этого принимает решение о результате.
Теперь имейте в виду, что сообщений будет постоянно много, и я хочу запускать эти проверки одновременно, чтобы иметь возможность отвечать как можно быстрее. Приложение будет работать в контейнере в кластере Kubernetes, и я хочу иметь возможность масштабировать приложение при пиковой нагрузке или при увеличении объема сообщений в будущем.
Мое мнение до сих пор
Модель актора кажется подходящей для первой части моего приложения (получение запроса на поиск подходящей собаки для человека), поскольку у нее есть собственное состояние, которым она управляет на основе ответов, которые она получает от своих дочерних акторов / потоков / чего угодно.
Однако работникам, которые на самом деле проводят проверки, не требуется внутреннее состояние, поскольку они просто проверяют, есть ли некоторая информация о человеке в списке XYZ или дом этого человека больше, чем X. (Так не очень хорошее использование актеров)
Следовательно: является ли модель акторов излишней для моего приложения? Что я должен использовать вместо? Просто фьючерсы? Если я использую модель акторов, следует ли мне использовать кластеризацию Akka? Являются ли потоки Akka альтернативой?
Я весьма озадачен!