乐趣区

关于阿里云:EventBridge消息路由|高效构建消息路由能力

作者:肯梦

企业数字化转型过程中,人造会遇到音讯路由,异地多活,协定适配,音讯备份等场景。本篇次要通过 EventBridge 音讯路由的利用场景和利用试验介绍,帮忙大家理解如何通过 EventBridge 的音讯路由高效构建音讯路由能力。

背景常识

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

  • 事件总线 EventBridge

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

  • 音讯队列 RabbitMQ 版

阿里云音讯队列 RabbitMQ 版反对 AMQP 协定,齐全兼容 RabbitMQ 开源生态以及多语言客户端,打造分布式、高吞吐、低提早、高可扩大的云音讯服务。开箱即用,用户无需部署免运维,轻松实现疾速上云,阿里云提供全托管服务,更业余、更牢靠、更平安。

  • 音讯队列 MNS 版

阿里云音讯服务 MNS 版是一款高效、牢靠、平安、便捷、可弹性扩大的分布式音讯告诉服务。MNS 可能帮忙利用开发者在他们利用的分布式组件上自在的传递数据、告诉音讯,构建松耦合零碎。

场景利用

EventBridge 音讯路由性能在构建在构建音讯零碎过程中次要利用于上面三个场景,一是音讯路由场景,二是音讯多活场景,三是多协定适配场景,上面对这三个场景进行简要介绍。

音讯路由场景

该场景是指心愿对音讯进行二次散发,通过简略过滤或者筛选将音讯散发到其余 Topic 或跨地区 Topic,实现音讯共享 & 音讯脱敏的场景。

通过一层转发将音讯分发给不同的 Topic 生产,是音讯路由的外围能力。随着企业转型遇到音讯拆分且做业务脱敏的场景会越来越多。如下图是一个较为典型的路由分流场景。

音讯多活场景

音讯多活场景指每个数据中心均部署了残缺、独立的 MQ 集群。数据中心内的应用服务只连贯本地的 MQ 集群,不连贯其余单元的 MQ 集群。MQ 集群中蕴含的音讯路由模块,负责在不同单元 MQ 集群之间同步指定主题的音讯。

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

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

多协定适配场景

随着业务团队的逐步宏大,对音讯的建设诉求一劳永逸,因为部门技术栈的不同会导致部门间的音讯协定也不尽相同。多协定适配是指用一种音讯协定平滑迁徙到多种音讯协定的能力。

架构形容

应用 EventBridge 的事件流能力做音讯路由,事件流模型是 EventBridge 在音讯畛域主打的解决模型,实用规范 Streaming(1:1)流式解决场景,无总线概念。用于端到端的音讯路由,音讯转储,音讯同步及解决等,帮忙开发者轻松构建云上数据管道服务。

上面的架构展现了如何通过桥接 EventBridge 实现 MNS 音讯路由至 RabbitMQ Queues,MNS Queues。(A/B 链路任选其一进行试验)

利用试验

指标

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

体验此试验后,能够把握的常识有:

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

资源

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

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

步骤

1)创立 MNS 资源

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

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

可依据趣味抉择不同场景。

本步骤将领导您如何通过控制台创立音讯队列 MNS 版。

应用您本人的阿里云账号登录阿里云控制台,而后拜访音讯队列 MNS 版控制台。[1]

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

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

创立实现后点击“详情”

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

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

留神:反复如上步骤即可创立 A 试验链路的“test-mns-q2”

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

本步骤将领导您如何通过控制台创立音讯队列 RabbitMQ 版。

应用您本人的阿里云账号登录阿里云控制台,而后拜访音讯队列 RabbitMQ 版控制台。[2]

在控制台右边导航栏中,单击实例列表。(资源地区为同地区即可,本次疏导默认选杭州)

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

创立实现后点击详情进入实例详情页;

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

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

3)创立 EventBridge 事件流工作  – MNS TO MNS(A 试验可选)

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

应用您本人的阿里云账号登录阿里云控制台,而后拜访 EventBridge 控制台。[3]

注:第一次应用需开明。

单击“事件流”列表,并在列表创立工作(资源地区为同地区即可,本次疏导默认选杭州)

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

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

指定规定,规定局部可不做筛选,默认匹配全副,间接点击下一步;

​留神:规定内容可依据需要自行指定,为升高难度本次试验默认投递全副,更多详情请查阅:​

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

服务类型抉择“音讯服务 MNS”,队列名称抉择“test-mns-q2”,音讯内容抉择“局部事件”,点击创立

​留神:音讯内容可依据需要自行指定,本次试验默认投递 data 字段,更多详情请查阅:​

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

创立实现后,可点击“启动”来启动事件流

4)创立 EventBridge 事件流工作 – MNS TO RabbitMQ(B 试验可选)

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

应用您本人的阿里云账号登录阿里云控制台,而后拜访 EventBridge 控制台。[3] 注:第一次应用需开明。

单击“事件流”列表,并在列表创立工作(资源地区为同地区即可,本次疏导默认选杭州)

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

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

指定规定,规定局部可不做筛选,默认匹配全副,间接点击下一步

​留神:规定内容可依据需要自行指定,为升高难度本次试验默认投递全副,更多详情请查阅:

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

服务类型抉择“音讯队列 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​​​​

创立实现后,可点击“启动”来启动事件流

5)验证路由工作

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

批改 sample.cfg

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

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

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

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

填完成果如下,保留

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

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

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

python sendmessage.py test-mns-q

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

留神:MNS Q 仅反对单订阅,不反对播送模式。故该测试须要将 MNS/RabbitMQ 两个试验,任选其一关停后进行试验。

如需播送模式,请创立 MNS Topic 资源。

A 链路试验后果:

B 链路试验后果:

劣势及总结

EventBridge 事件流提供端到端的音讯路由能力,通过简略配置即可实现音讯散发,音讯同步,跨地区音讯备份,跨产品音讯同步等能力。具备运维简略,成本低,效率高,应用稳固等劣势。同时应用 EventBridge 能够实现根底的数据过滤,数据脱敏等数据处理类能力。是音讯路由场景下运维老本最低的解决方案。

相干链接

​[1] 音讯队列 MNS 版控制台

[](https://mns.console.aliyun.co…)

https://mns.console.aliyun.co…

[2] 音讯队列 RabbitMQ 版控制台

[](https://amqp.console.aliyun.com/)

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

[3] EventBridge 控制台

[](https://eventbridge.console.a…)

https://eventbridge.console.a…

[4] 点击下载 MNS SDK

[](https://aliware-images.oss-cn…)

https://aliware-images.oss-cn…

[5] 阿里云 RAM 控制台

[](https://ram.console.aliyun.co…)

https://ram.console.aliyun.co…

[6] 事件流控制台

[](https://eventbridge.console.a…)
(https://eventbridge.console.a…)​

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

退出移动版