天天看點

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

釋出會傳送門 産品詳情頁

EventBridge 簡介

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

近年來,随着雲原生和 Serverless 概念的深入人心,事件驅動再一次成為了雲應用架構領域的熱門詞彙。在 2018 年,Gartner 評估報告将 Event-Driven Model 列為10大戰略技術趨勢之一,事件驅動架構(EDA)将成為未來微服務的主流。該報告同時做出了以下預言:

到 2022 年,事件通知的軟體模型将成為超過 60% 的新型數字化商業的解決方案;

到 2022 年,超過 50% 的商業組織将參與到事件驅動的數字化商業服務的生态系統當中;

同年 5 月,雲原生 CNCF 基金會托管了開源 CloudEvents 項目,該項目旨在用統一和規範的格式來描述事件,來加強不同的服務、平台以及系統之間的互操作性,事件在雲原生大圖中的重要性不言而喻。

與此同時,在阿裡雲上實踐事件驅動架構卻不是一件簡單的事情:

阿裡雲的雲産品,從 IaaS 到 PaaS,每天都有數以億計的事件産生,但卻沒有一種簡單和統一的方式來觸達這些事件;

很多雲産品有自建的事件中心,但沒有采用統一的标準和規範來描述這些事件,使用者無法用同樣的方式來解釋這些事件;

雲上的的事件目前非常獨立,無法形成規模效應,很難挖掘出有用的業務價值,隻有充分發揮資料的規模效應,建立起資料的血緣關系,我們才能更好的發掘出資料的價值;

目前事件應用的場景偏離線分析,因缺乏開箱即用的中心化事件處理能力,無法應用在線上業務的場景。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

為了解決這些問題,阿裡雲正式釋出了最新雲産品 EventBridge,一款無伺服器事件總線服務,其使命是作為雲事件的樞紐,以标準化的 CloudEvents 1.0 協定連接配接雲産品和雲應用,提供中心化的事件治理和驅動能力,幫助使用者輕松建構松耦合、分布式的事件驅動架構;另外,在阿裡雲之外的雲市場上有海量垂直領域的 SaaS 服務,EventBridge 将以出色的跨産品、跨組織以及跨雲的內建與被內建能力,助力客戶打造一個完整的、事件驅動的、高效可控的上雲新界面。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

EventBridge 核心能力

作為一款全新的雲産品,EventBridge 是完全面向雲原生設計和架構的,EventBridge 提供的核心能力分為以下幾類。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

內建與被內建

內建能力和內建度是産品的關鍵點,EventBridge 将以低成本甚至零成本,低代碼甚至0代碼,跨組織和跨雲的方式去連接配接雲産品、雲應用以及SaaS應用。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

內建雲産品

今天的阿裡雲,有數百個成熟的雲産品,有數百萬應用的計算執行個體,它們每天會産生億級的雲事件,但這些事件目前處于失控的狀态,是一片尚未被挖掘的資料寶藏。EventBridge 将連接配接大部分阿裡雲的雲産品,作為事件源或者事件目标,提高阿裡雲事件的中心化治理能力,充分挖掘雲事件的業務價值;同時,通過一站式的雲産品連接配接服務,幫助使用者更好地上雲和用雲。

內建雲應用

使用者上雲的最終目的是充分撬動雲計算帶來的技術紅利,是以上雲的過程不僅僅是 Rehost,還需要進行 Replatform 和 Refactor,EventBridge 提供豐富的內建能力,讓應用更好地連接配接和使用雲服務。目前使用者可以通過 EventBridge 官方的 HTTP 接口、多語言用戶端(Java、Golang、Python、C#、PHP)以及 CloudEvents 社群的開源用戶端輕松接入阿裡雲的 EventBridge 生态。

內建第三方 SaaS

對于 SaaS,阿裡雲堅持被內建的戰略,可以預計在阿裡雲上會成長出一批又一批優秀的 SaaS 提供商,EventBridge 将為 SaaS 提供便捷的方式融入阿裡雲生态體系,與阿裡雲一方雲産品深度融合。

協調與驅動

Serverless 應用架構的最佳實踐便是事件驅動,無論是傳統的微服務還是函數計算,EventBridge 将極大地簡化事件驅動架構的研發成本,海量的函數以及微服務将以事件的形式被有序協調。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

關于編排(Orchestration)和協調(Choreography),Gartner 報告中對比了兩種架構的差別,通過請求驅動來組合和編排微服務和函數的方式帶來了很多不必要的強耦合,而通過事件驅動的方式來協調微服務和函數,将是更徹底的解耦,提高程式的韌性,業務的開發也将變得更加靈活和高效。

資料通道

EventBridge 另一個核心能力是為流式的資料承擔通道的責任,通過 CloudEvents 規範和 Schema 系統資料庫(Coming Soon)來統一描述這些資料,并提供基礎的過濾和轉換的能力,在不同的資料倉庫之間、資料處理程式之間、資料分析和處理系統之間進行資料路由。

為此,EventBridge 即将上線 Connect 能力,通過大量的 Source 和 Sink Connector 将使用者的資料在雲上流動起來。

EventBridge 基本模型

EventBridge 産品包含幾個基本概念:事件、事件總線、事件源、事件規則以及事件目标。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

如上圖所示,事件從事件源被投遞至事件總線,經過規則的過濾和轉換處理,最終被投遞給多種事件目标,完成事件的處理。

事件

事件,代表了事情的發生、條件和狀态的變化。在雲的時代,事件是無處不在的,雲的任何一個産品、一個應用、甚至一個資源都在時刻發生事件,它們稱為事件源。事件源來自不同的組織和環境,事件源對事件将被如何響應沒有任何預期,事件目标通過中心化的事件總線來訂閱事件,依賴事件具備的自描述能力,來低成本地了解和處理事件。

EventBridge 中的事件通過雲原生事件标準 CloudEvents 來描述,CloudEvents 是 EventBridge 生态系統中的一等公民。EventBridge 采取 CloudEvents 的主要原因為:

采取統一的雲原生事件标準,有助于統一表達來自不同僚件源中的事件,提升事件驅動程式的互操作性。

标準化,使用者沒有廠商鎖定的擔憂,基于 CloudEvents 的事件驅動程式可以在不同雲之間随意移植。

CloudEvents 具備非常簡單的結構,如下 JSON 文本為一個 CloudEvents 事件。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

阿裡雲 EventBridge 目前支援兩類事件:自定義事件和阿裡雲服務事件。

阿裡雲服務事件:具備預先定義好的 Schema,來自各個雲産品關于使用者資源狀态變更的事件,比如雲視訊會議事件,包括會議開始、結束、成員變更等會議事件。

自定義事件:使用者可以使用 CloudEvents 社群的開源 SDK、EventBridge 官方的多語言輕量級 SDK、EventBridge Connect、WebHook等(後兩種能力即将開放)方式投遞自定義事件至 EventBridge,豐富的事件源接入方式助力客戶快速打造事件驅動的 Serverless 應用程式。

事件總線

事件總線是一個抽象概念,是事件的載體,阿裡雲 EventBridge 的事件總線具備使用者緯度的多租戶能力,每個總線有唯一的資源 ARN。事件發送至事件總線,随後被事件規則路由至事件目标。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

如上圖所示,阿裡雲的事件總線分為兩類:

預設事件總線:使用者開通 EventBridge 時自動建立 default 總線,所有接入的雲服務事件都将主動投遞至 default 上,對于使用者來說雲産品的事件是開箱即用的。

自定義事件總線:使用者自行建立,用來接受自定義的事件,是使用者研發事件驅動架構程式的必備資源。

規則

規則對事件總線中的事件進行過濾,過濾成功的事件經過一定的轉換路由到規則中指定的阿裡雲目标服務或者HTTP網關。

EventBridge 中的規則有兩端,一端連接配接事件總線,一端連接配接事件目标,并且是一對多的關系,每個規則最多關聯 5 個事件目标。同時,規則中的過濾和轉換元件,為使用者提供了輕量級的事件過濾和轉換的能力。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

規則中過濾能力由事件模式(Event Pattern)提供,目前支援的過濾模式包含:

  • 指定值比對
  • 字首比對
  • 字尾比對
  • 除外比對
  • 數值比對
  • 數組比對
  • 以及複雜的組合邏輯比對

規則中的轉換用于将 CloudEvents 轉變事件目标接受的格式,EventBridge 提供了四種轉換器:

  • 完整事件:不做轉換,直接投遞原生 CloudEvents。
  • 部分事件:通過 JsonPath 文法從 CloudEvents 中提取部分内容投遞至事件目标。
  • 常量:事件隻起到觸發器的作用,投遞内容為常量。
  • 模闆轉換器:通過定義模闆,靈活地渲染自定義的内容投遞至事件模闆。

EventBridge 産品架構

EventBridge 作為一款全新的雲産品,全面采用了雲原生技術棧,如下圖所示,EventBridge 搭建在容器服務提供的 Kubernetes 叢集之上,設計了一整套基于 K8S 的 DevOps 研發體系,研發階段實踐 GitOps 提高傳遞和疊代效率,測試階段配備了大量的自動化測試,釋出階段有完善的灰階機制,運維階段依賴 K8S 的自愈能力大幅度降低運維成本,并通過 Prometheus ,SLS 等産品建立了雲原生的監控體系。

除此之外,EventBridge 依賴 RocketMQ 提供核心的事件存儲能力,RocketMQ 作為阿裡自研的消息中間件,經曆過多次雙11流量高峰的考驗和無數個阿裡内部業務場景的驗證,為 EventBridge 提供了高 SLA 的,高性能的事件傳輸服務。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

EventBridge 典型場景

在本章節,我們根據 EventBridge 目前以及具備的能力,列舉三個典型的案例。随着 EventBridge 生态的豐富,未來可以挖掘更多的業務場景,我們後續也會出一系列的樣闆間項目,友善使用者快速将事件驅動的方式契合大盤自己的業務場景中。

場景 1:360 度業務全景

随着企業業務規模的擴大,業務的穩定性愈發重要,為了避免故障随着場景的複雜化而頻繁發生,對應用建設 360 度全方位的可觀測和監控體系尤為重要。傳統的應用基于雲原生重構後,享受雲原生技術紅利的同時也為應用的穩定性治理帶來了更多的複雜性,最主要的就是變更難以控制:業務依賴了整套雲的基礎設施,IaaS 層實體資源、網絡資源以及 PaaS 層雲服務,甚至依賴的上下遊服務,時刻都在進行變更,使用者很難立馬感覺到變更的發生以及相應的影響,而 95% 的故障都是由變更導緻的。

為了解決這個問題,通過 EventBridge 打造 360 度業務全景圖,清晰地感覺整個産品業務鍊路上,做了哪些變更,有哪些異常反應,這些異常反應是不是跟最近的變更有關聯,遇到特殊問題時,我們甚至可以通過自運維的方式,幫助産品更快的恢複,将影響面降低到最小。

而這些能力的擁有,離不開 EventBridge 內建多個雲産品事件的能力,也離不開 EventBridge 可以通過事件觸發多個雲産品響應的能力。事件作為一個資訊的重要載體,通過 EventBridge 優雅的協調各個雲産品進行有序工作。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

場景 2:網頁截圖制作每日快報

場景 1 是一個比較複雜的案例,再來看一個可以快速上手的場景:使用 EventBridge 驅動函數計算幫我們進行網頁截圖,并通過郵箱發送出去,制作每日快報。

  • 首先,業務系統通過分析,計算出今日有價值的頭條新聞,并把新聞 URL 位址通過 Event,發送給EventBridge;
  • EventBridge 接收到 Event 後,根據預配置的規則,開始觸發函數計算的網頁截圖程式進行工作;
  • 函數計算接收到 Event 後,自動建立資源,并運作網頁截圖程式進行截圖,儲存到 OSS,同時通知 EventBridge 截圖完成,然後自動釋放資源;
  • EventBridge 接收到函數計算完成的 Event 後,根據預配置的規則,開始觸發郵箱服務,将網頁截圖以郵件的形式發送給目标使用者;

從這個例子中,可以發現:Serverless 和 EventBridge,是雲原生時代一個非常強有力的組合。通過事件去驅動函數計算,讓業務按需排程資源,不僅可以預防突發流量帶來的穩定性風險,還可以最大程度的降低成本,按需付費。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

場景 3:新零售智慧家具門店

EventBridge 未來可以觸達的場景有多大?讓我們看一個新零售智慧家具門店的場景:

  • 倉庫的家具商品入庫事件、門店的顧客進店事件通過 EventBridge 實時流轉到線上分析系統,讓我們知道現在店内有哪些家具商品,進店顧客的家具偏好是什麼,并推送給商場門店的導購員或則廣告屏,幫助門店更好的下單轉化;
  • 顧客線上電子支付後,訂單資訊發送到 EventBridge,并觸發第三方物流公司進行送貨上門;
  • 第三方物流公司,可以實時的将家具的位置資訊通過 EventBridge 推送給移動端APP,客戶可以通過 APP 很友善的實時了解到自己的家具到哪了,預估還需要多久送到家;
  • 所有這些通過EventBridge流轉的線上業務事件資料,最終通過EventBridge流轉到離線分析系統,自動生成業務報表,供管理層做績效考核或則營運決策。
    最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

在這個場景中,EventBridge 起着關鍵的通道作用,無論是 IoT、線上業務、還是大資料場景,EventBridge 将事件資訊高效的流轉,推動業務目标達成。Event 既作為線上業務資料,又作為離線分析資料,這種方式,既降低了成本,同時也提高了效率。

EventBridge 未來規劃

作為雲上的事件樞紐,EventBridge 最核心的能力就是連接配接。是以,未來EventBridge會重點建設生态網絡。無論是線上業務場景、IoT 場景、還是大資料場景,都能夠通過低代碼甚至 0 代碼的方式,內建到 EventBridge。如果你的應用部署在私有 IDC 機房,或則其他雲廠商環境,我們也都将提供安全可靠的內建方式。

當然,雲時代下這麼龐大的神經中樞系統,不是一日可以建成的,需要大家一起的努力。是以未來,EventBridge 同時會緻力于開源社群建設,也希望志同道合的朋友一起加入進來,成為雲原生時代,Event-Driven Model 的第一批布道師。

最IN的雲原生架構,阿裡雲 Serverless 事件總線 EventBridge 重磅釋出

繼續閱讀