Apache Kafka 是一个开源流处理平台,是一种高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据,其所有功能都是以分布式、高度可扩展、弹性、容错和安全的方式提供的。
在 Apache APISIX 2.14 版本中发布了一个新功能,即提供 Kafka 类型的上游,用户可以通过在路由中配置 scheme 为 Kafka 的上游开启 Kafka 消费者功能,从而在各种环境中实现消息订阅。
本文将介绍 Kafka 发布订阅功能及 kafka-proxy 插件的使用细节,为大家呈现如何将 APISIX 与 Kafka 结合使用在浏览器等连接受限的场景,实现对 Kafka 中消息的消费。
原理
Kafka 使用自定义的 TCP 协议实现 Broker 与消费者之间的通信。在 Apache APISIX 中,你可以通过四层代理实现这部分的代理,但对于终端用户(如浏览器等)与 Broker 通信这种无法直接使用 TCP 连接的场景,则没有办法进行很好的支持。
而现在,客户端可通过 WebSocket 连接到 APISIX,在 APISIX 内部建立与 Kafka 的连接,进而处理客户端的命令(如获取偏移量、获取消息等)。通过 WebSocket 的连接,可以避免在浏览器这种无法直接使用 TCP 连接的场景中从 Kafka 中拉取消息。

通过上述流程图可以看到,这里内部使用自定义的 Protobuf 协议作为通信协议,通过便捷的编译过程,使其后续可在多种语言的程序中使用。在过程中,主要通过 ListOffsets 命令来获取偏移量,通过 Fetch 命令来获取消息。
除此之外,由于 Kafka 消费者的功能是基于 APISIX 的 PubSub 框架,所以你也可以基于该框架扩展其他消息系统,实现更丰富的发布订

Apache APISIX 2.14 版本引入 Kafka 代理功能,允许用户配置 Kafka 作为上游进行消息消费。此功能借助 WebSocket 实现浏览器等限制场景下的 Kafka 消息订阅。通过设置 Kafka 路由、TLS 握手和 SASL/PLAIN 认证,用户可以轻松集成并测试 Kafka 功能。Apache APISIX 的 PubSub 框架还可扩展支持其他消息系统。
最低0.47元/天 解锁文章
2824

被折叠的 条评论
为什么被折叠?



