Возьмем практический случай:
У нас есть служба поддержки клиентов, которая публикует
CustomerCreated/CustomerUpdated
события по теме Kafka для клиентов.Служба доставки прислушивается к теме заказа
Когда
OrderCreated
событие считывается службой доставки, ей потребуется доступ к адресу покупателя. Вместо того, чтобы делать REST-вызов в службу поддержки клиентов, служба доставки уже будет располагать информацией о пользователе локально. Он хранится в _3 _ / _ 4_ с постоянным хранилищем.
Мои вопросы касаются того, как мы должны это реализовать: мы хотим, чтобы эта система была гибкой и масштабируемой, чтобы было более одного экземпляра служб клиента и доставки, а это означает, что также будет несколько разделов для тем клиентов и заказов.
Мы могли бы найти такие сценарии: событие OrderCreated(orderId=1, userId=7, ...)
считывается службой доставки, но если она использует KTable
для хранения и доступа к информации локального пользователя, userId=7
может не присутствовать, потому что раздел, который обрабатывает этот идентификатор пользователя, мог быть назначен другому экземпляр службы доставки.
Вскоре эту проблему можно решить с помощью GlobalKTable
, чтобы все экземпляры службы доставки имели доступ ко всему диапазону клиентов.
Это (
GlobalKTable
) рекомендуемый подход для реализации этого шаблона?Является ли проблема реплицировать весь набор данных о клиентах в каждом экземпляре службы доставки, когда количество клиентов очень велико?
Можно ли каким-то образом реализовать этот / этот случай с использованием
KTable
?