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

简介:企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景。本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 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”,点击下一步;

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

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

事件模式 - 事件总线EventBridge - 阿里云

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

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

事件内容转换 - 事件总线EventBridge - 阿里云

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

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

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

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

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

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

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

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

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

事件模式 - 事件总线EventBridge - 阿里云

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

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

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

事件内容转换 - 事件总线EventBridge - 阿里云

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

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 可以实现基础的数据过滤,数据脱敏等数据处理类能力。是消息路由场景下运维成本最低的解决方案。

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪吒汽车选择BlackBerry QNX为中国新能源轿跑——哪吒S保驾护航

BlackBerry与合众新能源汽车有限公司近日宣布达成合作,合众汽车旗下汽车品牌——中国造车新势力哪吒汽车,在其即将量产的运动型智享轿跑——哪吒S中搭载了BlackBerry QNX为其保驾护航,旨在确保关键系统的功能安全、网络安全与可靠性的同时&am…

异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题

简介:本文分为三个部分:概述中引入了积压问题,并介绍了函数计算异步调用基本链路;并在指标介绍部分详细介绍了指标查看方式,分类解读了不同的指标含义;最后以一个常见的异步请求积压场景为例,介…

并发-分布式锁质量保障总结

简介:并发问题是电商系统最常见的问题之一,例如库存超卖、抽奖多发、券多发放、积分多发少发等场景;之所以会出现上述问题,是因为存在多机器多请求同时对同一个共享资源进行修改,如果不加以限制,将导致数据…

以网强算,中国移动算网建设激发澎湃能量

近日,在首届中国算力大会上,中国工程院院士张宏科发表演讲认为,“信息网络已经成为大国博弈的核心与关键,面临机遇期,我们亟需新型网络体系与技术创新,满足自主可控和建设网络强国的重大战略需求&#xff0…

云上的移动性能测试平台

简介:功能决定现在,性能决定未来。欢迎大家围观《云上的移动性能测试平台》, 了解EMAS性能测试平台的能力与规划。 1. 功能决定现在,性能决定未来 性能测试在移动测试领域一直是一个大难题,它最直观的表现是用户在前…

Docker 镜像和容器的导入导出及常用命令

作者 | 微枫Micromaple来源 | CSDN博客Docker 镜像和容器的导入导出1.1 镜像的导入导出1.1.1 镜像的保存通过镜像ID保存方式一:docker save image_id > image-save.tar例如:rootUbuntu:/usr/local/docker/nginx# docker imagesREPOSITORY TAG …

阿里云「低代码音视频工厂」正式上线,为企业用户打造音视频应用开发最短路径

简介:vPaaS全新定义企业级音视频应用开发 1月5日,阿里云视频云“低代码音视频工厂vPaaS“正式上线,极大程度降低音视频开发门槛,打破传统音视频技术壁垒,全新定义企业级的音视频应用开发。 低代码音视频工厂基于云原生…

数组方法 包含es6

有回调函数的方法都有两个参数(不写默认是window) 例:map,forEach,find let arr[1,2,3,4]; let obj{a:1,b:2}; let _thisnull; arr.map(v>{_thisthisreturn v1 },obj) console.log(_this) 数组方法细则 方法功能参数返回值是…

阿里开源支持10万亿模型的自研分布式训练框架EPL(EasyParallelLibrary)

简介:EPL背后的技术框架是如何设计的?开发者可以怎么使用EPL?EPL未来有哪些规划?今天一起来深入了解。 作者 | 王林、飒洋 来源 | 阿里技术公众号 一 导读 最近阿里云机器学习PAI平台和达摩院智能计算实验室一起发布“低碳版”巨…

如何从 Docker 镜像里提取 dockerfile!

作者 | A-刘晨阳来源 | CSDN博客今天给大家分享一下 dockerfile 里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取 dockerfile。从镜像中提取dockerfile的两种方法。history参数我们可以直接用docker自带的参数来查看镜像的dockerfile,但有…

新品发布|备案变更不用再担心中断服务啦

简介:ICP备案迁移服务,就是面向有计划变更域名备案主体,或者在不同主体间迁移网站备案信息的客户,实现迁移过程中域名或者网站服务不中断的备案增值服务。 说起ICP备案,做过互联网经营业务的朋友都很熟悉,…

一眼定位问题,函数计算发布日志关键词秒检索功能

简介:当 FaaS 应用出现很多报错,且调用日志页面的请求过多时,如何才能简单、快速地查到出现 bug 的原因? 听说这个问题你也遇到了? 小王是一名程序员,最近在使用 FaaS &#xff08…

如何在 Linux 中使用 rsync 传输文件

作者 | 刘光录来源 | TIAPrsync(远程同步,Remote Sync)是一种在系统中或两个系统之间复制文件和目录的同步工具。rsync 的一个最大的优点,就是它只复制更改的文件,因而可以减少 CPU 消耗,在复制文件时节省带…

国民级消消乐背后的网络技术支持:不畏巨“峰”,“运”筹帷幄

简介:近日,阿里云网络携手乐元素共同部署建设了基于7层业务自动化调度的弹性网络架构,进一步提升乐元素在用户服务上的娱乐体验。提到乐元素相信大家都不陌生,作为从事移动网络游戏的研发、运营及广告平台,其代表作就是…

透析阿里云视频云「低代码音视频工厂」之能量引擎——vPaaS视频原生应用开发平台

简介:支撑15分钟上线高品质专属音视频平台 为满足企业用户极速搭建高品质专属音视频业务的需求,阿里云视频云的“低代码音视频工厂”应运而生,但极速而高品质的平台搭建诉求,需要用全新的开发方式才能真正实现,而全新…

自动驾驶“稳打地基”,小鹏汽车基于阿里云建自动驾驶AI智算中心算力可达600PFLOPS

数据驱动是自动驾驶发展的公认方向,也让自动驾驶模型训练成为一头“吃算力”的巨兽。自动驾驶的视觉检测、轨迹预测与行车规划等算法模型,有赖于机器学习海量数据集,但算力的不足让研发速度仍远远赶不上数据量增长的速度。随着传感器的进一步…

阿里云视频云「 vPaaS 」演绎了怎样的音视频应用开发「未来图景」

简介:前瞻音视频平台的演进未来 vPaaS是阿里云视频云最新推出的低代码音视频应用开发产品,其中,vPaaS低代码音视频工厂,彻底打破了音视频应用的繁冗技术开发壁垒;vPaaS视频原生应用开发平台,全新定义了音视…

鲲鹏开发者创享日2022:鲲鹏全栈创新 与开发者共建数字湖南

由华为推出的面向鲲鹏计算产业全栈开发者的系列活动——鲲鹏开发者创享日2022于8月5日在长沙成功举办。这场被称为开发者“技术嘉年华”的峰会,汇聚了国内顶尖技术大咖、科研带头人、知名企业技术专家及高校开发者,描绘了计算产业发展趋势和蓝图&#xf…

MySQL 深潜 - MDL 锁的实现与获取机制

简介:本文将介绍在 MDL 系统中常用的数据结构及含义,然后从实现角度讨论 MDL 的获取机制与死锁检测,最后分享在实践中如何监控 MDL 状态。 作者 | 泊歌 来源 | 阿里技术公众号 一 背景 为了满足数据库在并发请求下的事务隔离性和一致性要求…

深度解说阿里云 Serverless Kubernetes

简介:听阿里云技术专家聊聊 Serverless Kubernetes 一路走来的发展史,看看它是如何做到兼容 Kubernetes 使用方式的同时,拥有免运维和极致弹性等特点~ 作者 | 陈晓宇(阿里云技术专家) 策划 | 褚杏娟 伴随着云原生的…