本文详细介绍了 kop (Kafka on Pulsar) 的设计及其最新进展,重点阐述了为什么需要 kop 进行 Kafka 到 Pulsar 的迁移及其三种实现方法。文档还讨论了 kop 的基本设计,包括协议处理、认证、消息存储方式以及如何处理 Kafka Offset 与 Pulsar Message ID 的差异。此外,kop 2.9 的新特性包括对多种 Kafka 客户端版本的支持、基于租户的组协调器以及改进的鉴权功能。
22. 基于租户的 Group Coordinator
KoP 2.9 新特性
KoP 基于 Pulsar 的租户管理实现了 topic 之间的资源隔离,但是所有的 Kafka topics 都写往同⼀个 offset topic。
Consumer B
Tenant-B/NS-B/topic
Consumer A
Tenant-A/NS-A/topic
public/__kafka/consumer_offsets
OFFSET_COMMIT
OFFSET_COMMIT
KoP 禁⽌来客户端往 offset topic 进⾏写⼊,仅能通过 KoP ⾃身,因此跳过了权限控制。
23. 基于租户的 Group Coordinator:懒加载
KoP 2.9 新特性
Consumer B
Tenant-B/NS-B/topic
Consumer A
Tenant-A/NS-A/topic
Tenant-A/__kafka/consumer_offsets
Tenant-B/__kafka/consumer_offsets
OFFSET_COMMIT
OFFSET_COMMIT
理想实现:在调⽤ Group Coordinator 时根据 tenant 动态创建每个 tenant 对应的 Group Coordinator。