dabrahabra
@dabrahabra
.NET Developer

Как обеспечить отказоустойчивость и балансировку нагрузки в сервисах + JMS (messaging bus)?

В классической реализации микросервисной архитектуры сервисы получают сообщение ибрабатывают его и выплючывают дальше (stateless). Вопросы разделения нагрузки и обеспечения отказоустройчивости решаются путем использования очередей и запуском нескольких экземпляров сервиса. Но на практике мы столкнулись с проблемой синхронизации.

Допустим мы имеем набор объектов которые описывают конечный автомат, состояния и переходы между состояниями. В настоящий момент мы имеем один сервис который отвечает за обработку переходов между состояниями для всех объектов. При переходе в новое состояние сервис отправляет сообщение другим микросервисам. При старте мы выгружаем все объекты из базы и запускаем конечный автомат.

Соответственно мы не может просто запустить 3 экземпляра сервиса - все три вычитают один и тот же набор объектов и будут выполнять одни и теже переходы - на выходе все три будут отправлять 3 одинаковых сообщения.

Отсюда ряд вопросов:
  1. Есть ли классические решения для данной проблемы?
  2. Если ли надежные механизмы синхронизации c использованием message bus (JMS подобной)?
  3. Есть ли класическик решения для балансировки и обеспечения отказоустойчивости statefull сервисов?
  • Вопрос задан
  • 226 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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