了解 Kafka-on-Pulsar (KoP):昨天、今天和明天

Apache Pulsar 和Apache Kafka围绕日志共享相似的数据模型。这使得实现与 Kafka 兼容的协议处理程序成为可能,以便 Kafka 用户可以将现有的 Kafka 应用程序和服务迁移到 Pulsar,而无需修改代码。它还允许这些应用程序利用各种 Pulsar 功能,例如多租户、无限事件流保留和无服务器事件处理。这就是开源项目 Kafka-on-Pulsar (KoP) 的用武之地。

为什么要开发 KoP?

Pulsar 和 Kafka 有一些共同的概念。例如,他们都有生产者和消费者,经纪人托管不同的主题来为他们服务。此外,它们都支持主题分区以实现更好的并行性。

在 Kafka 中,客户端通过请求向领导者代理发送消息PRODUCE。这些消息在本地持久化到节点。每个追随者通过请求从领导者那里读取数据FETCH以存储消息的副本。在这种领导者-从者架构中,每个代理都需要处理数据处理和存储。

该设计的一个缺点是它保证最新和相关的数据副本仅存储在领导代理上,该代理为生产者和消费者提供服务。这意味着 Kafka 集群在流量爆发期间可能会不堪重负,因为负载可能不会分布在追随者之间。

相比之下,Pulsar 将服务(brokers)和存储(bookies)分成不同的层。在计算层,所有的 Pulsar broker 都是无状态的,并且彼此等价。如下图所示,客户端通过SEND请求向代理发送消息。在处理完消息后,broker 通过ADD_ENTRY请求将它们传递给不同的 bookie。具体来说,根据配置的写入策略(即 ensemble size、write quorum 和 ack quorum 的值)将数据写入 bookie。这有助于实现跨存储节点的数据高可用性。最重要的是,经纪人和博彩公司都可以在自己的层轻松扩展,而不会影响另一层。

迁移计划

在使用 KoP 之前,从 Kafka 迁移到 Pulsar 并非易事。一般的方式如下:

更新客户端

用户需要重写他们的代码并优化一些客户端配置。诚然,这不是一个理想的解决方案,因为它可能会产生额外的费用。除此之外,与 Kafka 相比,Pulsar 的生态系统还有很长的路要走。后者在许多方面享有更成熟的生态系统,例如多语言客户端支持和第三方集成。这意味着当您尝试使用 Kafka 生态系统中的工具时,重写代码可能会导致许多问题。

Apache Kafka 的 Pulsar 适配器

最初,Pulsar 社区试图通过为 Apache Kafka 开发一个名为 Pulsar Adapter 的工具来解决迁移问题。它允许用户用 Pulsar Kafka 包装器替换 Kafka 客户端依赖项。它不需要对现有代码进行任何更改。然而,它的缺点是显而易见的:

  • 仅适用于基于 Java 的客户端
  • 处理 Kafka 偏移量的问题
  • 用户仍然需要学习一些 Pulsar 客户端配置

脉冲星上的卡夫卡 (KoP)

为了给用户提供更流畅的迁移体验,KoP 社区提出了一个新的解决方案。他们决定通过在 Pulsar 代理上引入 Kafka 协议处理程序来为 Pulsar 带来原生 Kafka 协议支持。协议处理程序是 Pulsar 2.5.0 中引入的一项新功能。它们允许 Pulsar 代理支持其他消息传递协议,包括 Kafka、AMQP 和MQTT。

与上述迁移计划相比,KoP 具有以下主要优势:

  • 无需更改代码:用户无需修改 Kafka 应用程序中的任何代码,包括不同语言编写的客户端、应用程序本身和第三方组件
  • 兼容性强: KoP 与 Kafka 生态系统中的大多数工具兼容。目前支持Kafka 0.9+
  • 与 Pulsar Brokers 的直接交互:在设计 KoP 之前,一些用户试图通过在中间创建代理层来让 Pulsar 客户端服务于 Kafka 客户端发送的请求。这可能会影响性能,因为它需要额外的路由请求。相比之下,KoP 允许客户直接与 Pulsar 代理进行通信,而不会影响性能

要详细了解开发 KoP 的原因,请参阅 KoP 白皮书。

KoP 的工作原理

KoP 被实现为协议名称为“Kafka”的协议处理程序插件它在 Pulsar 代理重新启动时加载。默认情况下,Kafka 和 Pulsar 客户端可以同时工作。

如果你查看 Pulsar 的源代码,你会发现一个名为 ServerCnx 的类,它暴露了 6650 端口。Pulsar 客户端向该端口发送请求后,ServerCnx 会解析这些请求,以便代理可以采取相应的操作,例如读写来自和来自 BookKeeper 的数据。

为集群启用 KoP 后,它会公开端口 9092,以便 Kafka 客户端可以向其发送请求。与 ServerCnx 类似,KoP 处理这些请求,然后要求代理做出响应。ServerCnx 和 KoP 都可以访问所有代理资源,例如主题和订阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值