В Kafka, как производители получают ответ от потребителей?

#apache-kafka

#apache-kafka

Вопрос:

В очень простом случае использования в старой модели клиент / сервер для запроса некоторой информации с сервера базы данных я бы создал соединение, отправил запрос (запрос) и получил ответ.

Каким образом Kafka выполняет такой запрос?

Например, давайте предположим, что у меня есть идентификатор клиента и я хочу получить информацию о пользователе, которая хранится где-то в инфраструктуре Kafka, должен ли я публиковать в одной теме и использовать информацию из другой темы (действовать как производитель / потребитель)?

Это предполагаемый способ использования Kafka?

РЕДАКТИРОВАТЬ 1:

Чтобы уточнить, чего я пытаюсь достичь, я попытаюсь прояснить операцию:

1 — Какой-то производитель вставляет клиента в тему «клиенты» Kafka. 2 — Какой-то потребитель читает эту тему, подключается к базе данных и вставляет ее в базу данных. 3 — Из-за бизнес-ограничений журналы Kafka хранятся только в течение месяца. 4 — Через месяц какой-то клиент, подключенный к инфраструктуре Kafka, хочет получить информацию о конкретном клиенте, которая находится в базе данных (он даже не знает о базе данных).

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

Комментарии:

1. Нет ничего плохого в том, что приложения поддерживают логику как производителя, так и потребителя. Это именно то, что представляют собой приложения Kafka Stearns, но, похоже, вы, возможно, захотите взглянуть на темы в CQRS вокруг kafka

2. Спасибо, я посмотрю!

3. Опечатка выше: потоки Kafka

Ответ №1:

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

В принципе, мы должны выполнить следующие шаги:

Чтобы запросить полное состояние вашего приложения, вы должны соединить различные фрагменты состояния, в том числе:

  • запрашивать локальные хранилища состояний
  • найдите все запущенные экземпляры вашего приложения в сети и их хранилища состояний
  • связь с этими экземплярами по сети (например, уровень RPC)

Соединение этих фрагментов обеспечивает связь между экземплярами одного и того же приложения и связь из других приложений для интерактивных запросов