Каковы правильные конструкции системы, чтобы несколько контейнеров не обрабатывали одно и то же событие домена? Если у меня есть сервис, который порождает несколько экземпляров на Kubernetes k8s. И все они подписываются на одно доменное событие. Каковы стратегии, предотвращающие многократное выполнение одного и того же обработчика событий? На каждом модуле?
Давайте рассмотрим этот пример:
- у нас есть две службы A и B
- один экземпляр A работает и два из B
- A отправляет событие, которое B подписывается на
- оба экземпляра B запускают для него обработчик событий
Теперь мы не хотим запускать один и тот же обработчик для каждого экземпляра. Но так как это паб / суб все подписчики получают уведомление о событии.
Также в случае, если будет третий сервис C, который подписывается на тот же даже, мы хотим, чтобы он обрабатывал это также.
Так что проблема в том, что мы запускаем несколько экземпляров одного и того же обработчика. Только первый должен справиться с этим. Какая будет правильная системная архитектура для борьбы с ней?