Как использовать шаблон pub/sub в Event Sourcing & CQRS

Я занимаюсь разработкой микро-сервисов, я использую Event Sourcing с шаблоном CQRS, в моем случае, если пользователь удален / обновлен из одного сервиса, я хочу, чтобы он опубликовал событие, а другой сервис подписал его и удалил записи, касающиеся этого пользователя. от его дБ, а также.

Я хотел спросить, как я могу использовать шаблон pub / sub в Event Sourcing, какое хранилище событий можно использовать для него, поскольку в настоящее время я видел некоторых людей, использующих таблицы Azure, но как его можно использовать в качестве pub/sub?

2 ответа

Какой магазин событий можно использовать для этого...?

Если у вас есть роскошь выбора технологии для использования, то я бы посоветовал вам начать с изучения магазина событий Грега Янга.

Да, это тот самый парень, который представил CQRS миру.

(Вы также можете просмотреть его доклад о данных полиглота, который включает в себя обсуждение моделей "пуш против пуш").

как я могу использовать шаблон pub/sub в Event Sourcing

Этот сценарий использования естественным образом ложится на аутсорсинг, и если его правильно реализовать, то вопрос об уведомлениях исчезнет сам собой. Реализовать взаимодействие лучше всего с помощью общего автобуса. Каждый микросервис, реализующий ваши агрегаты или проекции, подключен в единую логическую шину, подписан на все события, а также может отправлять туда любые события.

Конечно, когда система находится под большой нагрузкой, необходимо провести некоторую оптимизацию, например, ввести пространства имен для событий и указать брокеру шины, какие события и какому микросервису необходимо доставить. Также, если некоторая информация является частной для микросервиса, то имеет смысл создать частный канал в шине, однако это не предусмотрено теорией событийного поиска, точно такой же, как проверка между агрегатами.

Также благодаря концепции общей шины, вы также получаете "в подарок" реактивность для клиентов системы, например, браузеров. Однако вы не будете подписываться на прогнозы или статусы агрегатов, только на события. Если серверные события не равны клиенту, вы можете ввести промежуточную сущность по их трансляции, однако это больше не является обязанностью хранения событий.

Другие вопросы по тегам