Источник событий всей системы плохо - PullRequest
0 голосов
/ 05 июля 2019

Я изучаю правильную микросервисную архитектуру, используя CQRS, MassTransit и другой тип хранилища для чтения. Одна вещь, которая часто приходит вместе с CQRS - это источник событий. Я понимаю, что это совсем не обязательно. Тем не менее, я не могу понять, почему его использование во всей системе - это действительно анти-паттерн.

  1. Наличие хранилища для всех событий в качестве единственного источника правды может помочь вам построить / восстановить хранилище для чтения на лету, когда вы захотите.
  2. Вы не привязаны ни к какому поставщику (кроме хранилища событий)

Для меня вопрос больше похож на то, проще ли не начинать с поиска событий (и при этом иметь отдельное хранилище данных в зависимости от того, какие микросервисы, например :asticsearch, mongodb и т. Д. И т. Д.) И переносить / предоставлять, когда это необходимо или с другой стороны, начните с событийного источника, чтобы потом вам не приходилось иметь дело с миграцией.

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Я не могу понять, почему его использование во всей системе - это действительно анти-паттерн.

Я согласен - называть это "анти-паттерном" - это преувеличение.

Правописание, которому я верю? Использование источников событий во всей системе сегодня неэффективно .

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

В то же время - насколько ценны временные запросы, которые вы получаете из источников событий? В вашей основной области, где вы получаете конкурентные преимущества, они могут быть весьма ценными. В тех местах, где вы просто ведете учет информации, предоставленной вам внешним миром? Не так много - вы можете получить все, что вам нужно, из более простых решений, которые отслеживают только «сейчас».

0 голосов
/ 20 июля 2019

Я недавно опубликовал сообщение в блоге об этой проблеме.Это объясняет, почему источник событий - это постоянная стратегия, и ее не следует использовать в глобальном масштабе.

Подводя итог, можно сказать: источник событий заставляет вас генерировать событие для всех измененных данных.Это может привести к очень мелкозернистым событиям.Если вы используете Event Sourcing для взаимодействия между микросервисами, вы открываете эти события для внешнего мира.

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

...