让我们来讨论一种情况。
消费者收到一个Kafka流,流中的消息需要基于一些Validator Micro服务和Enricher API调用进行丰富和验证。它还将消息持久化到数据库中。
流程是这样的- Kafka Stream consumer ->每个消息->调用Rule Validator Rest API ->调用富API ->通过持久化REST API保存到数据库。
因为所有的REST调用都是同步的,并且在调用最终的Persistence Micro服务API之前,rest调用是顺序的。
显然,Kafka Stream消费者获得了高吞吐量的消息。
如何通过编码实现这一点?
发布于 2020-03-22 23:10:45
不要使用REST。
如果您完全控制了管道的每一部分,请使用Kafka Streams处理器API获取3个中间主题之间的预库输出,然后使用Kafka Connect汇入数据库。
这将扩展到远高于REST API所能处理的负载
如果您无法控制,则必须创建一个任务/请求队列主题,下一个API调用将从该主题获取来自另一个使用者的请求,并且必须等待,直到第一个API响应来自之前的用户
https://stackoverflow.com/questions/60790949
复制相似问题