 Apache RocketMQ 从入门到实战RocketMQ 为什么性能高效,到底运用了什么“厉害”的技术?  RocketMQ 如何实现刷盘(可以类比一下数据库方面的刷盘、redo、undo 日志)?  RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的?  定时消息、消息过滤等实现原理。  如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 端,${ROCKETMQ_HOME}/store/conf ig/consumerOffset.json 是其具体的存储文件,其中内容截图如下: 可见消费进度的 Key 为:topic@consumeGroup,然后每一个队列一个偏移量。 广播模式的消费进度文件存储在用户的主目录,默认文件全路劲名:${USER_HOM E}/.rocketmq_offsets。 4. 消费模型 RocketMQ rocketmq-all-4.7.1-bin-release.zip ls -l 解压后的文件如下图所示: 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 29 > 1.3 实战:RocketMQ 学习环境搭建指南篇 其中 conf 文件夹存放的是 RocketMQ 的配置文件,提供了各种部署结构的示例配 置。例如 2m-2s-async 是 2 主 2 从异步复制的配置示例;2m-noslave0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战RocketMQ 为什么性能高效,到底运用了什么“厉害”的技术?  RocketMQ 如何实现刷盘(可以类比一下数据库方面的刷盘、redo、undo 日志)?  RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的?  定时消息、消息过滤等实现原理。  如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 端,${ROCKETMQ_HOME}/store/conf ig/consumerOffset.json 是其具体的存储文件,其中内容截图如下: 可见消费进度的 Key 为:topic@consumeGroup,然后每一个队列一个偏移量。 广播模式的消费进度文件存储在用户的主目录,默认文件全路劲名:${USER_HOM E}/.rocketmq_offsets。 4. 消费模型 RocketMQ rocketmq-all-4.7.1-bin-release.zip ls -l 解压后的文件如下图所示: 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 29 > 1.3 实战:RocketMQ 学习环境搭建指南篇 其中 conf 文件夹存放的是 RocketMQ 的配置文件,提供了各种部署结构的示例配 置。例如 2m-2s-async 是 2 主 2 从异步复制的配置示例;2m-noslave0 码力 | 165 页 | 12.53 MB | 1 年前3
 消息中间件RocketMQ原理解析 - 斩秋transaction stable table: 如果是 prepared 消息记,通过 TransactionStateService 服 务将消息加到存储事务状态的表格 tranStateTable 的文件中;如果是 commitType 和 rollbackType 消息, 修改事物状态表格 tranStateTable 中的消息状态。 记 录 Transaction Redo Log 日 志 将多个文件组成一个连续的队列,它的存储单元是定 长为 24 个字节的数据, tranStateTableOffset 可以认为是事物状态消息的个数,索引偏移量, 它的值是 tranStateTable.getMaxOffset() / TSStoreUnitSize 2.2.4 事物回查 定时回查线程会定时扫描(默认每分钟)每个存储事务状态的表格文件, 遍历存储事 消息,且遍历完,则终止扫描这个文件的定时任务 2.2.5 事物消息的 load&recover TransactionStateService.load ()事物状态服务加载, 加载只是建立文件映射 redoLog 队列恢复,加载本地 redoLog 文件 tranStateTable 事物状态表, 加载本地 tranStateTable 文件 recover:0 码力 | 57 页 | 2.39 MB | 1 年前3 消息中间件RocketMQ原理解析 - 斩秋transaction stable table: 如果是 prepared 消息记,通过 TransactionStateService 服 务将消息加到存储事务状态的表格 tranStateTable 的文件中;如果是 commitType 和 rollbackType 消息, 修改事物状态表格 tranStateTable 中的消息状态。 记 录 Transaction Redo Log 日 志 将多个文件组成一个连续的队列,它的存储单元是定 长为 24 个字节的数据, tranStateTableOffset 可以认为是事物状态消息的个数,索引偏移量, 它的值是 tranStateTable.getMaxOffset() / TSStoreUnitSize 2.2.4 事物回查 定时回查线程会定时扫描(默认每分钟)每个存储事务状态的表格文件, 遍历存储事 消息,且遍历完,则终止扫描这个文件的定时任务 2.2.5 事物消息的 load&recover TransactionStateService.load ()事物状态服务加载, 加载只是建立文件映射 redoLog 队列恢复,加载本地 redoLog 文件 tranStateTable 事物状态表, 加载本地 tranStateTable 文件 recover:0 码力 | 57 页 | 2.39 MB | 1 年前3
 快速部署高可用的Apache RocketMQ 集群 - Amazon S34 台。通过堡垒主 机访问私有⼦⽹ 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细 化控制的权限, ⽤于访问部署过程所需的 AMAZON WEB SERVICES 服 务。 Page 5 of 21 • (*) 安全组,⽤于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝ 必填项 允许对堡垒主机进⾏外部 SSH 访问的 CIDR IP 范围。我们建 议您 将此值设置为受信任的 IP 范围。例如,您可能希望仅对公 司⽹ 络 IP 段授予访问权限。如 果允许所有的外部主机访问,可 以设置为 0.0.0.0/0 Security Configuration 安全配置 Page 10 of 21 11 tmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程序的配置文件,由部署脚 本自动生成 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ 的本地 文件存放目录 如何使用浏览器查看 Apache RocketMQ 的 Web Console 当前部署方案在每个0 码力 | 21 页 | 2.57 MB | 1 年前3 快速部署高可用的Apache RocketMQ 集群 - Amazon S34 台。通过堡垒主 机访问私有⼦⽹ 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细 化控制的权限, ⽤于访问部署过程所需的 AMAZON WEB SERVICES 服 务。 Page 5 of 21 • (*) 安全组,⽤于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝ 必填项 允许对堡垒主机进⾏外部 SSH 访问的 CIDR IP 范围。我们建 议您 将此值设置为受信任的 IP 范围。例如,您可能希望仅对公 司⽹ 络 IP 段授予访问权限。如 果允许所有的外部主机访问,可 以设置为 0.0.0.0/0 Security Configuration 安全配置 Page 10 of 21 11 tmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程序的配置文件,由部署脚 本自动生成 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ 的本地 文件存放目录 如何使用浏览器查看 Apache RocketMQ 的 Web Console 当前部署方案在每个0 码力 | 21 页 | 2.57 MB | 1 年前3
 RocketMQ v3.2.4 开发指南........................................................................................ 13 6.2 文件系统 ................................................................................................ 消息中间件通常采用的几种持丽化方式: (1). 持丽化到数据库,例如 Mysql。 (2). 持丽化到 KV 存储,例如 levelDB、伯克利 DB 等 KV 存储系统。 (3). 文件记彔形式持丽化,例如 Kafka,RocketMQ 项目开源主页:https://github.com/alibaba/RocketMQ 6 (4). 对内存数据做一个持丽化镜像,例如 CORBA Notification 规范没有明确说明如何持丽化,但是持丽化部分的性能直接决定了整个消息中间件 的性能。 RocketMQ 参考了 Kafka 的持丽化方式,充分利用 Linux 文件系统内存 cache 来提高性能。 4.6 Message Reliablity 影响消息可靠性的几种情冴: (1). Broker 正常关闭 (2). Broker 异常 Crash0 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南........................................................................................ 13 6.2 文件系统 ................................................................................................ 消息中间件通常采用的几种持丽化方式: (1). 持丽化到数据库,例如 Mysql。 (2). 持丽化到 KV 存储,例如 levelDB、伯克利 DB 等 KV 存储系统。 (3). 文件记彔形式持丽化,例如 Kafka,RocketMQ 项目开源主页:https://github.com/alibaba/RocketMQ 6 (4). 对内存数据做一个持丽化镜像,例如 CORBA Notification 规范没有明确说明如何持丽化,但是持丽化部分的性能直接决定了整个消息中间件 的性能。 RocketMQ 参考了 Kafka 的持丽化方式,充分利用 Linux 文件系统内存 cache 来提高性能。 4.6 Message Reliablity 影响消息可靠性的几种情冴: (1). Broker 正常关闭 (2). Broker 异常 Crash0 码力 | 52 页 | 1.61 MB | 1 年前3
 Apache RocketMQ on Amazon Web Services4 台。通过堡垒主机访 问私有⼦网 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细化控制的 权限, 用于访问部署过程所需的 AMAZON WEB SERVICES 服务。 • (*) 安全组,用于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝(如 果您选 择的是启动在已有 VPC 必填项 允许对堡垒主机进⾏外部 SSH 访 问的 CIDR IP 范围。我们建议您 将此值设置为受信任的 IP 范 围。例如,您可能希望仅对公司 网 络 IP 段授予访问权限。如果 允许所有的外部主机访问,可以 设置为 0.0.0.0/0 Security Configuration 安全配置 11 Key Name KeyPairName 必填项 部署脚本的安装日志,如果 有错误可以查看这个日志 4 /home/ec2-user/rocketmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程 序的配置文件,由部署脚本 自动⽣成 Page 14 of 18 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ0 码力 | 18 页 | 1.55 MB | 1 年前3 Apache RocketMQ on Amazon Web Services4 台。通过堡垒主机访 问私有⼦网 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细化控制的 权限, 用于访问部署过程所需的 AMAZON WEB SERVICES 服务。 • (*) 安全组,用于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝(如 果您选 择的是启动在已有 VPC 必填项 允许对堡垒主机进⾏外部 SSH 访 问的 CIDR IP 范围。我们建议您 将此值设置为受信任的 IP 范 围。例如,您可能希望仅对公司 网 络 IP 段授予访问权限。如果 允许所有的外部主机访问,可以 设置为 0.0.0.0/0 Security Configuration 安全配置 11 Key Name KeyPairName 必填项 部署脚本的安装日志,如果 有错误可以查看这个日志 4 /home/ec2-user/rocketmq-deploy/rocketMQ-config/ Apache RocketMQ Broker 程 序的配置文件,由部署脚本 自动⽣成 Page 14 of 18 5 /home/ec2-user/rocketmq-deploy/rmqstore Apache RocketMQ0 码力 | 18 页 | 1.55 MB | 1 年前3
 rocketmq 服务部署6.3 git clone https://github.com/apache/rocketmq.git cd rocketmq # 执行mvn构建命令, 这里的命令含义是:清理之前编译、打包的文件,激活profile 名为 release-al # 然后打包,不编译单元测试,也不运行单元测试 mvn clean -P release-all package -Dmaven.test.skip=true ├── tomcat-annotations-api-8.5.46.jar └── tomcat-embed-core-8.5.46.jar ● bin目录下放的是脚本文件 ● conf目录,配置文件 2m-2s-async 双主双从异步复制模式 2m-2s-sync 双主双从同步双写模式 2m-noslave 双主模式 ● lib 存放的依赖jar包 测试namesrv的启动 OS rocketmq配置文件 1、编辑 conf/2m-2s-async/broker-a.properties # 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-a # 0 表示master,>0 表示slave brokerId=0 # 删除文件时间点,默认凌晨4点 deleteWhen=040 码力 | 11 页 | 284.35 KB | 1 年前3 rocketmq 服务部署6.3 git clone https://github.com/apache/rocketmq.git cd rocketmq # 执行mvn构建命令, 这里的命令含义是:清理之前编译、打包的文件,激活profile 名为 release-al # 然后打包,不编译单元测试,也不运行单元测试 mvn clean -P release-all package -Dmaven.test.skip=true ├── tomcat-annotations-api-8.5.46.jar └── tomcat-embed-core-8.5.46.jar ● bin目录下放的是脚本文件 ● conf目录,配置文件 2m-2s-async 双主双从异步复制模式 2m-2s-sync 双主双从同步双写模式 2m-noslave 双主模式 ● lib 存放的依赖jar包 测试namesrv的启动 OS rocketmq配置文件 1、编辑 conf/2m-2s-async/broker-a.properties # 集群名称 brokerClusterName=mq-broker-cluster # broker名字,不同的配置文件填写的不一样 brokerName=broker-a # 0 表示master,>0 表示slave brokerId=0 # 删除文件时间点,默认凌晨4点 deleteWhen=040 码力 | 11 页 | 284.35 KB | 1 年前3
 王强-Apache RocketMQ事务消息事务消息的演进与Apache RocketMQ的实现 • Cloud Native时代下消息系统的挑战 • Apache RocketMQ 简介 • Apache RocketMQ 存储设计 存储⽂文件 - - - - - 1G - - - - - 6M - - - - - 400M 配置和状态相关 消息存储和检索相关 存储设计 producer message(topic, queueId0 码力 | 34 页 | 6.17 MB | 1 年前3 王强-Apache RocketMQ事务消息事务消息的演进与Apache RocketMQ的实现 • Cloud Native时代下消息系统的挑战 • Apache RocketMQ 简介 • Apache RocketMQ 存储设计 存储⽂文件 - - - - - 1G - - - - - 6M - - - - - 400M 配置和状态相关 消息存储和检索相关 存储设计 producer message(topic, queueId0 码力 | 34 页 | 6.17 MB | 1 年前3
 基于Apache APISIX 与RocketMQ 构建云原生一体化架构消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储, 统一复制算法 • 不借助外部依赖,提供 状态存储能力 • 单一数据文件,支持面向流的索引及面向 批的索引 • 批量发,批量存,批量读,吞吐提升十倍 • 统一消息,KV 语义,统一 API,提供 状态存储能力 • 流表二象性支持 W r i t e h e0 码力 | 22 页 | 2.26 MB | 1 年前3 基于Apache APISIX 与RocketMQ 构建云原生一体化架构消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储, 统一复制算法 • 不借助外部依赖,提供 状态存储能力 • 单一数据文件,支持面向流的索引及面向 批的索引 • 批量发,批量存,批量读,吞吐提升十倍 • 统一消息,KV 语义,统一 API,提供 状态存储能力 • 流表二象性支持 W r i t e h e0 码力 | 22 页 | 2.26 MB | 1 年前3
共 8 条
- 1













