#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)
Соединение этих фрагментов обеспечивает связь между экземплярами одного и того же приложения и связь из других приложений для интерактивных запросов