引言
事件驅動架構(EDA)是一種以事件為紐帶,將不同系統進行解耦的異步架構設計模型,在 EDA 中,事件驅動的運行流程天然地劃分了各個系統的業務語意,用戶可以根據需求對事件與針對此事件做出的回應靈活定制,這使得基于 EDA 架構可以方便地構建出高伸縮性的應用,據 Daitan Group 的調研報告,早在 2017 年,例如 UBER、Deliveroo、Monzo 等公司就已經采用了 EDA 去設計他們的系統,

為了便于用戶更加輕松地開發以 EDA 為架構的應用,在 2020 年云棲大會上,阿里云正式推出了 EventBridge,EventBridge 是一款無服務器事件總線服務,能夠以標準化的 CloudEvents 1.0 協議在應用之間路由事件,目前,EventBridge 已經集成了眾多成熟的阿里云產品,用戶可以低代碼甚至零代碼完成各個阿里云產品和應用之間的打通,輕松高效地構建分布式事件驅動架構,
事件源是事件驅動的基石,如何獲取更多事件源也是 EventBridge 一直在探索和嘗試的方向,針對市場上其他云廠商和垂直領域的 Saas 服務,EventBridge 發布了 HTTP Source 能力,提供簡單且易于集成的三方事件推送 ,幫助客戶更加高效、便捷地實作業務上云,
HTTP Source 概述
接入 EventBridge 應用有多種情況:用戶自定義應用、阿里云服務、其他云廠商服務或者其他 SaaS 產品,
? 對于用戶自定義應用,用戶可以使用 EventBridge 官方的 API 介面、多語言客戶端以及 CloudEvents 社區的開源客戶端來完成接入,
? 對于阿里云的云產品,EventBridge 原生支持,用戶可以在默認事件總線中選擇對應的云產品與其相關的觸發事件,
? 而對于其他云廠商、SaaS 產品,EventBridge 同樣也提供便捷的接入方式便于用戶進行集成,HTTP Source 事件源便是一種典型的接入方式,

具體而言,HTTP Source 事件源是 EventBridge 支持的事件源的一種,它以 Webhook 形式暴露了發布事件的 HTTP 請求地址,用戶可以在有 URL 回呼的場景配置 HTTP Source 事件源,或者直接使用最簡單的 HTTP 客戶端來完成事件的發布,HTTP Source 事件源提供了支持 HTTP 與 HTTPS,公網與阿里云 VPC 等不同請求方式、不同網路環境的 Webhook URL,便于用戶將其集成到各類應用中,接入時無需使用客戶端,僅需保證應用可以訪問到對應 Webhook URL 即可,這使得接入程序變得簡單而高效,
在將 HTTP 請求轉換為 CloudEvent 的時候,EventBridge 會將請求的頭部和訊息體部分置于 CloudEvent 欄位中,其余欄位會依據用戶 EventBridge 資源屬性以及系統默認規則進行填充,用戶可以在事件規則中,對所需的內容進行過濾、提取,最終按照模板拼裝成所需的訊息內容投遞給事件目標,

HTTP Source 事件源目前支持 3 種型別的安全設定,分別是請求方法、源 IP 以及請求來源域名,
? 請求方法:用戶可以配置當前請求此事件源時合法的 HTTP 請求方法,如果方法型別不滿足配置規則,請求將被過濾,不會投遞到事件總線,
? 源 IP:用戶可以設定允許訪問此事件源時合法的源 IP(支持 IP 段和 IP),當請求源 IP 不在設定的范圍內時,請求將被過濾,不會投遞到事件總線,
? 請求來源域名:即 HTTP 請求的 referer 欄位,當請求的 referer 與用戶配置不相符時,請求被過濾,不會投遞到事件總線,
拋磚引玉,下面就介紹如何使用 HTTP Source 來構建 SaaS 應用集成的最佳實踐,幫助大家快速上手 SaaS 集成方案,
SaaS 集成最佳實踐
釘釘監控 GitHub 代碼推送事件
GitHub 提供了 Webhook 功能,代碼倉庫在發生某些特定操作(push、fork等)時,可以通過回呼來幫助用戶完成特定功能,針對多人開發的專案,將 GitHub 事件推送到特定釘釘群可以幫助成員有效關注代碼變更,提高協同效率,
本節我們展示如何通過釘釘監控 GitHub 代碼推送事件的最佳實踐,主要包含以下幾個步驟:
? 創建一個釘釘機器人;
? 創建 EventBridge 相關資源:事件總線、事件源(HTTP Source 型別)、事件規則、事件目標(釘釘);
? 創建自定義事件總線;
? 選擇 GitHub 代碼倉庫創建 Webhook;
? 向 GitHub 代碼倉庫推送代碼變更;
? 釘釘群接收此次代碼推送相關資訊,
1)創建釘釘機器人
參考釘釘官方檔案[1],創建一個群機器人,創建群機器人時,安全設定請勾選“加簽”并妥善保管密鑰和稍后生成的機器人 Webhook 地址,
2)創建 EventBridge 相關資源
創建 EventBus 事件總線

創建事件源,事件源配置完成之后,點擊跳過,我們接下來會專門配置事件規則與目標,

創建完成后,進入事件源詳情頁,保存剛剛生成的 Webhook URL,

在 EventBridge 控制臺頁面點擊進入剛剛創建的 EventBus 詳情頁,在左側一欄中“事件規則”選擇“創建規則”,


創建時間目標,選擇釘釘,并將釘釘機器人的 Webhook 地址和密鑰填入,推送內容側可以按照需求設計,

我們填寫模板變數為:
{"repo":"$.data.body.repository.full_name","branch":"$.data.body.ref","pusher":"$.data.body.pusher.name"}
模板為:
{"msgtype": "text","text": {"content": "Github push event is triggered. repository: ${repo}, git reference: ${branch}, pusher: ${pusher}." } }
3)在 GitHub 代碼倉庫創建 Webhook
登陸 GitHub,在 GitHub 代碼倉庫“setting”中選擇左側“Webhooks”,選擇新建 Webhook,
在創建 Webhook 的配置項中填入 HTTP Source 事件源的 Webhook 地址,Content type 部分選擇“application/json”,下方觸發事件型別選擇“Just the push event.”,隨后點擊“Add Webhook”,創建完成,


4)向 GitHub 代碼倉庫推送代碼變更
本地倉庫做一定變更,commit 后推送 GitHub,
5)釘釘群接收此次代碼推送相關資訊

異步消費監控報警資訊
業務上存在異步消費報警資訊的場景,例如報警內容備份,根據報警頻率自適應調整報警閾值等,而且對于多云業務的用戶,如何將跨云服務的報警資訊整合起來也是一個麻煩的問題,依托 HTTP Source,用戶可以將不同云廠商(騰訊云、華為云等)、不同監控產品(Grafana、Zabbix、Nagios等)統一集成到 EventBridge 平臺,以便于實作對報警資訊的異步消費,

本節我們介紹如何使用 EventBridge 集成 Grafana,實作異步消費監控報警資訊,Grafana 是一款開源資料可視化工具,也同時具有監控報警功能,具體使用可以參閱Grafana 官方檔案[2],本節主要包含以下步驟:
? 創建 MNS 佇列;
? 創建 EventBridge 相關資源;
? Grafana 上配置 Webhook;
? 測驗接收結果,
創建 MNS 佇列
在 MNS 控制臺,選擇“佇列串列-創建佇列”,

創建 EventBridge 相關資源
同上文所述,這里僅示例創建事件目標時相關配置,

Grafana 上配置 Webhook
點擊 Grafana 控制臺左側“Alerting-Notification channels”,選擇“Add channel”,

在“type”一欄中選擇“Webhook”,url 填寫 HTTP Source 事件源的 Webhook 地址,點擊下方“Test”,
測驗接收結果
登陸 MNS 控制臺,進入佇列詳情頁,點擊頁面右上角“收發訊息”,可以看到 MNS 已經接收到剛剛 Grafana 發送的訊息,

點擊對應訊息詳情可以看到訊息內容,說明訊息已經被成功消費,

更多集成
HTTP Source 支持的三方集成包括 Prometheus,Zabbix,Skywalking,Grafana,Open-Falcon,Cacti,Nagios,Dynatrace,Salesforce,Shopify,Gitee 等 SaaS 應用,通過簡單配置 Webhook 無需開發既可實作事件接收能力,
總結
本文重點介紹 EventBridge 的新特性:HTTP Source 事件源,作為一款無服務器事件總線服務,EventBridge 已經將阿里云云產品管控鏈路資料、訊息產品業務資料整和到事件源生態中,提高了上云用戶業務集成的便捷性,Open API 與多語言 sdk 的支持,為客戶自身業務接入 EventBridge 提供了便利,
在此基礎之上,HTTP Source 事件源更進一步,以 Webhook 形式開放了針對了其他云廠商、SaaS 應用的集成能力,無需代碼改動,僅需要簡單配置即可完成 EventBridge 集成操作,
相關鏈接
[1] 釘釘官方檔案
https://open.dingtalk.com/document/group/custom-robot-access
[2] Grafana 官方檔案
https://grafana.com/docs/
發布云原生技術最新資訊、匯集云原生技術最全內容,定期舉辦云原生活動、直播,阿里產品及用戶最佳實踐發布,與你并肩探索云原生技術點滴,分享你需要的云原生內容,
關注【阿里巴巴云原生】公眾號,獲取更多云原生實時資訊!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/444382.html
標籤:其他
上一篇:軟體自動化測驗工具的選擇
