RoP可插拔的协议处理插件

联合创作 · 2023-10-01 04:01

与 KoP、MoP 和 AoP 相似,RoP 是一种可插拔的协议处理插件,RoP 将 RocketMQ 协议处理插件引入 Pulsar broker,这样 Pulsar 能支持原生 RocketMQ 协议。

将 RoP 协议处理插件添加到现有 Pulsar 集群后,用户无需修改代码,便能将现有的 RocketMQ 应用程序和服务迁移到 Pulsar,同时还能使用 Pulsar 的强大功能,例如:

  • 计算与存储分离
  • 多租户
  • 跨地域复制
  • 分层分片
  • 轻量化计算框架 -- Pulsar Functions
  • ...

RoP 架构

RoP 概念

Offset 和 MessageID

在 RocketMQ 中,使用 offset 来标识消息的位置,当消息被生产到指定的 Topic 之后,会为每一个消息分配一个唯一的 offset;在 Pulsar 中,使用 MessageID 来唯一标识每条消息,每一个 MessageID 由三部分组成,ledgerIDentryID 和 partitionID。我们通过合理的划分将 messageID 和 offset 进行映射,来唯一标识 Topic 中的每一条消息。

Message

对于一条消息,RocketMQ 和 Pulsar 都包含消息的 headers 和 payload 等字段,通过对消息协议的解析,我们可以轻松的将 RocketMQ message 转换为 Pulsar 的 message 格式。为了更好的兼容 Tag 消息的功能,在消息协议的处理方面增加了 8 字节的特殊字段,用来区分该消息是否属于 tag 消息。

Topic Lookup

在 Pulsar 中,client 与 broker 建立连接之前,会根据当前传入的 Topic 执行 Lookup 操作,在 Broker 集群中寻找当前 Topic 所在的 Owner Broker,然后将该 Owner Broker 的地址返回并与 client 建立 TCP 连接,再进行数据交互。在 RocketMQ 中,client 与 broker 建立连接之前,会先处理 GET_ROUTEINTO_BY_TOPIC 命令,获取 topic 所在的路由信息后,建立对应的 TCP 连接,再进行数据交互。

浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报