网易首页 > 网易号 > 正文 申请入驻

腾讯宣布开源 RoP:Apache Pulsar 支持原生 RocketMQ 协议

0
分享至

  作者 | 冉小龙,刘昱

  RocketMQ 用户可以无缝迁移到 Apache Pulsar 了。自此,Apache Pulsar 补齐了兼容主流消息队列协议的能力。

  我们很高兴地宣布腾讯云中间件开源 RoP!RoP 将 RocketMQ 协议处理插件引入 Pulsar broker,这样 Pulsar 就能支持原生 RocketMQ 协议了。

  什么是 RoP?

  与 KoP、MoP 和 AoP 相似,RoP 是一种可插拔的协议处理插件。

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

  计算与存储分离

  多租户

  跨地域复制

  分层分片

  轻量化计算框架 -- Pulsar Functions

  为什么开发 RoP?

  Apache Pulsar 是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体。自 2016 年开源以来,Pulsar 已被广泛采用,并于 2018 年被指定为 Apache 顶级项目。

  RocketMQ 是一款强大的开源分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

  Pulsar 和 RocketMQ 拥有广泛的用户群体和强劲的开发支持,全球许多头部公司都在使用这两种消息服务。同时,我们也收到了用户的需求,希望能在 Pulsar 与 RocketMQ 之间传输数据,并充分利用这两种消息系统的优势。

  Apache Pulsar 通过对 Consumer 层的抽象,提供了队列和流两种消费模型的统一抽象。在 Client 与 Broker 的交互中,Pulsar 基于 Protobuf 的二进制协议,提供更高的性能和更低的延迟。除此之外,通过 Protobuf 协议,Pulsar 可以更容易地支持并实现多语言的客户端,比如:Java、CPP、Python 和 Go 语言等客户端。

  但是,对于使用其他消息传输协议编写的应用程序(例如,RocketMQ),由于使用的消息处理协议和 Pulsar 不同,如果 Pulsar 想要兼容 RocketMQ 协议,为了将 RocketMQ 的协议适配到 Pulsar 的消息协议层中,用户需要重写整个协议层,这给用户的迁移和切换带来了很大的成本。

  为了解决这个问题,最直观的处理方式是使用类似 Pulsar Connector 的形式,将用户在 RocketMQ 中的现存数据通过 RocketMQ Wrapper 的方式导入到 Pulsar 集群,但是这需要业务端更改自己的业务代码逻辑,同时需要确保两边的数据能够保证一致,这给使用 RocketMQ 的用户带来了很大的技术挑战。所以,能否给用户提供一个开箱即用的迁移策略和方案并且用户无需做任何代码修改呢?这便是 RoP 诞生的最初目的。

  怎样开发 RoP?

  Apache Pulsar 在 PIP-41(https://github.com/apache/pulsar/wiki/PIP-41%3A-Pluggable-Protocol-Handler) 中介绍了一种全新的接入方式。通过在 Broker 端暴露 Protocol Handler 插件,将 Netty 的 channel 和 Pulsar 的 Broker Service(https://github.com/apache/pulsar/blob/907fcb5ba8/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java) 对象暴露给用户。这允许用户直接操作和调用 Pulsar 中比较低阶的 API(例如:PersistentTopic 和 ManagerLedger)。基于这个协议,用户无需更改代码,只需将服务请求转发到 RoP 中,RoP 利用 Protocol Handler 的插件将用户的请求转发到 Pulsar 中即可。

  RoP 架构

  通过对比 Pulsar 和 RocketMQ 之间的协议可以发现,二者在消息处理的思路上有不少相似之处,比如这两种协议都包含如下操作:

  Topic Lookup: 所有 Clients 与任意 Broker 建立连接之前,会先去查找当前 Topic 的 Owner Broker。获取到对应的 metadata 之后,Clients 会与 Owner Broker 之间建立 TCP 连接进行数据的交互。

  Produce: Clients 与 Topic 所在的所有 Owner Broker 之间进行通信并将消息 append 到对应的分布式日志中。

  Consume: Clients 与 Topic 所在的所有 Owner Broker 之间进行通信并从分布式日志中读取指定的消息。

  Offset: Producer 生产到 topic 中的消息会分配一个唯一的 offset,Pulsar 中使用 MessageID 来标识 offset。消费者可以通过 offset 去日志中获取指定位置的消息。

  Apache Pulsar 的存储层使用了 Apache BookKeeper,Pulsar 相当于 BookKeeper 的 Client,通过调用 ManagerLedger 对象能够很容易的达到为分布式日志操作的目的。基于此,RoP 可以很好的将 RocketMQ 中对 commitLog 和 queueLog 的操作映射到 BookKeeper 中来。

  RoP 概念

  Offset 和 MessageID

  在 RocketMQ 中,使用 offset 来标识消息的位置,当消息被生产到指定的 Topic 之后,会为每一个消息分配一个唯一的 offset;在 Pulsar 中,使用 MessageID 来唯一标识每条消息,每一个 MessageID 由三部分组成,ledgerIDentryIDpartitionID。我们通过合理的划分将 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 连接,再进行数据交互。

  如何使用 RoP?

  目前,RoP 发布了 0.1.0 版本,你可以通过以下任一方式参与该项目:

  想上手试试?

  可在以下网址下载 RoP 和查阅用户指南:https://github.com/streamnative/rop/blob/master/README.md。无论是快速启动 standalone RoP 或在现有 Pulsar 集群中部署 RoP,都可轻松实现。

  另外,为了方便快速使用并验证 RoP,我们提供了 RocketMQ 的常见使用场景和用例,你可以直接使用这些代码示例验证服务:https://github.com/streamnative/rop/tree/master/examples/src/main/java/org/streamnative/rocketmq/example

  想解决问题?

  如有任何问题,可以在 RoP GitHub repo 中 创建 issue 或加入 RoP 微信群进行讨论。无论哪种方式,RoP 资深专家都随时在线:https://github.com/streamnative/rop/issues/new

  想参与贡献?

  RoP 源码开放并托管在 GitHub 上:https://github.com/streamnative/rop%EF%BC%89%E3%80%82。如需改进功能或修复 bug,欢迎提交 PR。

  活动推荐

  开源软件供应链点亮计划 - 暑期 2021 由中国科学院软件研究所和 openEuler 社区主办,是一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。主办方联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。中选学生将在社区导师指导下,按计划完成开发工作,并将成果贡献给社区。根据项目的难易程度和完成情况,参与者将获得 12000 元、9000 元、6000 元的不等奖金。

  500+ 项目任务已上线,扫描下方二维码进入活动社群,了解更多活动内容。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
曾一夜成名,"日入百万"的郭有才,如今现状给所有人都提个醒

曾一夜成名,"日入百万"的郭有才,如今现状给所有人都提个醒

超喜欢我
2026-07-18 01:58:19
单日市值蒸发超1000亿元!A股“光模块之王”,突发跳水!赴港IPO迎重大进展

单日市值蒸发超1000亿元!A股“光模块之王”,突发跳水!赴港IPO迎重大进展

上市之家
2026-07-18 02:50:38
2万亿损失打水漂?中国这招太狠,吃光全球存量,日本有钱没处买

2万亿损失打水漂?中国这招太狠,吃光全球存量,日本有钱没处买

坠入二次元的海洋
2026-07-15 12:11:17
“工作都没有,去毕业典礼有何意义?”大学生集体缺席,不演了!

“工作都没有,去毕业典礼有何意义?”大学生集体缺席,不演了!

熙熙说教
2026-07-16 19:18:59
铠侠被判赔2.29亿美元!闪存专利侵权成立

铠侠被判赔2.29亿美元!闪存专利侵权成立

快科技
2026-07-17 17:24:13
迪士尼鬼屋惊现真·尸体!游客:我还以为是特效……

迪士尼鬼屋惊现真·尸体!游客:我还以为是特效……

新欧洲
2026-07-15 22:39:12
台湾军情局六处副处长庞大为,潜入广州秘密策反解放军少将,亲手搅乱96年台海军演,这位两岸谍战第一人,晚年迎来了什么结局?

台湾军情局六处副处长庞大为,潜入广州秘密策反解放军少将,亲手搅乱96年台海军演,这位两岸谍战第一人,晚年迎来了什么结局?

磊子讲史
2026-07-15 15:39:34
A股:紧急提醒2.5亿股民!从后天7月20日起,A股会不会继续大幅回落?

A股:紧急提醒2.5亿股民!从后天7月20日起,A股会不会继续大幅回落?

趋势清风侠
2026-07-18 20:42:35
那些盛赞过贾浅浅的专家教授

那些盛赞过贾浅浅的专家教授

难得君
2026-07-18 13:44:19
截至2026年5月末,全国地方政府债务余额581453亿元

截至2026年5月末,全国地方政府债务余额581453亿元

新理财杂志
2026-06-25 16:47:17
名导诺兰新片口碑爆了!烂番茄98%创生涯最高

名导诺兰新片口碑爆了!烂番茄98%创生涯最高

自愈小日子
2026-07-16 01:06:15
灾难事件中的歌颂叙事,越来越让人反感

灾难事件中的歌颂叙事,越来越让人反感

黔有虎
2026-07-10 17:13:47
想要击败俄罗斯,乌克兰必须先击败自己!!!

想要击败俄罗斯,乌克兰必须先击败自己!!!

山河路口
2026-07-18 13:23:58
陈云被下放到江西,一把手程世清避而不见,陈云复出后怒批他

陈云被下放到江西,一把手程世清避而不见,陈云复出后怒批他

扬平说史
2026-07-18 22:28:17
最新!京城知名小学迎来“85后”博士校长

最新!京城知名小学迎来“85后”博士校长

京城教育圈
2026-07-17 17:10:48
新冠后遗症的长期侵袭,无数人在不知不觉中深陷困境

新冠后遗症的长期侵袭,无数人在不知不觉中深陷困境

律法刑道
2026-04-01 10:15:47
84岁高明现状:痛失独子后,在北京定居生活,儿媳一举动让人泪目

84岁高明现状:痛失独子后,在北京定居生活,儿媳一举动让人泪目

白面书誏
2026-07-14 19:13:29
吴前举办婚礼:胡明轩孙铭徽等出席 尚未接受浙江男篮老将合同

吴前举办婚礼:胡明轩孙铭徽等出席 尚未接受浙江男篮老将合同

醉卧浮生
2026-07-18 21:55:02
鲁尼兑现对哈兰德的承诺划船渡河,并高喊“拉伤大腿了”

鲁尼兑现对哈兰德的承诺划船渡河,并高喊“拉伤大腿了”

懂球帝
2026-07-18 18:59:06
炸锅!阿森纳全力抢亿级天才!世界杯爆红新星铁心加盟

炸锅!阿森纳全力抢亿级天才!世界杯爆红新星铁心加盟

澜归序
2026-07-18 05:17:29
2026-07-19 03:00:49
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12671文章数 51987关注度
往期回顾 全部

科技要闻

WAIC2026看什么?这份"不迷路"攻略请收好

头条要闻

“黄总请你去包厢” “黄总”身份公布

头条要闻

“黄总请你去包厢” “黄总”身份公布

体育要闻

德尚是非典型法国人 14年执教留下丰厚遗产

娱乐要闻

大S给具俊晔留遗产是昏头?实际上她清醒得很

财经要闻

股民当街砍博主!韩国股市 终极大屠杀

汽车要闻

把中国超跑卖到英国,比亚迪正在被世界看见

态度原创

游戏
旅游
家居
亲子
公开课

守望先锋推出十年以来最涩泳装,玩家却只关心脚裹得太严实?

旅游要闻

腾冲别只逛古镇,这片樱花山谷,徒步吸氧泡汤一站式玩!

家居要闻

2026建博会(广州) 公装联探展交流活动

亲子要闻

奥伦喝到了猴子饮料,太逗了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版