【问题标题】:In Kafka, how producers receive response from consumers?在 Kafka 中,生产者如何接收消费者的响应?
【发布时间】:2020-10-22 00:58:29
【问题描述】:

在旧客户端/服务器模型中的一个非常简单的用例中,为了从数据库服务器请求一些信息,我将创建一个连接,发送请求(查询)并接收响应。

Kafka 是如何处理这样一个请求的?

例如,假设我有一个客户 ID,并且想要检索存储在 Kafka 基础架构中某处的用户信息,我是否必须在一个主题中发布并使用来自另一个主题的信息(充当生产者/消费者) ?

这是使用Kafka的假定方式吗?

编辑 1:

为了详细说明我想要实现的目标,我将尝试澄清操作:

1 - 一些制作人在 Kafka“客户”主题中插入了一个客户。 2 - 一些消费者阅读此主题,连接到数据库并将其插入数据库。 3 - 由于业务限制,Kafka 日志仅保留一个月。 4 - 一个月后,一些连接到 Kafka 基础设施的客户端想要检索位于数据库中的特定客户的信息(它甚至不知道数据库)。

这个客户在特定主题中发布消息是否有意义,比如“i-want-a-costumer-info”,然后等待客户过滤的主题“customers-info”中的响应ID?这样,我在 (4) 中提到的客户端将同时充当生产者和消费者。

【问题讨论】:

  • 应用程序同时维护生产者和消费者逻辑并没有什么固有的错误。这正是 Kafka Stearns 应用程序的用途,但听起来您可能想查看有关 kafka 的 CQRS 主题
  • 谢谢,我去看看!
  • 上面的错字:Kafka Streams

标签: apache-kafka


【解决方案1】:

Kafka 实现这种成就的方式是使用 Kafka Streams 交互式查询中非常详细记录的内容,请参阅 Kafka Streams Interactive Queries

基本上,我们必须遵循以下步骤:

要查询应用程序的完整状态,必须连接状态的各个片段,包括:

  • 查询本地状态存储
  • 发现网络中所有正在运行的应用程序实例及其状态存储
  • 通过网络(例如,RPC 层)与这些实例通信

连接这些片段可以实现同一应用程序实例之间的通信以及来自其他应用程序的交互式查询通信

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2017-09-07
    • 2015-03-25
    • 2019-05-09
    • 1970-01-01
    • 2023-01-21
    相关资源
    最近更新 更多