1. 程式人生 > 其它 >EventBridge訊息路由|高效構建訊息路由能力

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 可以實現基礎的資料過濾,資料脫敏等資料處理類能力。是訊息路由場景下運維成本最低的解決方案。

原文連結

本文為阿里雲原創內容,未經允許不得轉載。