2017-01-28 25 views
2

Не знаком со всеми деталями архитектуры, основанной на домене, имеет ли смысл в архитектуре микросервиса думать о каждой услуге как о собственном домене и, в свою очередь, создавать хранилище событий за услугу?магазин событий на основе микросервиса

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

ответ

5

Главное, чтобы иметь однозначного владельца - т. Е. Если вы делитесь магазином, это нормально, если только один сервис когда-либо использует данный набор потоков.

В NEventStore v5 +, например, это кодифицировано в том, что «ведро» является подразделением внутри хранилища - каждая служба получает изолированный набор состояний таким образом. Или можно сделать то же самое через несколько SCHEMA в SQL SB.

Есть, конечно, много хороших причины, чтобы отделить по максимуму слишком

  • вы не хотите, чтобы оставить человек открытых искушения читать различные услуги
  • вы хотите, чтобы включить службы идти отдельные пути - вы не хотите иметь каких-либо изменений инфраструктуры для Service B требовать развернуть услуги А
  • , имеющий общую LIB, который может идти рука об руку с этой точки зрения, также slipperly склон

Следует отметить, что эта проблема является общим ограничением в соответствии с принципом автономии микросервисов (и SOA до него)

+0

Разрешено ли потребителю (читаемая модель) прослушивать несколько хранилищ событий для создания сложная проекция? –

+2

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

+0

@ConstantinGALBENU Извините, забыл @ вас в –