rocketmq集成生态再升级:轻松构建云上数据管道

阿里云云栖号 阿里云云栖号     2023-04-04     403

关键词:

阿里云消息队列 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 接入到线上运维全链路带来全面提升:

  1. 轻量版 SDK 的开放和全链路可观测系统的提升:同时支持 4.x 通信协议和全新的 gRPC 通信协议,并内置 OpenTelemetry 埋点支持,新版本 SDK 新增了 10 余个指标埋点。
  2. 消息级负载均衡:新版本 SDK 不再参与实际存储队列的负载均衡,消息负载均衡将更加轻量,以单条消息为调度最小单元。
  3. 多网络访问支持:新版本支持单一实例同时暴露公网、内网等访问形式,方便客户多网络接入访问。
  4. 海量分级存储:新版本开放分级存储历史消息保存能力,消息低成本无大小限制,最长保存 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 消息路由任务。

作者:昶风

原文链接

本文为阿里云原创内容,未经允许不得转载。

“云网管”-云上构建网络自动化体系

简介:云网管是基于阿里云网络多年技术和经验沉淀打造的云上智能网络管理运维平台,提供企业网络全生命周期管理运维的能力,让部署更快捷、运维更高效、网络更透明。云网管更多内容:https://yqh.aliyun.com/li... 查看详情

云网管—云上构建网络自动化体系

简介: 云网管是基于阿里云网络多年技术和经验沉淀打造的云上智能网络管理运维平台,提供企业网络全生命周期管理运维的能力,让部署更快捷、运维更高效、网络更透明。1.背景云网管是基于阿里云网络多年技... 查看详情

基于rocketmq构建阿里云事件驱动引擎eventbridge

简介:阿里云事件总线EventBridge作为云上的事件枢纽,最核心的能力是连接。无论是在线业务场景、IoT场景、还是大数据场景,无论是阿里云、其他云厂商,还是私有IDC机房,我们都将提供安全可靠的集成方式... 查看详情

剑指serverless,入围forresterwave,6.5lts预览,tidb多元数据生态再升级|pingcapdevcon2022

2022年12月1日-3日,由PingCAP主办的年度数据技术盛会PingCAPDevCon2022在线上成功举行。本届DevCon以"去发现,去挑战"为主题,邀请了多位行业意见领袖、专家学者和70多位来自全球的技术大咖聚焦云原生、HTAP、Serverle... 查看详情

事件总线+函数计算构建云上最佳事件驱动架构应用

...less函数计算(FunctionCompute,FC)宣布全面深度集成已经过去一年。站在系统元数据互通,产品深度集成的肩膀上,这一年我们又走过了哪些历程?从事件总线到事件流,从基于CloudEvents的事件总线触 查看详情

基于rocketmqconnect构建数据流转处理平台

RocketMQ是一个可靠的数据集成组件,具备分布式、伸缩性、故障容错等能力,可以实现RocketMQ与其他数据系统之间的数据流入与流出。通过RocketMQConnect可以实现CDC,构建数据湖,结合流计算可实现数据价值。作者:周波,阿里云... 查看详情

飞天政务开放体系:数据为中心的云上政务平台与创新生态

在2017云栖大会-南京峰会上,阿里云政府业务架构总监史大治做了题为《飞天政务开放体系与智能服务》的分享。对于政务工作而言,面临着政务服务与政务数据的深度、广度不断上升,丰富的技术和应用不断涌现,业务不断融... 查看详情

springboot集成rocketmq实现消息实时推送(待完成中。。。)

最近用SpringBoot集成RocketMQ实现消息实时推送,一直卡在本地启动RocketMQ失败。现在先记录一下,以后看时间解决。当然,如果有好心的朋友,可以提供解决方案(#^.^#)。我用的是Apache包,SpringBoot有RocketMQstarter,这个后面再讲。1<... 查看详情

springcloud-springcloud之stream构建消息驱动微服务框架;springcloudalibaba集成rocketmq(二十四)(代码片段)

阅读本文前可先参考SpringCloud-SpringCloud之Stream构建消息驱动微服务框架;RabbitMQ(十九)_MinggeQingchun的博客-CSDN博客_springcloudstream一、SpringCloudStream在微服务的开发过程中,会经常用到消息中间件,通过消息中间... 查看详情

rocketmq消息集成:多类型业务消息-普通消息

引言ApacheRocketMQ诞生至今,历经十余年大规模业务稳定性打磨,服务了100%阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案,RocketMQ从创建之初就一直专注于业务集成领域的异步通信... 查看详情

rocketmq消息集成:多类型业务消息-定时消息

引言ApacheRocketMQ诞生至今,历经十余年大规模业务稳定性打磨,服务了100%阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案,RocketMQ从创建之初就一直专注于业务集成领域的异步通信... 查看详情

深度解读!阿里统一应用管理架构升级的教训与实践(代码片段)

...难题。但棘手的是,这个问题并不是简单把PaaS迁移或者集成到Kubernetes上来就能够解决的:PaaS与Kubernetes之间,从来就没有存在这样一条清晰的分界线,可是Kubernetes本身又并不是面向最终用户设计的。如何既让全公司的研发和运... 查看详情

ai模型社区“魔搭”亮相,平头哥又上新,端云一体生态再升级

11月3日,2022年云栖大会正式拉开帷幕。云计算、数据智能、操作系统、城市大脑、自研芯片等前沿技术应用悉数亮出,为参会者奉上了一场技术盛宴。今年有哪些黑科技?下面我们先睹为快。新型计算体系带来三大... 查看详情

张平安:加快云上数字创新,共建产业智慧生态

...届全球深商大会,以“加快云上数字创新,共建产业智慧生态”为主题发表演讲。本文分享自华为云社区《张平安:加快云上数字创新,共建产业智慧生态》,作者:华为云头条。7月4日,由深圳市光明区人民政府、深圳市深商... 查看详情

教你轻松掌握数据仓库的规划和构建策略

...仓库作为决策支持系统(DSS)的基础,具有面向主题的、集成的、不可更新的、随时间不断变化的特参考技术A教你轻松掌握数据仓库的规划和构建策略数据仓库作为决策支持系统(DSS)的基础,具有面向主题的、集成的、不可... 查看详情

开启云上高效开发新时代,华为云开发者日东莞站成功举办

...研院所的开发人员。全方位服务与赋能开发者围绕华为云生态“知、学、用、创、商”成长路径,通过前沿技术分享、场景化动手体验、优秀应用创新推介,为开发者提供沉浸式学习与交流平台。活动现场,华为云开发者生态领... 查看详情

云上大数据存储:探究juicefs与hdfs的异同

HDFS作为Hadoop提供存储组件,已经成为大数据生态里面数据存储最常用的选择,通常在机房环境部署。JuiceFS是一个基于对象存储的分布式文件系统,用户可以在云上快速地搭建按需扩容的弹性文件系统。如果企业正在考虑在云上... 查看详情

阿里云上构建本地仓库dockerimages

第一步,先在阿里云https://cr.console.aliyun.com/cn-hangzhou/namespaces上创建命名空间,再根据命名空间创建镜像仓库第二步,本地上传images到阿里云容器镜像市场1.本地创建images[[email protected]~]#dockercommittest_centosxxxxx_test/test:v1sha256:7af8... 查看详情