Комментарии 5
"Консьюмеры обрабатывают данные в своем темпе (пакетами или в реальном времени)."
Это как ? в кафке появилась пакетная обработка? или имелось ввиду что написать свой коллектор бэтчей ? тогда этот пукнт применим к любому софту...
Предполагаю, что здесь имелось в виду то, что консюмеры не должны в каждый момент времени считывать из брокера данные с той же скоростью, с которой эти данные поступают от продюсеров. Таким образом, брокер сглаживает мгновенный негативный эффект от пиковой нагрузки. А противопоставляется этому, видимо, вариант взаимодействия сервисов вообще без промежуточного софта.
Не понятно что хотели сказать, рассказать в этой статье. Да существует доменоореинтированный подход, да кафку можно использовать для обмена сообщениями между сервисами. Материал не несет никакой конкретики. Можно было сделать статью болле всеобъемлющей, написав можно сделать что угодно и чем угодно, разделяя контекст и используя доменоорентированное проектирование. Лучше поделитесь что интерсного жизнеспособного вы почерпнули из ссылок на которые отправляете.
Как раз у меня есть проект в такой конфигурации и с дроблением на множество доменов, с разделением на слои и как результат каскадным прохождением цепочки событий (запросов) через сервисы.
Точно скажу - для обработки сообщений по некоторой цепочке в одну сторону это хорошо, для общения доменных сервисов 'запрос-ответ' то еще...
А трассировка настроена? У нас прикручен Jaeger, и можно отследить пути выполнения каждого запроса. В kafka событии есть спан предка, так что отложенные события тоже цепляются к источнику - и это действительно удобно.
Запрос от фронта до конечных сервисов можно прошить corelation_id, operation_id, для анализа этого выше крыши. Проблема не в том. При использовании асинхронной в своей природе среды, как синхронной, рождает ворох проблем - отсутствие понимания готовности получателя принять запрос, реакция на таймаут запроса в целом, при таймауте в сервисе внутри цепочки. Перевод асинхрона в синхрон очень неоднозначная штука.
Микросервисы, Apache Kafka и Domain-Driven Design