问题描述
在旧客户端/服务器模型的一个非常简单的用例中,为了从数据库服务器请求一些信息,我将创建一个连接,发送请求(查询)并接收响应。
Kafka如何进行这样的请求?
例如,假设我有一个客户ID,并且想要检索存储在Kafka基础结构中某处的用户信息,我是否必须在一个主题中发布并使用另一个主题中的信息(充当生产者/消费者) ?
这是使用Kafka的假定方式吗?
编辑1:
为了详细说明我要实现的目标,我将尝试阐明操作:
1-一些生产者在Kafka的“客户”主题中插入了一个客户。 2-一些使用者阅读了本主题,连接到数据库并将其插入数据库。 3-由于业务限制,Kafka日志仅保留一个月。 4-一个月后,一些连接到Kafka基础结构的客户端希望检索位于数据库中的特定客户的信息(甚至不知道数据库)。
此客户在特定主题中发布消息是否有意义,例如说“ i-want-a-costumer-info”,然后在客户过滤的主题“ customers-info”中等待响应ID?这样,我在(4)中提到的客户将同时充当生产者和消费者。
解决方法
Kafka实现此目标的方法是使用Kafka Streams交互式查询中有据可查的内容,请参阅Kafka Streams Interactive Queries。
基本上,我们必须执行以下步骤:
要查询应用程序的完整状态,必须连接状态的各个片段,包括:
- 查询本地状态存储
- 发现网络中所有正在运行的应用程序实例及其状态存储
- 通过网络(例如RPC层)与这些实例通信
连接这些片段可实现同一应用程序实例之间的通信以及来自其他应用程序的交互式查询的通信