作者:昶风
阿里云音讯队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低提早、高并发、高可用、高牢靠的分布式“音讯、事件、流”对立解决平台,面向互联网分布式应用场景提供微服务异步解耦、流式数据处理、事件驱动解决等外围能力。其自诞生以来始终为阿里团体提供稳固牢靠的音讯服务,历经多年双十一万亿级流量洪峰的验证。
随着业务需要场景日渐丰盛,在多年教训积攒后,阿里云 RocketMQ 也迎来了革命性的更新,正式公布了阿里云音讯队列 RocketMQ 版 5.0,在架构、网络、负载平衡、存储等诸多方面进行了显著优化。其定位不再局限于音讯解耦场景,将全新布局事件驱动和音讯流式解决场景。
阿里云 EventBridge 作为云上事件枢纽始终以来都放弃着对云上事件、数据的敌对生态反对。随着 RocketMQ 5.0 版本的用户日渐增多,EventBridge 在近期对 RocketMQ Connector 进行了全面降级。降级之后的 RocketMQ Connector 不仅能够反对 RocketMQ 5.0 版本,同时也能反对云上自建 RocketMQ 实例。除此之外,基于成熟的事件流能力,用户应用 EventBridge 也能轻松构建音讯路由能力,实现对灾备、数据同步的需要。
本文将从业务架构和 API 应用等方面解说 如何应用 EventBridge 创立阿里云 RocketMQ 4.0、5.0 版本,开源自建版本以及音讯路由的相干工作。
EventBridge-RocketMQ 4.0
业务架构
RocketMQ 4.0 版本应用较为经典的 client-nameserver-broker 架构,整个利用次要由生产者、消费者、NameServer 和 Broker 组成。
- Name Server:是一个简直无状态节点,可集群部署,在音讯队列 RocketMQ 版中提供命名服务,更新和发现 Broker 服务。
- Broker:音讯直达角色,负责存储音讯,转发音讯。分为 Master Broker 和 Slave Broker,一个 Master Broker 能够对应多个 Slave Broker,然而一个 Slave Broker 只能对应一个 Master Broker。Broker 启动后须要实现一次将本人注册至 Name Server 的操作;随后每隔 30s 定期向 Name Server 上报 Topic 路由信息。
- 生产者:与 Name Server 集群中的其中一个节点(随机)建设长连贯(Keep-alive),定期从 Name Server 读取 Topic 路由信息,并向提供 Topic 服务的 Master Broker 建设长连贯,且定时向 Master Broker 发送心跳。
- 消费者:与 Name Server 集群中的其中一个节点(随机)建设长连贯,定期从 Name Server 拉取 Topic 路由信息,并向提供 Topic 服务的 Master Broker、Slave Broker 建设长连贯,且定时向 Master Broker、Slave Broker 发送心跳。Consumer 既能够从 Master Broker 订阅音讯,也能够从 Slave Broker 订阅音讯,订阅规定由 Broker 配置决定。
EventBridge 在获取用户受权之后,利用生成的 sts 长期受权对客户的 RocketMQ 实例进行音讯读取或写入。
API 应用
在 API 介绍方面,咱们以创立 「自定义总线 – 自定义事件源」 为例,事件指标以及事件流中的 API 基本一致。
基于 EventBridge 创立 RocketMQ 4.0 工作的 API 和之前根本放弃了统一。具体参数如下
- 版本:代表阿里云音讯队列 RocketMQ 版本,可抉择 4.x 或 5.x;
- RocketMQ 实例:RocketMQ 对应的实例 ID。用户在阿里云 RocketMQ 控制台每创立一个实例都会有一个对应的实例 ID,如 MQ_INST_123456789*_BX6zY7ah;
- Topic:RocketMQ Topic。抉择此 topic 作为事件源的读取对象或者事件指标的写入对象;
- Tag:RocketMQ 生产 Tag,用于消费者过滤音讯应用;
- Group ID:RocketMQ 生产组,标识一组特定的消费者,仅事件源有此参数;
- 生产位点:初始生产位点。可抉择最新位点、最早位点、或者指定工夫戳。
EventBridge-RocketMQ 5.0
业务架构
RocketMQ 5.0 版将通用的存储逻辑下沉,集中解决音讯存储的多正本、低提早、海量队列分区等技术问题,将下层的音讯解决剥离出齐全的无状态计算层,次要实现协定适配、权限治理、生产状态、可观测运维体系反对,Broker 则持续专一于存储能力的继续优化。存算拆散的架构设计,使得从 SDK 接入到线上运维全链路带来全面晋升:
- 轻量版 SDK 的凋谢和全链路可观测零碎的晋升:同时反对 4.x 通信协议和全新的 gRPC 通信协议,并内置 OpenTelemetry 埋点反对,新版本 SDK 新增了 10 余个指标埋点。
- 音讯级负载平衡:新版本 SDK 不再参加理论存储队列的负载平衡,音讯负载平衡将更加轻量,以单条音讯为调度最小单元。
- 多网络拜访反对:新版本反对繁多实例同时裸露公网、内网等拜访模式,不便客户多网络接入拜访。
- 海量分级存储:新版本凋谢分级存储历史音讯保留能力,音讯低成本无大小限度,最长保留 30 天。冷热数据进行拆散设计,极大升高生产历史音讯对实例的性能影响。
RocketMQ 5.0 版本 能够反对 VPC 外部平安辨认,用户上云无需批改代码。在用户授予 EventBridge 网络和 RocketMQ 相干权限之后,用户在 EventBridge 创立 MQ 5.0 Source&Sink 工作的时,EventBridge 会依据 RocketMQ 5.0 实例的 VPC 信息,调用网络组件获取相应代理信息。MQ sdk 侧通过配置代理实现音讯的收发。
API 应用
相比于 4.0 实例,5.0 实例多了 VPC、交换机和平安组 3 个参数。
5.0 实例新增了 VPC 属性,用户须要在对应 vpc 内去拜访 MQ 5.0 实例。EventBridge 在取得用户受权之后,也是经由 5.0 实例对应的 VPC 内进行音讯的收发。创立工作时前端会主动填充好实例的 vpc 和交换机信息。
平安组参数限度了 EventBridge 在 vpc 内的拜访策略,用户能够抉择应用已有平安组也能够抉择疾速创立,让 EventBridge 疾速创立一个平安组供工作应用。平安组策略举荐应用默认的平安组策略。应用上举荐第一次在此 vpc 内创立工作时,应用 EventBridge 主动创立一个平安组,后续在此 VPC 内再创立其余工作时,在应用已有中抉择 EventBridge 创立的平安组。
EventBridge- 自建 Apache RocketMQ
针对用户在阿里云自建 Apache RocketMQ 集群的场景,EventBridge 也反对了音讯导出能力。用户通过配置接入点、topic、groupID、VPC 等信息,即可将自建集群中的音讯导入 EventBridge,进而对接 EventBridge 目前反对的大量上游生态。
业务架构
形象来看,EventBridge 拜访自建 MQ 实例的链路和阿里云 5.0 版本基本一致,都是从用户 vpc 发动对 MQ 实例的拜访。区别在于接入点的不同,前者是用户自建 MQ 集群的 nameserver,而后者为阿里云 RocketMQ 提供的接入点,不须要感知实在的 MQ 集群是部署在用户 vpc 还是阿里云 RocketMQ 本身的生产环境。
API 应用
在 API 应用方面,自建集群的大部分参数须要用户手动填入。
- 接入点:nameserver 地址。后续会反对 proxy 地址;
- Topic:RocketMQ Topic。抉择此 topic 作为事件源的读取对象或者事件指标的写入对象;
- Tag:RocketMQ 生产 Tag,用于消费者过滤音讯应用;
- Group ID:RocketMQ 生产组,标识一组特定的消费者,仅事件源有此参数;
- FilterType:过滤模式,目前反对 Tag 过滤;
- 认证模式:如果开启 ACL 鉴权,可在此配置鉴权信息;
- 生产位点:初始生产位点;
- VPC:自建 MQ 集群对应的 VPC 参数信息;
- 交换机:自建 MQ 集群对应的交换机信息;
- 平安组:EventBridge 应用此平安组拜访用户自建 MQ 集群,平安组规定了 EventBridge 在此 vpc 内的拜访策略。
RocketMQ 音讯路由
当用户有灾备或者音讯同步的需要时,可能就会须要音讯路由能力,行将 A region 下某实例 topic 的音讯同步到 B region 的某 topic 中。
对于 EventBridge 而言,音讯路由并非独自的一个产品能力,用户通过应用事件流即可实现音讯路由。
针对非跨境场景的音讯路由,如从北京同步音讯到上海,跨 region 网络买通能力由 EventBridge 来实现,用户无需关注过多实现细节。
针对跨境场景,如北京同步音讯到新加坡,EventBridge 应用的是公网链路实现对指标实例的写入,应用的是指标 MQ 实例的公网接入点。音讯出公网的能力须要用户提供,即须要用户提供 VPC、交换机和平安组配置,此 VPC 须带有 NAT 等拜访公网能力,EventBridge 应用此 VPC 实现写入指标端公网接入点。
在 API 应用方面,创立音讯路由工作实质上是创立事件流,API 参数和下面各类型 RocketMQ 实例工作统一,这里以创立一个青岛到呼和浩特的 RocketMQ 音讯路由为例。
1. 进入 EventBridge 控制台,regionBar 抉择到呼和浩特,点击左侧“事件流”,而后抉择“创立事件流”。
2. 在事件源页面,事件提供方抉择“音讯队列 RocketMQ 版”,地区抉择青岛,残余 RocketMQ 相干参数按需要抉择。
3. 规定页面按需填写,这里抉择默认内容。
4. 在“指标”页面,服务类型抉择“音讯队列 RocketMQ 版”,残余参数按需填写。
5. 点击“创立”,期待事件流工作启动即可。
总结
本文介绍了 EventBridge 对接各类型 RocketMQ 实例的基本原理与对应的 API 应用阐明,便于曾经应用了 RocketMQ 5.0 版本和自建 MQ 实例的用户能够借助 EventBridge 的能力实现事件驱动业务架构的搭建。同时针对灾备和业务音讯同步的场景,本文也基于事件流解说了如何基于 EventBridge 创立 RocketMQ 音讯路由工作。
欢迎您扫描下方二维码退出钉钉群一起沟通交流~
点击此处进入官网理解更多详情