软件简介

与 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 连接,再进行数据交互。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
发表于云计算专区
05/21 00:31

腾讯和 StreamNative 开源 RoP:Apache Pulsar 支持原生 RocketMQ 协议

我们很高兴地宣布 StreamNative 与腾讯云中间件团队联合宣布开源 RoP! RoP 将 RocketMQ 协议处理插件引入 Pulsar broker,这样 Pulsar 能支持原生 RocketMQ 协议。 什么是 RoP? 与 KoP、MoP 和 AoP 相似,RoP 是一种可插拔的协议处理插件。 将 RoP 协议处理插件添加到现有 Pulsar 集群后,用户无需修改代码,便能将现有的 RocketMQ 应用程序和服务迁移到 Pulsar,同时还能使用 Pulsar 的强大功能,例如: •计算与存储分离 •...

0
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/05/21 14:48

rocketmq kafka pulsar 扩容对比

RocketMQ 在线扩容队列 通过 updateTopic 命令 扩容队列,原来老数据不动 kafka 扩容 partition reassigment工具。数据迁移 pulsar 全自动无感知

0
0
发表于服务端专区
2020/04/26 22:30

RocketMQ-mac安装rocketmq

1.官网下载rocketmq指定版本的二进制压缩文件,然后解压 2.配置mq环境变量到.bash_profile export ROCKETMQ_HOME=/Users/dengpingxu/software/rocketmq-all-4.7.0-bin-release export PATH=$PATH:$ROCKETMQ_HOME 以下操作都需要切换到 rocketmq-all-4.7.0-bin-release目录下 3.启动NameServer(类似zookeeper注册中心) 以后台运行的方式启动:nohup sh bin/mqnamesrv & 查看启动日志: tail -f ~/logs/rocketmqlogs/namesrv.log ...

0
0
2020/04/26 22:38

RocketMQ-rocketmq事务原理

一个简单的基于rocketmq事务消息实现的分布式事务 消息生产者代码-发送事务消息 public class Producer { private static TransactionMQProducer producer = null; private static ExecutorService executorService = Executors.newFixedThreadPool(1); public static void main(String[] args) { TransactionListener listener = createTransactionListener(); producer = new Trans...

0
1
发表了博客
2019/01/18 10:05

阿里rocketmq与自建rocketmq

一、搭环境 阿里rocketmq不用搭建, https://help.aliyun.com/document_detail/34411.html?spm=a2c4g.11186623.6.546.1787650eShM7ho 开源rocketmq(window+rocketmq) https://www.cnblogs.com/amuge/articles/10275292.html 二、发送消息类型: 三、名词解释 https://help.aliyun.com/document_detail/29533.html?spm=a2c4g.11186623.6.542.1cfa77d7wLCfvb 消息相关名词: Topic:消息主题 , 一级消息类型 Tag:消息标签,二级...

0
0
2019/04/11 21:22

rocketMq

公司是做零售领域的。现在在做追溯系统,需要对外提供接口和对内提供接口。一些东西是通过触发器来触发的。然后调用接口。这样的方式问题在于,有可能系统会启动,导致数据的丢失情况。面对这种问题,一种方式在建立临时表,然后会写。这种方式会增加维护量。个人建议是通过消息队列的方式来实现。目前选型rocket,因为这个具有事物消息的能力。后期如果需要消息事物,这个会比较有利点。 [Rocketmq原理&最佳实践](https://www...

0
0
发表了博客
2018/08/01 16:18

RocketMQ

应用场景 主要作用解耦、滑峰填谷 异构系统的整合,这个问题比较容易理解,在原阿里SOA ESB比较火的年代,很多异构系统需要进行互联互通。 应用和应用之间的松耦合,这个在阿里巴巴内部很多的同步链路到异步链路里面,使用的非常多。 事件驱动机制和复杂事件架构模型里面的Backbone,底层的机制可以通过MQ来玩转。 数据复制通道,这个有很多比较典型的应用场景,比如模拟MySQL的binlog解析,将数据的变更封装为消息,进而复制到...

0
0
发表于开发技能专区
2018/03/08 11:25

rocketmq

F:\rocketmq.txt 新建一个文件,内容如下: listenPort=80 启动命令行中新增 -c F:\\rocketmq.txt,即可。 在windows 下,启动broker失败。 报错是 找不到或无法加载主类 Files 修改如下: runbroker.cmd 中,将 ```cmd set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%" 改为 set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%"" ``` spring boot 使用log4j2 与 rocketmq-client 对接,笔者使用的是rocketmq-client-4.2版本,发现配置的log...

0
0
发表于AI & 大数据专区
2018/06/14 14:38

RocketMQ

一、背景 随着移动互联网的迅猛发展,各大互联网公司的体量、业务呈现指数式增长,在业务的反哺与逼迫下,分布式技术架构随之遍地开花,其中以SOA服务技术架构,微服务技术架构等为主的分布式架构如火如荼地发展。在这种大趋势之下,互联网企业也开始面临着数据采集,数据异构,系统整合等诸多问题,而CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点,消息...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
4 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部