当前位置: 首页 > 后端技术 > Java

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

时间:2023-04-01 17:40:48 Java

简介:在企业数字化转型过程中,自然会遇到消息路由、异地多活、协议适配、消息备份等场景。本文主要介绍EventBridge消息路由的应用场景和应用实验,帮助大家了解如何通过EventBridge消息路由高效构建消息路由能力。作者:垦盟企业数字化转型过程中,自然会遇到消息路由、异地多活、协议适配、消息备份等场景。本文主要介绍EventBridge消息路由的应用场景和应用实验,帮助大家了解如何通过EventBridge消息路由高效构建消息路由能力。背景知识EventBridge消息路由主要涉及以下云产品和服务:EventbusEventBridge事件总线EventBridge是阿里云提供的Serverless事件总线服务,支持阿里云服务、自定义应用、SaaS应用标准化、集中化接入,并且可以使用标准化的CloudEvents1.0协议在这些应用程序之间路由事件,帮助您轻松构建松散耦合的分布式事件驱动架构。消息队列RabbitMQ版阿里云消息队列RabbitMQ版支持AMQP协议,全面兼容RabbitMQ开源生态和多语言客户端,打造分布式、高吞吐、低延迟、高扩展的云消息服务。开箱即用,用户无需部署免运维,轻松实现快速入云。阿里云提供全托管服务,更专业、更可靠、更安全。MNS消息队列阿里云MNS消息服务是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息通知服务。MNS可以帮助应用程序开发人员在其应用程序的分布式组件上自由传输数据和通知消息,并构建松散耦合的系统。场景应用EventBridge消息路由功能在消息系统的搭建过程中,主要用于以下三种场景。一是消息路由场景,二是消息多活场景,三是多协议适配场景。下面分别对三个场景进行简单介绍。消息路由场景该场景是指希望对消息进行重新分发的场景,通过简单的过滤或筛选,将消息分发到其他主题或跨区域主题,实现消息共享和消息脱敏。通过一层转发将消息分发给不同的Topic消费者,是消息路由的核心能力。随着企业转型,消息拆分、业务脱敏的场景会越来越多。下图是一个典型的路由分发场景。消息多活场景消息多活场景是指每个数据中心都部署了一个完整独立的MQ集群。数据中心的应用服务只连接本地的MQ集群,不连接其他单位的MQ集群。MQ集群中包含的消息路由模块,负责在不同单元MQ集群之间同步指定主题的消息。根据应用服务是否具有单元化能力,可以分为中心服务和单元服务两种。中央服务只在一个数据中心提供服务;单元服务在所有数据中心提供服务,但只对部分符合规则的用户负责,不对所有用户负责。所有部署有单元服务的数据中心都是一个单元,所有单元的单元服务同时对外提供服务,从而形成远程多活架构或单元化架构。通过多活管控平台,可以动态调整各单元业务负责的流量。多协议适配场景随着业务团队的逐渐扩大,对消息构建的需求与日俱增。由于部门的技术栈不同,部门之间的消息协议也不同。多协议适配是指能够从一种消息协议平滑迁移到多种消息协议。架构描述使用EventBridge的事件流功能进行消息路由。事件流模型是EventBridge在消息领域的主要处理模型。适用于没有总线概念的标准Streaming(1:1)流处理场景。用于端到端的消息路由、消息转储、消息同步处理等,帮助开发者在云端轻松构建数据管道服务。以下架构展示了如何通过桥接EventBridge将MNS消息路由到RabbitMQ队列和MNS队列。(选择A/B链接之一进行测试)image.gif应用实验目标通过本实验教程的操作,您可以通过阿里云控制台在事件总线控制台中创建一个消息路由服务,并在其中实现消息路由服务EventBridge控制台。具有简单消息脱敏的路由。经历这个实验后,你可以掌握的知识包括:创建消息路由任务;创建RabbitMQ实例、MNS实例和简单的消息发送。资源中使用的资源如下:(本实验中的资源遵循最小化原则,使用满足场景需求的最小资源)资源一:EventBridge事件总线资源二:阿里云消息队列RabbitMQ版资源三:阿里云消息队列MNS版本步骤1)创建MNS资源本次实验分为两个可选场景:A和B:A,场景通过MNSQueues1投递到MNSQueues2B,场景通过MNSQueues1投递到RabbitMQQueues.可以根据兴趣选择不同的场景。此步骤将指导您如何通过控制台创建MNS版本的MessageQueue。使用自己的阿里云账号登录阿里云控制台,进入消息队列MNS控制台。[1]在控制台左侧导航栏,点击队列列表。(资源区域可以是同一区域,本指南默认选择杭州)在列表页面,点击CreateQueue,填写名称信息“test-mns-q”,创建完成后,点击“Details”找到MNS公网接入点信息,并记住这些信息,在后面的实验中会用到。例如http://1825725063814405.mns.c...注意:重复以上步骤创建A实验链接的“test-mns-q2”2)创建RabbitMQ资源(B实验可选)这一步会引导您如何通过控制台为RabbitMQ创建消息队列。使用自己的阿里云账号登录阿里云控制台,进入消息队列RabbitMQ版本控制台。[2]在控制台左侧导航栏,点击实例列表。(资源地域可以是同一地域,本指南默认选择杭州。)在列表页面,点击创建实例,完成创建。创建完成后,点击详情,进入实例详情页面;在“虚拟主机列表”中创建“test-amqp-v”;在“QueueList”中,选择Vhost为“test-amqp-v”,并创建“test-amqp-q”;3)创建一个EventBridge事件流任务-MNSTOMNS(实验可选)这一步将指导您如何通过控制台创建EventBridge事件流。使用自己的阿里云账号登录阿里云控制台,然后访问EventBridge控制台。[3]注意:首次使用需要激活。点击“事件流”列表,在列表中创建一个任务(资源区域可以是同一个区域,本指南默认选择杭州),创建事件流名称为“test-amqp-mns2mns”,点击下一个;指定事件源,事件提供者为“MessageServiceMNS”,队列名为“test-mns-q”,点击下一步;指定规则,规则部分不过滤,默认全部匹配,直接下一步;注意:规则的内容可以根据需要自定义,自己指定。为了降低难度,所有实验均默认交付。详情请参考:https://help.aliyun.com/docum...服务类型选择“消息服务MNS”,消息内容选择“test-mns-q2”,消息内容选择“部分事件”,点击创建注:消息内容可根据需要指定,本实验默认下发data字段。更多详情请参考:https://help.aliyun.com/docum..创建完成后点击“开始”开始事件流4)创建EventBridge事件流任务-MNSTORabbitMQ(实验B的可选)此步骤将指导您如何通过控制台创建EventBridge事件流。使用自己的阿里云账号登录阿里云控制台,然后访问EventBridge控制台。[3]注意:首次使用需要激活。点击“事件流”列表,在列表中创建一个任务(资源区域可以是同一个区域,本指南默认选择杭州),创建一个事件流名称为“test-amqp-mns2rabbitmq”,点击接下来指定事件源,eventProvider为“MessageServiceMNS”,队列名称为“test-mns-q”,点击下一步指定规则,规则部分可以不过滤,默认匹配全部,点击Next直接注:规则的内容可以根据需要指定,为了降低本次实验的难度,默认全部下发。详细请参考:https://help.aliyun.com/docum...服务类型选择“消息队列RabbitMQ版”,具体配置如下,点击创建实例ID:选择CreatedRabbitMQIDVhost:选择“test-amqp-v”targettype:选择“Queue”Queue:选择“test-amqp-q”Body:选择“partialevents”,填写“$.data”MessageId:选择“constant”,填写“0”属性:选择“PartialEvents”,填写“$.source”注:消息内容可根据需要指定,本实验默认下发data字段。更多详情请参考:https://help。aliyun.com/docum...创建完成后点击“Start”开始事件流5)验证路由任务向MNSSource“test-mns-q”发送实验消息点击下载MNSSDK[4]修改sample.cfg在“sample.cfg”中填写AccessKeyId、AccessKeySecret、Endpoint等信息AccessKeyId、AccessKeySecret可以在阿里云RAM控制台创建Endpoint[5],即第1步,MNS公网接入点地址image.gifAccessKeyId=LTAI5t96yU2S2E84BYsNNQ33AccessKeySecret=xxxxxxEndpoint=http://1825725063814405.mns.cn-hangzhou.aliyuncs.com填写后的效果如下,保存并在sample目录下找到“sendmessage.py”例子,调整循环参数为200,并保存(可选)保存并运行“pythonsendmessage.pytest-mns-q”pythonsendmessage.pytest-mns-q在事件流控制台[6]中,点击“test-mns-q2”和“test-amqp-q”查看详情和dump详情注意:MNSQ只支持单次订阅,不支持广播模式。因此,本次测试需要对MNS/RabbitMQ进行2次实验,并选择其中1次在实验进行前关闭。如需广播模式,请创建MNSTopic资源。链路A实验结果:链路B实验结果:优势与结论EventBridge事件流提供端到端的消息路由能力,可以完成消息分发、消息同步、跨地域消息备份、跨产品消息同步能力通过简单的配置。具有运维简单、成本低、效率高、使用稳定等优点。同时,使用EventBridge可以实现基本的数据过滤、数据脱敏等数据处理能力。是消息路由场景下运维成本最低的方案。原文链接本文为阿里云原创内容,未经许可不得转载。

猜你喜欢