EventBridge消息路由|高效构建消息路由能力

简介: 企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景。本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 EventBridge 的消息路由高效构建消息路由能力。

作者:肯梦


企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景。本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 EventBridge 的消息路由高效构建消息路由能力。


背景知识


EventBridge 消息路由主要涉及以下云产品和服务:


  • 事件总线 EventBridge


事件总线 EventBridge 是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS 应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件,帮助您轻松构建松耦合、分布式的事件驱动架构。


  • 消息队列 RabbitMQ 版


阿里云消息队列 RabbitMQ 版支持 AMQP 协议,完全兼容 RabbitMQ 开源生态以及多语言客户端,打造分布式、高吞吐、低延迟、高可扩展的云消息服务。开箱即用,用户无需部署免运维,轻松实现快速上云,阿里云提供全托管服务,更专业、更可靠、更安全。


  • 消息队列 MNS 版


阿里云消息服务 MNS 版是一款高效、可靠、安全、便捷、可弹性扩展的分布式消息通知服务。MNS 能够帮助应用开发者在他们应用的分布式组件上自由的传递数据、通知消息,构建松耦合系统。


场景应用


EventBridge 消息路由功能在构建在构建消息系统过程中主要应用于下面三个场景,一是消息路由场景,二是消息多活场景,三是多协议适配场景,下面对这三个场景进行简要介绍。


消息路由场景


该场景是指希望对消息进行二次分发,通过简单过滤或者筛选将消息分发到其他 Topic 或跨地域 Topic,实现消息共享 & 消息脱敏的场景。


通过一层转发将消息分发给不同的 Topic 消费,是消息路由的核心能力。随着企业转型遇到消息拆分且做业务脱敏的场景会越来越多。如下图是一个较为典型的路由分流场景。image.gif


1.png


消息多活场景


消息多活场景指每个数据中心均部署了完整、独立的 MQ 集群。数据中心内的应用服务只连接本地的 MQ 集群,不连接其他单元的 MQ 集群。MQ 集群中包含的消息路由模块,负责在不同单元 MQ 集群之间同步指定主题的消息。


根据应用服务是否具有单元化能力,可分为中心服务和单元服务两类。中心服务只在一个数据中心提供服务;单元服务在各个数据中心都提供服务,但只负责符合规则的部分用户,而非全量用户。


所有部署了单元服务的数据中心都是一个单元,所有单元的单元服务同时对外提供服务,从而形成一个异地多活架构或者叫单元化架构。通过多活管控平台可动态调整各个单元服务负责的流量。image.gif


2.png


多协议适配场景


随着业务团队的逐渐庞大,对消息的建设诉求与日俱增,由于部门技术栈的不同会导致部门间的消息协议也不尽相同。多协议适配是指用一种消息协议平滑迁移到多种消息协议的能力。


3.png

image.gif

架构描述


使用 EventBridge 的事件流能力做消息路由,事件流模型是 EventBridge 在消息领域主打的处理模型,适用标准 Streaming(1:1)流式处理场景,无总线概念。用于端到端的消息路由,消息转储,消息同步及处理等,帮助开发者轻松构建云上数据管道服务。


下面的架构展示了如何通过桥接 EventBridge 实现 MNS 消息路由至 RabbitMQ Queues,MNS Queues。(A/B 链路任选其一进行试验)image.gif


4.png

应用实验


目标


通过本实验教程的操作,您可以通过阿里云控制台,在事件总线控制台中创建消息路由服务,在 EventBridge 控制台实现消息路由与简单的消息脱敏。


体验此实验后,可以掌握的知识有:


  • 创建消息路由任务;
  • 创建 RabbitMQ 实例、MNS 实例与简单的消息发送。


资源


使用到的资源如下:(本次实验资源遵循最小原则,使用满足场景需求的最小化资源)


  • 资源一:EventBridge 事件总线
  • 资源二:阿里云消息队列 RabbitMQ 版
  • 资源三:阿里云消息队列 MNS 版


步骤


1)创建 MNS 资源


5.png


本实验分 A /B 两个可选场景:


A 、场景通过 MNS Queues1 投递至 MNS Queues2
B 、场景通过 MNS Queues1 投递至 RabbitMQ Queues


可根据兴趣选择不同场景。


本步骤将指导您如何通过控制台创建消息队列 MNS 版。


使用您自己的阿里云账号登录阿里云控制台,然后访问消息队列MNS版控制台[1]


在控制台左边导航栏中,单击队列列表。(资源地域为同地域即可,本次引导默认选杭州)


6.png


在列表页面,单击创建队列并填写名称信息“test-mns-q”


7.pngimage.gif


创建完成后点击“详情”


8.png

image.gif

找到 MNS 公网接入点信息,并记住该信息,后续实验会用到。


E.g.http://1825725063814405.mns.cn-hangzhou.aliyuncs.com

image.gif

9.png


注意:重复如上步骤即可创建 A 实验链路的 “test-mns-q2”


10.png

image.gif

2)创建 RabbitMQ 资源(B 实验可选)


本步骤将指导您如何通过控制台创建消息队列 RabbitMQ 版。


使用您自己的阿里云账号登录阿里云控制台,然后访问消息队列RabbitMQ版控制台[2]


在控制台左边导航栏中,单击实例列表。(资源地域为同地域即可,本次引导默认选杭州)
image.gif

11.png


在列表页面,单击创建实例,并完成创建。
image.gif

12.png


创建完成后点击详情进入实例详情页;


13.png

image.gif

在“Vhost 列表” 创建 “test-amqp-v”;


14.png

image.gif

在“Queue 列表” ,选择 Vhost 为“test-amqp-v”,并创建 “test-amqp-q”;


15.png16.png


3)创建 EventBridge 事件流任务  - MNS TO MNS(A 实验可选)


本步骤将指导您如何通过控制台创建 EventBridge 事件流。


使用您自己的阿里云账号登录阿里云控制台,然后访问 EventBridge 控制台[3]

注:第一次使用需开通。


单击“事件流”列表,并在列表创建任务 (资源地域为同地域即可,本次引导默认选杭州)


17.png

image.gif

创建事件流名称为“test-amqp-mns2mns”,点击下一步;


18.png

image.gif

指定事件源,事件提供方为“消息服务 MNS”,队列名称为“test-mns-q”,点击下一步;


19.png

image.gif

指定规则,规则部分可不做筛选,默认匹配全部,直接点击下一步;


注意:规则内容可根据需求自行指定,为降低难度本次实验默认投递全部,更多详情请查阅:

https://help.aliyun.com/document_detail/181432.html

image.gif

20.png


服务类型选择“消息服务 MNS”,队列名称选择“test-mns-q2”,消息内容选择“部分事件”,点击创建


注意:消息内容可根据需求自行指定,本次实验默认投递 data 字段,更多详情请查阅:

https://help.aliyun.com/document_detail/181429.html

image.gif

21.png


创建完成后,可点击“启动”来启动事件流


22.png

image.gif

4)创建 EventBridge 事件流任务 - MNS TO RabbitMQ(B 实验可选)


本步骤将指导您如何通过控制台创建 EventBridge 事件流。


使用您自己的阿里云账号登录阿里云控制台,然后访问 EventBridge 控制台[3]注:第一次使用需开通。


单击“事件流”列表,并在列表创建任务 (资源地域为同地域即可,本次引导默认选杭州)


23.png

image.gif

创建事件流名称为“test-amqp-mns2rabbitmq”,点击下一步


24.png


指定事件源,事件提供方为“消息服务 MNS”,队列名称为“test-mns-q”,点击下一步


25.png


指定规则,规则部分可不做筛选,默认匹配全部,直接点击下一步


注意:规则内容可根据需求自行指定,为降低难度本次实验默认投递全部,更多详情请查阅:

https://help.aliyun.com/document_detail/181432.html


26.png


服务类型选择“消息队列 RabbitMQ 版本”,具体配置如下,点击创建

实例ID:选择创建好的RabbitMQ ID
Vhost:选择“test-amqp-v”
目标类型:选择“Queue”
Queue:选择“test-amqp-q”
Body:选择“部分事件”,填写“$.data”
MessageId:选择“常量”,填写“0”
Properties:选择“部分事件”,填写“$.source”

注意:消息内容可根据需求自行指定,本次实验默认投递 data 字段,更多详情请查阅:

https://help.aliyun.com/document_detail/181429.html

image.gif

image.gif27.png28.png


创建完成后,可点击“启动”来启动事件流


5)验证路由任务


向 MNS Source  “test-mns-q ” 发送实验消息

点击下载 MNS SDK[4]


修改 sample.cfg


29.png

image.gif

在 “sample.cfg ” 填写 AccessKeyId,AccessKeySecret,Endpoint 等信息


AccessKeyId,AccessKeySecret 可在阿里云 RAM 控制台[5]创建


Endpoint 即步骤 1 , MNS 公网接入点地址image.gif


30.png

AccessKeyId = LTAI5t96yU2S2E84BYsNNQ33
AccessKeySecret = xxxxxxx
Endpoint = http://1825725063814405.mns.cn-hangzhou.aliyuncs.com

填完效果如下,保存image.gif


31.png


找到 sample 目录的“sendmessage.py” 示例


32.png


将循环参数调整为 200,并保存 (可选)


33.png


保存并运行 “python sendmessage.py test-mns-q”

python sendmessage.py test-mns-q


34.png

image.gif

事件流控制台[6],分别点开 “test-mns-q2”, “test-amqp-q” 查看详情转储详情。


注意:MNS Q 仅支持单订阅,不支持广播模式。故该测试需要将 MNS/RabbitMQ 两个实验,任选其一关停后进行实验。


如需广播模式,请创建 MNS Topic 资源。image.gif


35.png


A 链路实验结果:


36.png

image.gif

B 链路实验结果:
image.gif

37.png


优势及总结


EventBridge 事件流提供端到端的消息路由能力,通过简单配置即可完成消息分发,消息同步,跨地域消息备份,跨产品消息同步等能力。具有运维简单,成本低,效率高,使用稳定等优势。同时使用 EventBridge 可以实现基础的数据过滤,数据脱敏等数据处理类能力。是消息路由场景下运维成本最低的解决方案。


相关链接


[1] 消息队列MNS版控制台

https://mns.console.aliyun.com/accounttraceid=a42e9ca8e911475087856852d4526c4dsjeq


[2] 消息队列RabbitMQ版控制台

https://amqp.console.aliyun.com/


[3] EventBridge 控制台

https://eventbridge.console.aliyun.com/overview


[4] 点击下载 MNS SDK

https://aliware-images.oss-cn-hangzhou.aliyuncs.com/mns/sdk/python/aliyun-mns-python-sdk-1.1.6.zip?spm=a2c4g.11186623.0.0.516e7538twGvPp&file=aliyun-mns-python-sdk-1.1.6.zip


[5] 阿里云RAM 控制台

https://ram.console.aliyun.com/manage/ak


[6] 事件流控制台

https://eventbridge.console.aliyun.com/cn-hangzhou/event-streamings


点击文末 “此处”,进入阿里云 EventBridge 官网,了解更多详情~

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
弹性计算 JSON 监控
EventBridge:构建SaaS应用集成的桥梁,让数据流动成为一场精彩的交响乐!
【8月更文挑战第8天】在云计算时代,SaaS应用因灵活性和可扩展性备受青睐,但多应用环境下的数据共享成为挑战。Amazon EventBridge作为一款无服务器事件总线服务,支持应用程序、SaaS应用及AWS服务间的事件驱动交互。它简化了事件产生、路由与处理流程,支持自定义与内置事件,实现应用间松耦合集成,提升系统可维护性和扩展性。通过定义业务相关事件、创建事件模式及规则,可轻松配置目标动作(如Lambda函数),实现如新订单触发CRM更新等场景。EventBridge提供高效灵活的集成方式,有助于提高应用响应性和可扩展性,成为云架构师不可或缺的技能之一。
47 7
|
4月前
|
Kubernetes Serverless 开发工具
代码提交即部署:Argo Workflows与EventBridge构建自动化CI
ACK One Serverless Argo工作流和EventBridge简单快速、高效、低成本地交付您的应用,为您实现代码提交即构建/交付的自动化CI系统。
|
消息中间件 开发工具 Python
使用 EventBridge 实现消息路由
通过本教程的操作,您可以通过阿里云控制台,在事件总线控制台中创建消息路由服务,在 EventBridge 控制台实现消息路由与简单的消息脱敏。
|
消息中间件 Serverless API
Apache RocketMQ EventBridge,构建下一代事件驱动引擎
本文主要介绍了事件以及特性,优秀的事件驱动引擎,需要具备的能力以及Apache RocketMQ EventBridge是如何做的。
|
消息中间件 运维 监控
基于 EventBridge API Destination 构建 SaaS 集成实践方案
本次新增集成中心(Integration Center)是负责 EventBridge 与外界系统对接的模块,通过抽象与配置快速获取第三方事件并将事件集成到第三方系统。并且优化现有 HTTP Sink 集成方案,为用户下游集成创造更多适配场景。
319 0
基于 EventBridge API Destination 构建 SaaS 集成实践方案
|
消息中间件 SQL 数据采集
EventBridge 生态实践:融合 SLS 构建一体化日志服务
本文将从 SLS 在 EventBridge上 的使用以及若干最佳实践场景等方面,为大家介绍如何基于 EventBridge 构建 SLS 相关应用。
289 0
EventBridge 生态实践:融合  SLS 构建一体化日志服务
|
消息中间件 SQL canal
融合数据库生态:利用 EventBridge 构建 CDC 应用
近期,EventBridge 事件流已经支持了基于阿里云 DTS服务的 CDC 能力。本文将从 CDC、CDC 在 EventBridge 上的应用以及若干最佳实践场景等方面,为大家介绍如何利用 EventBridge 轻松构建 CDC 应用。
396 0
融合数据库生态:利用  EventBridge 构建 CDC 应用
|
SQL 存储 消息中间件
基于 EventBridge 构建数据库应用集成
本文重点介绍 EventBridge 的新特性:数据库 Sink 事件目标。
246 0
基于 EventBridge  构建数据库应用集成
|
消息中间件 JSON 自然语言处理
基于 EventBridge 构建 SaaS 应用集成方案
事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。
277 0
基于 EventBridge 构建 SaaS 应用集成方案
|
6月前
|
消息中间件 监控 Kubernetes
基于EventBridge HTTP Source构建SaaS应用集成的最佳实践
本文将介绍基于EventBridge HTTP Source构建SaaS应用集成的最佳实践。
116 0
基于EventBridge HTTP Source构建SaaS应用集成的最佳实践
下一篇
无影云桌面