2016-02-12 3 views
1

Я работаю над созданием набора схем для новой системы обработки событий и потоков, которую мы строим в моей компании, чтобы связать несколько несвязанных в настоящее время систем. Мы четко определили 12 моделей доменов и теперь пытаемся собрать набор схем событий, которые все приложения будут выходить на платформу с конфлюентным (kafka). Затем они будут собраны и обработаны samza для выполнения различных заданий, которые затем будут заполнять базы данных для наших услуг, относящихся к конкретным доменам.Модели данных потока событий

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

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

Stack детали некоторой релевантности:

Сливной REST Proxy -> Avro -> kafka -> samza -> различные dbs.

ответ

2

Вопрос довольно старый, но, поскольку он еще не получил ответа, я попробую. Дело в том, что ваши события должны отражать изменение состояния в вашей бизнес-модели, это, как правило, отражает деятельность, которая произошла. Глядя на вашем примере вы можете иметь такие события, как:

  • NEWUSER, адрес может быть или не быть в вашей системе, но вы все равно должны иметь естественный ключ для принятия решения, является ли это дело или нет.
  • UserRelocating, так же, как и выше
  • UserLeaving, так же
  • AddressCorrection, может быть сценарий, в котором только часть полей может потребоваться при условии

Они, очевидно, только примеры, события, которые вы решили on зависят от вашей бизнес-модели.

Смежные вопросы