У меня есть 2 кластера сервисов с отслеживанием состояния: монго и кластеры эластичного поиска. Я хочу синхронизировать документы для обоих кластеров.
Для меня это выглядит как проблема распределенной транзакции, и я решил попробовать источник событий , поскольку это не только решает эту проблему, но и естественно подходит для моего приложения.
Я решил использовать https://eventstore.org для хранения событий и подписаться на мой бэкэнд для внесения изменений, а затем обновить свои кластеры с состоянием.
Мой бэкэнд не имеет состояния, и в конечном итоге он будет масштабирован до нескольких экземпляров, , и я боюсь, что каждый бэкэнд будет получать обновления из хранилища событий и обновлять кластеры с состоянием, поскольку обновления могут быть идемпотентными , поэтому я закончу с N одинаковых документов на каждую запись. Как обычно решается эта проблема?
Я действительно не хочу создавать синглтон-подписчика для каждого кластера, который прослушивает обновления, он делает этот синглтон единственной точкой отказа ...