Я оцениваю, следует ли использовать Akka и akka Permanent в качестве ключевого инструментария определенного проекта, в котором есть сложный фоновый процесс (может запускаться Quartz в фиксированное время в день).
Фоновый процесс будет связываться со многими различными внешними службами через HTTP-связь, будет генерировать множество зашифрованных файлов локально и передавать их через SFTP.
С точки зрения бизнеса:
- Сервис имеет решающее значение для миссии, примерно он автоматически спишет деньги N миллионов пользователей с их банковских карт и поможет им приобрести какой-либо продукт фонда.
С технической точки зрения:
- Каждая внешняя служба может быть недоступна по какой-либо причине, например, из-за проблем с сетью, внешняя служба может исчерпать свои ресурсы (например, соединения jdbc).
- Наш сервис может быть остановлен, перезапущен, повторно развернут из-за неотложной причины или аварийно завершен с некоторыми неожиданными ошибками.
- После того как процесс был перезапущен с незавершенным заданием, его необходимо корректно завершить с помощью различных стратегий, таких как повтор, подтверждение бизнес-состояния внешней системы и возобновление с определенной контрольной точки.
Я читал официальный AkkaScala.PDF и некоторые видеоролики с конференций на YouTube, во всех из них упоминалось, что состояние актера можно восстановить, воспроизведя события из журнала после сбоя JVM.
Но это должен быть глупый вопрос, так как я не нашел, что он обсуждался:
Представьте, что в службе живет 1000 постоянных субъектов, а JVM службы аварийно завершает работу и перезапускается. Кто должен запускать повторное создание этих 1000 постоянных субъектов во вновь созданной системе субъектов как в режиме одиночного процесса, так и в кластерном режиме. ? И как? Или какие статьи следует прочитать в первую очередь?