作者:肯梦

企业数字化转型过程中,天然会遇到音讯路由,异地多活,协议适配,音讯备份等场景。本篇首要经过 EventBridge 音讯路由的运用场景和运用试验介绍,协助大家了解怎么经过 EventBridge 的音讯路由高效构建音讯路由才能。

布景知识

EventBridge 音讯路由首要触及以下云产品和服务:

  • 事情总线 EventBridge

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

  • 音讯行列 RabbitMQ 版

阿里云音讯行列 RabbitMQ 版支持 AMQP 协议,彻底兼容 RabbitMQ 开源生态以及多语言客户端,打造分布式、高吞吐、低推迟、高可扩展的云音讯服务。开箱即用,用户无需布置免运维,轻松完结快速上云,阿里云供给全保管服务,更专业、更牢靠、更安全。

  • 音讯行列 MNS 版

阿里云音讯服务 MNS 版是一款高效、牢靠、安全、便捷、可弹性扩展的分布式音讯告诉服务。MNS 能够协助运用开发者在他们运用的分布式组件上自在的传递数据、告诉音讯,构建松耦合体系。

场景运用

EventBridge 音讯路由功能在构建在构建音讯体系过程中首要运用于下面三个场景,一是音讯路由场景,二是音讯多活场景,三是多协议适配场景,下面对这三个场景进行扼要介绍。

音讯路由场景

该场景是指期望对音讯进行二次分发,经过简略过滤或者筛选将音讯分发到其他 Topic 或跨地域 Topic,完结音讯同享 & 音讯脱敏的场景。

经过一层转发将音讯分发给不同的 Topic 消费,是音讯路由的中心才能。跟着企业转型遇到音讯拆分且做事务脱敏的场景会越来越多。如下图是一个较为典型的路由分流场景。

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

音讯多活场景

音讯多活场景指每个数据中心均布置了完好、独立的 MQ 集群。数据中心内的运用服务只衔接本地的 MQ 集群,不衔接其他单元的 MQ 集群。MQ 集群中包含的音讯路由模块,担任在不同单元 MQ 集群之间同步指定主题的音讯。

根据运用服务是否具有单元化才能,可分为中心服务和单元服务两类。中心服务只在一个数据中心供给服务;单元服务在各个数据中心都供给服务,但只担任契合规矩的部分用户,而非全量用户。

所有布置了单元服务的数据中心都是一个单元,所有单元的单元服务一起对外供给服务,然后构成一个异地多活架构或者叫单元化架构。经过多活管控渠道可动态调整各个单元服务担任的流量

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

多协议适配场景

跟着事务团队的逐步庞大,对音讯的建设诉求日积月累,由于部分技能栈的不同会导致部分间的音讯协议也不尽相同。多协议适配是指用一种音讯协议滑润迁移到多种音讯协议的才能。

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

架构描述

运用 EventBridge 的事情流才能做音讯路由,事情流模型是 EventBridge 在音讯范畴主打的处理模型,适用标准 Streaming(1:1)流式处理场景,无总线概念。用于端到端的音讯路由,音讯转储,音讯同步及处理等,协助开发者轻松构建云上数据管道服务。

下面的架构展示了怎么经过桥接 EventBridge 完结 MNS 音讯路由至 RabbitMQ Queues,MNS Queues。(A/B 链路任选其一进行试验)

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

运用试验

目标

经过本试验教程的操作,您能够经过阿里云操控台,在事情总线操控台中创立音讯路由服务,在 EventBridge 操控台完结音讯路由与简略的音讯脱敏。

体验此试验后,能够掌握的知识有:

  • 创立音讯路由使命;
  • 创立 RabbitMQ 实例、MNS 实例与简略的音讯发送。

资源

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

  • 资源一:EventBridge 事情总线
  • 资源二:阿里云音讯行列 RabbitMQ 版
  • 资源三:阿里云音讯行列 MNS 版

过程

1)创立 MNS 资源

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

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

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

可根据爱好挑选不同场景。

本过程将辅导您怎么经过操控台创立音讯行列 MNS 版。

运用您自己的阿里云账号登录阿里云操控台,然后拜访音讯行列MNS版操控台。 [1]

在操控台左面导航栏中,单击行列列表。(资源地域为同地域即可,本次引导默许选杭州)

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

在列表页面,单击创立行列并填写称号信息“test-mns-q”

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

创立完结后点击“概况”

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

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

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

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

留意:重复如上过程即可创立 A 试验链路的 “test-mns-q2”

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

2)创立 RabbitMQ 资源(B 试验可选)

本过程将辅导您怎么经过操控台创立音讯行列 RabbitMQ 版。

运用您自己的阿里云账号登录阿里云操控台,然后拜访音讯行列RabbitMQ版操控台。 [2]

在操控台左面导航栏中,单击实例列表。(资源地域为同地域即可,本次引导默许选杭州)

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

在列表页面,单击创立实例,并完结创立。

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

创立完结后点击概况进入实例概况页;

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

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

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

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

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

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

3)创立 EventBridge 事情流使命 – MNS TO MNS(A 试验可选)

本过程将辅导您怎么经过操控台创立 EventBridge 事情流。

运用您自己的阿里云账号登录阿里云操控台,然后拜访EventBridge 操控台。 [3]

注:第一次运用需开通。

单击“事情流”列表,并在列表创立使命 (资源地域为同地域即可,本次引导默许选杭州)

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

创立事情流称号为“test-amqp-mns2mns”,点击下一步;

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

指定事情源,事情供给方为“音讯服务 MNS”,行列称号为“test-mns-q”,点击下一步;

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

指定规矩,规矩部分可不做筛选,默许匹配悉数,直接点击下一步;

​留意:规矩内容可根据需求自行指定,为下降难度本次试验默许投递悉数,更多概况请查阅:​

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

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

服务类型挑选“音讯服务 MNS”,行列称号挑选“test-mns-q2”,音讯内容挑选“部分事情”,点击创立

​留意:音讯内容可根据需求自行指定,本次试验默许投递 data 字段,更多概况请查阅:​

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

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

创立完结后,可点击“发动”来发动事情流

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

4)创立 EventBridge 事情流使命 – MNS TO RabbitMQ(B 试验可选)

本过程将辅导您怎么经过操控台创立 EventBridge 事情流。

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

单击“事情流”列表,并在列表创立使命 (资源地域为同地域即可,本次引导默许选杭州)

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

创立事情流称号为“test-amqp-mns2rabbitmq”,点击下一步

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

指定事情源,事情供给方为“音讯服务 MNS”,行列称号为“test-mns-q”,点击下一步

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

指定规矩,规矩部分可不做筛选,默许匹配悉数,直接点击下一步

​留意:规矩内容可根据需求自行指定,为下降难度本次试验默许投递悉数,更多概况请查阅:

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

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

服务类型挑选“音讯行列 RabbitMQ 版别”,具体装备如下,点击创立

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

​留意:音讯内容可根据需求自行指定,本次试验默许投递 data 字段,更多概况请查阅:

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

创立完结后,可点击“发动”来发动事情流

5)验证路由使命

向 MNS Source “test-mns-q ” 发送试验音讯
点击下载MNS SDK [4]

修改 sample.cfg

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

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

AccessKeyId,AccessKeySecret 可在阿里云 RAM 操控台 [5] 创立

Endpoint 即过程 1 , MNS 公网接入点地址

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

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

填完作用如下,保存

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

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

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

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

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

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

python sendmessage.py test-mns-q

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

在事情流操控台 [6] ,别离点开 “test-mns-q2”, “test-amqp-q” 检查概况转储概况。

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

如需广播形式,请创立 MNS Topic 资源。

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

A 链路试验成果:

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

B 链路试验成果:

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

优势及总结

EventBridge 事情流供给端到端的音讯路由才能,经过简略装备即可完结音讯分发,音讯同步,跨地域音讯备份,跨产品音讯同步等才能。具有运维简略,成本低,效率高,运用安稳等优势。一起运用 EventBridge 能够完结根底的数据过滤,数据脱敏等数据处理类才能。是音讯路由场景下运维成本最低的解决方案。

相关链接

​[1] 音讯行列MNS版操控台

mns.console.aliyun.com/accounttrac…

[2] 音讯行列RabbitMQ版操控台

amqp.console.aliyun.com/

[3] EventBridge 操控台

eventbridge.console.aliyun.com/overview

[4] 点击下载 MNS SDK

aliware-images.oss-cn-hangzhou.aliyuncs.com/mns/sdk/pyt…

[5] 阿里云RAM 操控台

ram.console.aliyun.com/manage/ak

[6] 事情流操控台

(eventbridge.console.aliyun.com/cn-hangzhou…

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