基于 EventBridge 轻松搭建消息集成应用

news2024/10/2 6:37:18

作者:昶风

前言

本篇文章主要介绍基于阿里云 EventBridge 的消息集成能力,结合目前消息产品的需求热点,从能力范围到场景实战,对 EventBridge 的消息集成解决方案进行了概要的介绍。

从消息现状谈起

消息队列作为应用解耦,流量削峰填谷的有效工具,早已被开发者广泛应用于各类分布式服务中。随着业务的不断发展迭代,越来越多的服务面临着稳定性和可维护方面的挑战,对消息队列的需求也不再局限于普通的订阅-消费,这里列举 3 个场景的能力需求:

消息路由能力

这里主要的需求场景是数据同步和异地灾备。对于大多数消息队列用户而言,消息队列中的业务数据一般由一类服务来消费和处理,当用户有多个应用,且需要一个全局视野来汇总分析这些不同应用的数据时,消息路由就成了一个避不开的能力需求。同样,出于数据灾备的考虑,云上大用户通常也有在不同 region 同步消息数据的需求。

图片

但在云上实现消息路由可能并不是一件容易的事情。众所周知,云上个 region 之间网络是严格隔离的,用户想要实现数据的跨 region 传输,要么使用 CEN 等网络打通方案,要么使用公网进行数据传输。前者需要业务在设立之初就有完备的网络规划,同时 CEN 的费用成本也是一笔不小的开销;后者则需要考虑公网带宽成本,和将数据暴露在公网所面临的安全问题。

消息加工能力

设想这样一个场景,电商平台上,用户的订单信息是由 RocketMQ 来负责承载的,下游的支付、库存、营销部门都需要消费订单信息,由于历史和技术栈原因,这几个部门使用的消息产品类型各不相同,分别是 RocketMQ、RabbitMQ 和 Kafka,而且这几个部门所需要的并不是全量的原始消息,而是部分自己感兴趣的。同时,自身的接口也对数据 schema 做出了一定的要求,并不期望原始消息投递过来。

图片

此时,单纯的消息路由似乎也不能满足需求。如果这项任务交给一款产品来处理,那么这款产品需要满足 2 点能力,第一就是将消息路由至其他种类消息产品的能力,另外一点就是必须具备数据的过滤加工能力。

生态扩展能力

传统消息用户,其消息的生命周期仅在自身业务的发送与消费阶段。但在万物上云的今天,如果可以利用种类繁多,功能强大的各类云产品来丰富消息的上下游,则将极大地发掘消息数据的潜在价值。例如用户可能需要将 SLS 的日志数据导入到消息队列,以实现离线的数据加工能力;又或者可能需要将消息队列中的数据用于触发函数计算,以实现整个应用的 Serverless 化。

图片

但现状是,用户如果自身去实现各个生态产品的对接,则面临着开发工作量大,后续维护繁琐的问题。最理想的方式是有一款开箱即用的工具,能够对接足够多的生态,而且本身使用也尽量简单。那么是否有一款云产品可以解决以上问题,帮助消息用户实现便捷、可靠的消息集成能力呢?这里就需要介绍本期的主角:阿里云事件总线 EventBridge。

事件总线与消息集成

事件总线 EventBridge 是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS 应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件。

EventBridge 的核心能力可以归纳为 3 点:统一事件服务、数据管道与开放与集成。

图片

  • 统一事件服务

    在 EventBridge 出现之前,各个云产品的事件相互独立,用户无法在一个地方地方完成对全部云产品事件的收集和处理。EventBridge 的出现打破了这一局面,其收纳了云上的绝大多数云产品事件,并在用户侧提供统一、体系的展示交互,让云上用户可以更加系统的梳理、处理云产品事件。

  • 数据管道

    EventBridge 并不简简单单仅覆盖云上事件,也提供数据管道的能力,实现数据的联通交互。例如用户可以使用 EventBridge 创建消息路由任务,将消息队列中的数据导入到其他消息队列,也可以创建任务将 SLS 中的日志数据导入到消息队列中来。目前 EventBridge 在源端和目标端均有丰富的产品种类支持。

  • 开放与集成

    EventBridge 开放了多种语言的 SDK,方便不同技术栈的开发者可以快速方便的使用 EventBridge。同时 EventBridge 也兼容了云上标准 Cloudevents 的 sdk,即用户使用业界开源 sdk 也可以方便的将事件投递至 EventBridge。在事件 schema 定义上,EventBridge 采用了目前云上事件的事实标准 cloudevents 1.0,保证了使用其他事件服务的客户可以无缝迁移到阿里云 EventBridge,其在阿里云 EventBridge 上的事件也可以快速接入到其他主流 EDA 引擎,避免了厂商锁定的情况。

针对第一部分谈及的消息用户面临的问题,EventBridge 在消息集成领域提供了完整的解决方案,具体包括消息流转(也称为消息路由)能力解决方案,消息处理能力解决方案与生态支持能力解决方案。

图片

消息流转解决方案

目前 EventBridge 已经支持了云上大部分消息产品的接入,如 RocketMQ、RabbitMQ、Kafka、MNS 和 MQTT。使用这些消息产品的用户,可以在对应消息产品的控制台,消息流入流出页面,或者是 EventBridge 的控制台来创建对应的路由任务。

图片

针对部分云上用户的需求,EventBridge 还支持跨 region 和跨账号的消息路由。

针对跨 region 场景,当用户需要创建北京到上海的消息路由时,在消息队列控制台消息流入流出页面,选择好对应的源实例信息和目标实例信息,一键创建启动即可。

当用户有跨账号消息路由的需求(例如一家公司不同部门各自拥有独立账号,需要对各部门进行数据汇总的场景)时,使用 EventBridge 的事件总线可以完成不同账号间数据的同步。具体详细创建任务步骤可以参考 EventBridge 的官方文档。

当用户自身的消息源不是云上产品时,目前 EventBridge 也提供了多种便捷的方式帮助用户快速对接。如果用户是在云上自建的消息服务,如自建 RocketMQ,EventBridge 已经支持用户通过简单的配置快速将消息数据接入进来。如果用户服务是部署在自建机房,使用的消息产品并非云上已支持的产品,这个时候用户也可以使用 EventBridge 提供的 sdk 主动将事件投递上来,进而写入到云上各类丰富的下游云产品,此类场景适合迁移上云客户。

消息处理解决方案

EventBridge 目前提供了丰富的事件提取和加工能力,用户可以配置多种多样的过滤与加工规则来满足其业务需要。

图片

举个例子,用户的事件有一个字段是订单类型,内容有在线订单和线下订单两类。用户期望过滤订单类型为在线订单的数据,投递到处理在线业务的函数计算服务。这里就可以在过滤规则中,参考指定值匹配,设置过滤规则中对应字段的值为在线订单。

除了指定值匹配,EventBridge 还支持前缀匹配、后缀匹配、除外匹配、数值匹配、数组匹配、复杂组合匹配等逻辑,满足客户绝大部分场景诉求。

有时用户并不期望原样的事件内容传递至目标端,而是加工成一定格式后再进行投递,对此 EventBridge 也提供了事件转换能力。目前支持的转换器类型包括完整事件、部分事件、常量、模板、和函数计算转换器。这些转换器分工各有差异,搭配使用可以帮助用户从事件体中提取出部分有价值字段,并按照要求拼接成目标端需要的数据格式。

消息生态解决方案

针对消息生态闭环的问题,EventBridge 的介入可以有效地扩充其上下游生态丰富度。

图片

在消息流入侧,EventBridge 支持消息类产品如 MNS、Kafka,数据库类产品如 DTS、云上管控、报警事件以及自定义事件的接入,使用户可以便捷地获取各类事件数据。

在消息流出侧,EventBridge 支持计算类产品如 FC、SAE,数据库类产品 RDS、通知类产品如钉钉、微信,通用类 API 如 http target 以及第三方 Saas 应用的触发。消息产品的用户通过简单的配置就可以将消息导入到下游服务以产生业务价值。

场景与实战

下面,我们列举几个场景并看下在消息产品控制台上创建对应任务的步骤。

消息路由场景

第一个场景就是跨可用区消息路由场景,用户如果有灾备或者数据汇总的需求时,可能会面临此问题。

图片

如图所示,用户的业务部署在杭州、北京、青岛 3 个 region。每个 region 都独立处理本 region 的业务数据。但为了搭建一个全局范围的数据大盘服务,需要用户汇总各个 region 的消息产品数据。

在这里,用户可以使用 EventBridge 的消息集成能力,分别创建杭州到北京和青岛到北京的消息路由任务,再使用一个独立的消费组去消费这些消息,即可完成跨 region 的消息数据汇总。

但有一点需要注意,在异地容灾场景下,用户需要配置双向路由时,一定要配置合适的过滤规则以避免数据成环。

现在我们看下创建此跨 region 消息路由任务的步骤。由于这些服务是由 EventBridge 来提供的,所以需要用户提前开通 EventBridge 服务,并在概览页授予 EventBridge 访问相关云产品服务的权限。

这里以创建一个北京到上海的 RocketMQ 消息路由任务为例,首先登陆 RocketMQ 控制台。

  1. 在控制台左侧页面,选择消息流出,点击创建任务。
  2. 在创建任务栏中,流出类型选择消息队列 RocketMQ。
  3. 随后在弹出的任务配置下拉参数中,源端的地域选择为北京,RocketMQ 实例信息按照实际情况填写。

图片

  1. 在目标端,选择流入的上海 RocketMQ 实例,填入相关信息。

图片

  1. 消息过滤和消息转换按照需要填写,点击确定。
  2. 等待 1-2 分钟,就可以看到消息路由任务已经处于运行中状态,这表明消息路由任务已经成功创建并运行。

图片

离线加工场景

第二个场景是一个消息离线数据分析的场景。

用户除了对 MQ 中的消息进行即时业务消费,也需要将其导入到 SLS 中,以用作数据分析和报警配置。同时用户还对写入到 SLS 的内容格式有一定要求。

这里用户可以在消息流入流出页面创建一个任务,将数据经由 EventBridge 导入到 SLS。在配置任务的过程中,按照图中示例的变量和模板配置,就可以将原始数据内容中的 name 和 state 字段提取出来,按照需求生成新的内容格式。

图片

还是以 RocketMQ 举例,在 RocketMQ 控制台消息流出页面,点击创建任务。

  1. 在流出类型中选择日志服务 SLS。
  2. 在下方的任务参数配置中,在源端选择对应的 RocketMQ 实例信息,在目标端选择对应的 SLS project 和 logStore。

图片

图片

  1. 在日志内容格式部分,按照图中提示的变量和模板配置,将对应内容填入,点击确定。

图片

  1. 等待 1-2 分钟,就可以看到消息写入 SLS 的任务已经处于运行中状态,这表明任务已经成功创建并运行。

图片

以上就是阿里云 EventBridge 的消息集成能力的介绍。后续 EventBridge 还会加大对消息领域能力的支持,帮助用户低成本的实现消息数据价值。感兴趣的朋友可以关注 EventBridge 官网与官方文档,第一时间获取最新产品消息。

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

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

相关文章

Redis 基础—Redis Desktop Manager(Redis可视化工具)安装及使用教程

Redis Desktop Manager 是一个可视化的 Redis 数据库管理工具,可以方便地查看和操作 Redis 数据库。使用 Redis Desktop Manager 可以大大提高 Redis 数据库的管理效率。 RDM的安装和配置 首先,您需要下载和安装Redis Desktop Manager。 安装完成后&am…

高校教务系统密码加密逻辑及JS逆向——皖南医学院

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

提升企业服务行业管理效率的关键策略与方法」

To B 服务,也即企业服务近年来大家关注的重点,企业服务是指为企业客户提供运营管理相关的工具与系统解决方案等服务,通过专业化的服务可以实现降本增效,提高企业的经营效率。 近年来,人口红利的消失促使企业服务需求快…

DC电源模块低温是否影响转换效率

BOSHIDA DC电源模块低温是否影响转换效率 DC电源模块是一种常用的电源转换装置,其主要作用是将输入的电源信号变换成需要的输出电源信号。在实际应用中,DC电源模块的性能会受到多种因素的影响,其中低温也是一个重要的影响因素。本文将从转换…

kettle应用-从数据库抽取数据到excel

本文介绍使用kettle从postgresql数据库中抽取数据到excel中。 首先,启动kettle 如果kettle部署在windows系统,双击运行spoon.bat或者在命令行运行spoon.bat 如果kettle部署在linux系统,需要执行如下命令启动 chmod x spoon.sh nohup ./sp…

c++设计模式之单例设计模式

💂 个人主页:[pp不会算法v](https://blog.csdn.net/weixin_73548574?spm1011.2415.3001.5343) 🤟 版权: 本文由【pp不会算法^v^】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦…

以命令行形式执行Postman脚本(使用Newman)

目录 一、背景 二、Newman的安装 三、脚本准备 四、Newman的执行 五、生成报告 一、背景 ​ Postman的操作离不开客户端。但是在一些情况下可能无法使用客户端去进行脚本执行。比如在服务端进行接口测试。由此我们引入了Newman。Newman基于Node.js开发,它使您可…

【MySQL】表的查询与连接

文章目录 预备工作一、表的基本查询1、简单基本查询2、分组聚合统计3、基本查询练习 二、表的复合查询1、多表查询2、子查询2.1 **单行子查询**2.2 **多行子查询**2.3 **多列子查询**2.4 在from子句中使用子查询 3、合并查询 三、表的连接1、自连接2、内连接3、外连接 预备工作…

【C++】关键字 命名空间 输入输出 缺省函数

一,C关键字 C 总计 63 个关键字,C语言 32 个关键字 直接上图: asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutablestaticunionwchar_tcatche…

Win11更新后瘦身C盘的两个小技巧

每当windows更新完后,就很容易出现一个现象,那便是C盘存储变红了。 这个时候,就会有方法指出:把C盘中的系统更新文件清理掉吧,这样C盘就又能瘦回去了! 然而,当你兴冲冲地按照网上的教程点击C…

OPTEE之KASAN地址消毒动态代码分析

安全之安全(security)博客目录导读 目录 一、KASAN简介 二、OPTEE_OS中KASAN配置选项 三、OPTEE_OS中KASAN配置选项打开 一、KASAN简介 内核地址消毒器(KASAN)是Linux内核的快速内存损坏检测器,KASAN检测slab、page_alloc、vmalloc、stack和全局内存中的越界、u…

Yarn基础入门

文章目录 一、Yarn资源调度器1、架构2、Yarn工作机制3、HDFS、YARN、MR关系4、作业提交之HDFS&MapReduce 二、Yarn调度器和调度算法1、先进先出调度器(FIFO)2、容量调度器(Capacity Scheduler)3、公平调度器(Fair …

信钰证券:首板第二天买入技巧?

股票上市第一天,也就是所谓的“首板”,一般会引起商场的高度注重。那么关于投资者而言,如安在接下来的第二天进行买入是个十分要害的决议计划。本文将从多个角度剖析首板第二天买入技巧,供读者参阅。 首先,多数人或许…

京东数据平台:2023年服饰行业销售数据分析

最近看到有些消费机构分析,不少知名的运动品牌都把“主战场”放到了冲锋衣,那么羽绒服市场就比较危险了。但其实羽绒服市场也有机会点可寻。 先来说冲锋衣。的确,从今年的销售数据以及增长情况,冲锋衣的确会是今年冬天的大热门品…

领跑新周期!高通8295/8255上车,这家厂商已经整装待发

围绕高通下一代8295/8255平台,一场激烈的市场争夺战已经打响。 目前,各大域控制器厂商、汽车软件厂商围绕高通8295/8255平台,已经推出了诸多的解决方案,以抢占下一代高性能SoC带来的全新市场红利。《高工智能汽车》了解到&#x…

炮轰特斯拉「无图」,一家老牌图商的反击

‍作者|张祥威 编辑|德新 为实现城市NOA,车厂近年将重感知、轻地图奉为圭臬,一些玩家甚至提出「无图」概念,这让高精度地图供应商倍感压力。 四维图新CEO程鹏是坚定的反「无图」论者,他不太理解喊无图的目的是什么。后来和各家交…

idea 相关配置

idea 相关配置 / 设置 1. 插件设置 下载插件代理: https://plugins.jetbrains.com推荐插件下载: Sequence Diagram 时序图Rainbow Brackets 彩虹括号MyBatisX 在 MyBatis 中写的 mapper 可以跳转maven helper 右键运行 maven 指令Lombok简化 getter …

【数据库——MySQL(实战项目1)】(4)图书借阅系统——触发器

目录 1. 简述2. 功能代码2.1 创建两个触发器,分别在借出或归还图书时,修改借阅人表中的已借数目(附加:借阅人表的总借书数、图书表的借阅次数以及更新图书表的图书状态为(已借出/在架上))字段;2.2 创建触发器,当借阅者…

测试老鸟,Jmeter两种方法造接口性能测试数据(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 通过接口构造测试…

mysql面试题51:你是如何监控你们的数据库的?你们的慢日志都是怎么查询的?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:你是如何监控你们的数据库的? 监控数据库是确保数据库系统稳定性和性能的重要工作。下面是一些常见的方法和工具: 监控工具选择:选择适合你的数…