更好的以事件为中心的方式来解决 Kafka 或任何流媒体服务中的请求-回复问题

Better Event centric way to solve request-reply problem in Kafka or any streaming service

我在微服务架构中使用 Kafka 时遇到问题。我无法理解处理 HTTP 请求的微服务如何能够向用户发送响应。我想从 HTTP 获取数据,然后将其发布到名为 A 的主题,然后另一个验证器服务将验证它并将其发布到另一个名为 B 的主题。我想将处理后的数据发送到来自主题 B 的订阅数据的 HTTP 响应。

根据我的经验,一种选择是立即响应并接受 201,或者在您的 API 中嵌入一个阻塞验证器库,并适当地 return 一个 400 错误请求。

然后需要将来的 GET 调用来读取可能从任何消费者返回的最终一致的数据。例如。消费者进程是写入某个数据库的 Kafka 连接器,或者是 Kafka Streams/KSQL table,未来 API 查询将从中获取 return 数据。您的原始客户端可能需要定期进行 HTTP 调用,直到该数据可用。