 基于Apache APISIX 与RocketMQ 构建云原生一体化架构基于 Apache APISIX 与 RocketMQ 构建云原生一体化架构 杜恒 ASF Member,Apache RocketMQ PMC 成员 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information binding • Broker和Store节点分离部署、独立扩缩 • 可分可合,适应多种业务场景,降低运维负担 云原生基础设施: • 可观测性能力云原生化,OpenTelemetry 标准化 • Kubernetes 一键式部署扩容交付 W r i t e h e r e S o m e t h i n g Ab o u t 全新 POP 消费模型 服务端负载均衡  消除 消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储, 统一复制算法 • 不借助外部依赖,提供 状态存储能力 • 单一数据文件,支持面向流的索引及面向 批的索引 • 批量发,批量存,批量读,吞吐提升十倍 • 统一消息,KV 语义,统一 API,提供 状态存储能力 • 流表二象性支持 W r i t e h e0 码力 | 22 页 | 2.26 MB | 1 年前3 基于Apache APISIX 与RocketMQ 构建云原生一体化架构基于 Apache APISIX 与 RocketMQ 构建云原生一体化架构 杜恒 ASF Member,Apache RocketMQ PMC 成员 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information binding • Broker和Store节点分离部署、独立扩缩 • 可分可合,适应多种业务场景,降低运维负担 云原生基础设施: • 可观测性能力云原生化,OpenTelemetry 标准化 • Kubernetes 一键式部署扩容交付 W r i t e h e r e S o m e t h i n g Ab o u t 全新 POP 消费模型 服务端负载均衡  消除 消息体小且存储结构面向单 条消息,导致提升吞吐困难 • 在进行状态存储时,无 KV 语义支撑 挑战 • Commitlog 格式存储, 统一复制算法 • 不借助外部依赖,提供 状态存储能力 • 单一数据文件,支持面向流的索引及面向 批的索引 • 批量发,批量存,批量读,吞吐提升十倍 • 统一消息,KV 语义,统一 API,提供 状态存储能力 • 流表二象性支持 W r i t e h e0 码力 | 22 页 | 2.26 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 从入门到实战推荐人 杜恒,Apache RocketMQ PMC Member/ committer,Linux OpenMessaging TSC Member,目前负责 RocketMQ 专有云商业化以 及开源技术生态构建。具有多年分布式系统、中间件 研究及工程经验。目前对分布式中间件、K8s、微服 务、物联网、Serverless 感兴趣。 推荐序 Apache RocketMQ 作为 RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的?  定时消息、消息过滤等实现原理。  如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 发表了 30 余篇文章,从 Nameserver、消息发送高可用设计、消息存储、消息消费、消 息过滤、事务消息等各个方面对其进行了体系化的剖析,边写边分享,边分享边传播,终于 nameserver,只有在连接出现异常时才会向尝试连接另外一台。客户 端每隔 30s 向 Nameserver 发起 topic 的路由信息查询。 温馨提示:Nameserver 是在内存中存储 Topic 的路由信息,持久化 Topic 路由信息 的地方是在 Broker 中,即${ ROCKETMQ_HOME}/store/config/topics.json。 在 RocketMQ4.5.0 版本后引入了多副本0 码力 | 165 页 | 12.53 MB | 1 年前3 Apache RocketMQ 从入门到实战推荐人 杜恒,Apache RocketMQ PMC Member/ committer,Linux OpenMessaging TSC Member,目前负责 RocketMQ 专有云商业化以 及开源技术生态构建。具有多年分布式系统、中间件 研究及工程经验。目前对分布式中间件、K8s、微服 务、物联网、Serverless 感兴趣。 推荐序 Apache RocketMQ 作为 RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的?  定时消息、消息过滤等实现原理。  如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 发表了 30 余篇文章,从 Nameserver、消息发送高可用设计、消息存储、消息消费、消 息过滤、事务消息等各个方面对其进行了体系化的剖析,边写边分享,边分享边传播,终于 nameserver,只有在连接出现异常时才会向尝试连接另外一台。客户 端每隔 30s 向 Nameserver 发起 topic 的路由信息查询。 温馨提示:Nameserver 是在内存中存储 Topic 的路由信息,持久化 Topic 路由信息 的地方是在 Broker 中,即${ ROCKETMQ_HOME}/store/config/topics.json。 在 RocketMQ4.5.0 版本后引入了多副本0 码力 | 165 页 | 12.53 MB | 1 年前3
 RocketMQ v3.2.4 开发指南........................................................................................ 13 6.2 文件系统 ................................................................................................ ............................................................................ 16 7.1 单机支持 1 万以上持丽化队列 ................................................................................................. 月份上线,在淘宝内部被广泛使用。 三、RocketMQ 3.x 基亍公司内部开源共建原则, RocketMQ 项目只维护核心功能,丏去除了所有其他运行时依赖,核心功能最 简化。每个 BU 的个性化需求都在 RocketMQ 项目乀上迕行深度定制。RocketMQ 吐其他 BU 提供的仁仁是 Jar 包,例如要定制一个 Broker,那举只需要依赖 rocketmq-broker 返个 jar0 码力 | 52 页 | 1.61 MB | 1 年前3 RocketMQ v3.2.4 开发指南........................................................................................ 13 6.2 文件系统 ................................................................................................ ............................................................................ 16 7.1 单机支持 1 万以上持丽化队列 ................................................................................................. 月份上线,在淘宝内部被广泛使用。 三、RocketMQ 3.x 基亍公司内部开源共建原则, RocketMQ 项目只维护核心功能,丏去除了所有其他运行时依赖,核心功能最 简化。每个 BU 的个性化需求都在 RocketMQ 项目乀上迕行深度定制。RocketMQ 吐其他 BU 提供的仁仁是 Jar 包,例如要定制一个 Broker,那举只需要依赖 rocketmq-broker 返个 jar0 码力 | 52 页 | 1.61 MB | 1 年前3
 Apache RocketMQ 介绍ActiveMQ等。但在需求不断膨胀的情况下,ActiveMQ IO模块遇到了瓶颈,几经努力但改善成果不 。这时正值Kafka流行,于是引起了阿里巴巴开发团队的注意,对kafka的无限消息堆积,高效持久化 度等特性非常赞赏。但不幸的是,Kafka不能满足他们的要求,特别是在低延迟和高可靠性方面。在 种情况下,阿里巴巴决定发明一个新的消息传递引擎来处理更广泛的用例集,从传统的发布/订阅方 到大批量实时零损失容忍交易系统。0 码力 | 5 页 | 375.48 KB | 1 年前3 Apache RocketMQ 介绍ActiveMQ等。但在需求不断膨胀的情况下,ActiveMQ IO模块遇到了瓶颈,几经努力但改善成果不 。这时正值Kafka流行,于是引起了阿里巴巴开发团队的注意,对kafka的无限消息堆积,高效持久化 度等特性非常赞赏。但不幸的是,Kafka不能满足他们的要求,特别是在低延迟和高可靠性方面。在 种情况下,阿里巴巴决定发明一个新的消息传递引擎来处理更广泛的用例集,从传统的发布/订阅方 到大批量实时零损失容忍交易系统。0 码力 | 5 页 | 375.48 KB | 1 年前3
 快速部署高可用的Apache RocketMQ 集群 - Amazon S3部署⼀台堡垒主机,此数⽬可配置,最多启动 4 台。通过堡垒主 机访问私有⼦⽹ 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细 化控制的权限, ⽤于访问部署过程所需的 AMAZON WEB SERVICES 服 务。 Page 5 of 21 • (*) 安全组,⽤于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝ RocketMQ 快速部署脚本做了 ⾃定义化并且 上传到了您⾃⼰ 的桶中。 25 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了⾃定义 Page 12 of 21 化并且存放到了不同的前缀⽬录 下。 Page 13 of 21 本做了⾃定义化并且上传到了您 ⾃⼰的桶 中。 8 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了⾃定义 化并且存放到了不同的前缀⽬录 下。 9 Quick Start0 码力 | 21 页 | 2.57 MB | 1 年前3 快速部署高可用的Apache RocketMQ 集群 - Amazon S3部署⼀台堡垒主机,此数⽬可配置,最多启动 4 台。通过堡垒主 机访问私有⼦⽹ 中的 RocketMQ 相关节点。 • AMAZON Identity and Access Management (IAM) 实例⻆⾊,具有细 化控制的权限, ⽤于访问部署过程所需的 AMAZON WEB SERVICES 服 务。 Page 5 of 21 • (*) 安全组,⽤于在 VPC 内实现通信,且仅允许访问必需的协议和端⼝ RocketMQ 快速部署脚本做了 ⾃定义化并且 上传到了您⾃⼰ 的桶中。 25 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了⾃定义 Page 12 of 21 化并且存放到了不同的前缀⽬录 下。 Page 13 of 21 本做了⾃定义化并且上传到了您 ⾃⼰的桶 中。 8 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了⾃定义 化并且存放到了不同的前缀⽬录 下。 9 Quick Start0 码力 | 21 页 | 2.57 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, queueId Partition Basically Available Soft-state Eventual Consistency 分布式事务解决⽅方案 XA 特点: 1. 两阶段提交 2. 仅商业化数据库⽀支持 3. ⽆无法满⾜足⾼高并发场景 分布式事务解决⽅方案 SAGA 特点: 1. 提交+补偿 2. 并发隔离性很难保证 分布式事务解决⽅方案 TCC 特点: 1. 特殊的两阶段提交 互操作性,易易部署,可监控管理理 消息系统挑战 • 传统设计和实现⽅方⾯面 • 组件的微服务化,例例如存储和计算分离 • 开源软件的冲击,云服务选型⾯面临挑战 • 缺少稳定的多语⾔言类库 • Cloud AI Ops⽅方⾯面 • 容器器化部署,K8S编排 • 诸如IoT/IIoT新场景下的规模化部署能⼒力力不不⾜足 • HTTP/RESTful/JSON 灵活调⽤用,监控及运维能⼒力力不不⾜足0 码力 | 34 页 | 6.17 MB | 1 年前3 王强-Apache RocketMQ事务消息事务消息的演进与Apache RocketMQ的实现 • Cloud Native时代下消息系统的挑战 • Apache RocketMQ 简介 • Apache RocketMQ 存储设计 存储⽂文件 - - - - - 1G - - - - - 6M - - - - - 400M 配置和状态相关 消息存储和检索相关 存储设计 producer message(topic, queueId Partition Basically Available Soft-state Eventual Consistency 分布式事务解决⽅方案 XA 特点: 1. 两阶段提交 2. 仅商业化数据库⽀支持 3. ⽆无法满⾜足⾼高并发场景 分布式事务解决⽅方案 SAGA 特点: 1. 提交+补偿 2. 并发隔离性很难保证 分布式事务解决⽅方案 TCC 特点: 1. 特殊的两阶段提交 互操作性,易易部署,可监控管理理 消息系统挑战 • 传统设计和实现⽅方⾯面 • 组件的微服务化,例例如存储和计算分离 • 开源软件的冲击,云服务选型⾯面临挑战 • 缺少稳定的多语⾔言类库 • Cloud AI Ops⽅方⾯面 • 容器器化部署,K8S编排 • 诸如IoT/IIoT新场景下的规模化部署能⼒力力不不⾜足 • HTTP/RESTful/JSON 灵活调⽤用,监控及运维能⼒力力不不⾜足0 码力 | 34 页 | 6.17 MB | 1 年前3
 Apache RocketMQ on Amazon Web Services项,除⾮您对启动脚 RocketMQ 快速部署脚本做了自 定义化并且 上传到了您自己的 桶中。 25 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了自定义 化并且存放到了不同的前缀目录 下。 选项 2:用于将 RocketMQ 存储 桶。请不要 更改此选 项,除⾮您对启动脚 本做了自定义化并且上传到了您 自己的桶 中。 8 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了自定义 化并且存放到了不同的前缀目录 下。 9 Quick Start bucket region QSS3BucketRegion cn-north-1 S3 bucket 对应的 region。请不要 更改 此选项,除⾮您对此启动 脚本做了自定义化并且存放到了 不同 region 的 bucket 下面。 Other parameters 10 BrokerClusterC ount BrokerClusterCount0 码力 | 18 页 | 1.55 MB | 1 年前3 Apache RocketMQ on Amazon Web Services项,除⾮您对启动脚 RocketMQ 快速部署脚本做了自 定义化并且 上传到了您自己的 桶中。 25 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了自定义 化并且存放到了不同的前缀目录 下。 选项 2:用于将 RocketMQ 存储 桶。请不要 更改此选 项,除⾮您对启动脚 本做了自定义化并且上传到了您 自己的桶 中。 8 Quick Start S3 Key Prefix QSS3KeyPrefix quickstart- rocketmq/ S3 前缀。请不要更改此选项, 除⾮您对此启动脚本做了自定义 化并且存放到了不同的前缀目录 下。 9 Quick Start bucket region QSS3BucketRegion cn-north-1 S3 bucket 对应的 region。请不要 更改 此选项,除⾮您对此启动 脚本做了自定义化并且存放到了 不同 region 的 bucket 下面。 Other parameters 10 BrokerClusterC ount BrokerClusterCount0 码力 | 18 页 | 1.55 MB | 1 年前3
 万亿级数据洪峰下的消息引擎Apache RocketMQCustom apps Analytics Monitoring Open platform IM … Any protocols 1.4万亿 Apache RocketMQ – 商业化版本 感谢大家 THANKS! Alibaba Middleware l http://openmessaging.github.io/ l http://rocketmq.apache.org/0 码力 | 35 页 | 993.29 KB | 1 年前3 万亿级数据洪峰下的消息引擎Apache RocketMQCustom apps Analytics Monitoring Open platform IM … Any protocols 1.4万亿 Apache RocketMQ – 商业化版本 感谢大家 THANKS! Alibaba Middleware l http://openmessaging.github.io/ l http://rocketmq.apache.org/0 码力 | 35 页 | 993.29 KB | 1 年前3
共 11 条
- 1
- 2













