cqrs: обмен семантикой команд и событий между сервисами - PullRequest
0 голосов
/ 08 мая 2018

Я не совсем понимаю, как разделить классы команд и событий между службами.

  1. Обмен банками? Здесь есть большая проблема, потому что создайте зависимости между сервисами!
  2. Я читал об Avro и schema.org, но я не совсем понял, как их использовать.

Есть идеи?

1 Ответ

0 голосов
/ 09 мая 2018

Я не совсем понимаю, как разделить классы команд и событий между службами.

Вы не делите классы команд и событий между службами. Вы разделяете команду и событие схема между службами.

Udi Dahan, 2014

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

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

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

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

Avro, Thrift, Protocol Buffers - все системы для описания информации в байтах.

Schema.org - это схема; это отображение идентификаторов, например http://schema.org/telephone,, и семантики, например номер телефона . Это общий словарь, который позволяет независимым от домена компонентам делать полезные вещи.

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

...