最IN的云原生架构,阿里云 Serverless 事件总线 EventBridge 重磅发布
簡介:?Serverless 是云計算下一個10年的主要形態,通過大量端到端的整合和云服務的集成,能極大地提高研發效率。了解阿里云 Serverless 產品家族的最新進展,包括函數計算FC、Serverless應用引擎SAE和 Serverless事件總線EventBridge。
發布會傳送門
產品詳情頁
EventBridge 簡介
近年來,隨著云原生和 Serverless 概念的深入人心,事件驅動再一次成為了云應用架構領域的熱門詞匯。在 2018 年,Gartner 評估報告將 Event-Driven Model 列為10大戰略技術趨勢之一,事件驅動架構(EDA)將成為未來微服務的主流。該報告同時做出了以下預言:
到 2022 年,事件通知的軟件模型將成為超過 60% 的新型數字化商業的解決方案;
到 2022 年,超過 50% 的商業組織將參與到事件驅動的數字化商業服務的生態系統當中;
同年 5 月,云原生 CNCF 基金會托管了開源 CloudEvents 項目,該項目旨在用統一和規范的格式來描述事件,來加強不同的服務、平臺以及系統之間的互操作性,事件在云原生大圖中的重要性不言而喻。
與此同時,在阿里云上實踐事件驅動架構卻不是一件簡單的事情:
阿里云的云產品,從 IaaS 到 PaaS,每天都有數以億計的事件產生,但卻沒有一種簡單和統一的方式來觸達這些事件;
很多云產品有自建的事件中心,但沒有采用統一的標準和規范來描述這些事件,用戶無法用同樣的方式來解釋這些事件;
云上的的事件目前非常獨立,無法形成規模效應,很難挖掘出有用的業務價值,只有充分發揮數據的規模效應,建立起數據的血緣關系,我們才能更好的發掘出數據的價值;
目前事件應用的場景偏離線分析,因缺乏開箱即用的中心化事件處理能力,無法應用在在線業務的場景。
為了解決這些問題,阿里云正式發布了最新云產品 EventBridge,一款無服務器事件總線服務,其使命是作為云事件的樞紐,以標準化的 CloudEvents 1.0 協議連接云產品和云應用,提供中心化的事件治理和驅動能力,幫助用戶輕松構建松耦合、分布式的事件驅動架構;另外,在阿里云之外的云市場上有海量垂直領域的 SaaS 服務,EventBridge 將以出色的跨產品、跨組織以及跨云的集成與被集成能力,助力客戶打造一個完整的、事件驅動的、高效可控的上云新界面。
EventBridge 核心能力
作為一款全新的云產品,EventBridge 是完全面向云原生設計和架構的,EventBridge 提供的核心能力分為以下幾類。
集成與被集成
集成能力和集成度是產品的關鍵點,EventBridge 將以低成本甚至零成本,低代碼甚至0代碼,跨組織和跨云的方式去連接云產品、云應用以及SaaS應用。
集成云產品
今天的阿里云,有數百個成熟的云產品,有數百萬應用的計算實例,它們每天會產生億級的云事件,但這些事件目前處于失控的狀態,是一片尚未被挖掘的數據寶藏。EventBridge 將連接大部分阿里云的云產品,作為事件源或者事件目標,提高阿里云事件的中心化治理能力,充分挖掘云事件的業務價值;同時,通過一站式的云產品連接服務,幫助用戶更好地上云和用云。
集成云應用
用戶上云的最終目的是充分撬動云計算帶來的技術紅利,所以上云的過程不僅僅是 Rehost,還需要進行 Replatform 和 Refactor,EventBridge 提供豐富的集成能力,讓應用更好地連接和使用云服務。目前用戶可以通過 EventBridge 官方的 HTTP 接口、多語言客戶端(Java、Golang、Python、C#、PHP)以及 CloudEvents 社區的開源客戶端輕松接入阿里云的 EventBridge 生態。
集成第三方 SaaS
對于 SaaS,阿里云堅持被集成的戰略,可以預計在阿里云上會成長出一批又一批優秀的 SaaS 提供商,EventBridge 將為 SaaS 提供便捷的方式融入阿里云生態體系,與阿里云一方云產品深度融合。
協調與驅動
Serverless 應用架構的最佳實踐便是事件驅動,無論是傳統的微服務還是函數計算,EventBridge 將極大地簡化事件驅動架構的研發成本,海量的函數以及微服務將以事件的形式被有序協調。
關于編排(Orchestration)和協調(Choreography),Gartner 報告中對比了兩種架構的區別,通過請求驅動來組合和編排微服務和函數的方式帶來了很多不必要的強耦合,而通過事件驅動的方式來協調微服務和函數,將是更徹底的解耦,提高程序的韌性,業務的開發也將變得更加敏捷和高效。
數據通道
EventBridge 另一個核心能力是為流式的數據承擔通道的責任,通過 CloudEvents 規范和 Schema 注冊表(Coming Soon)來統一描述這些數據,并提供基礎的過濾和轉換的能力,在不同的數據倉庫之間、數據處理程序之間、數據分析和處理系統之間進行數據路由。
為此,EventBridge 即將上線 Connect 能力,通過大量的 Source 和 Sink Connector 將用戶的數據在云上流動起來。
EventBridge 基本模型
EventBridge 產品包含幾個基本概念:事件、事件總線、事件源、事件規則以及事件目標。
如上圖所示,事件從事件源被投遞至事件總線,經過規則的過濾和轉換處理,最終被投遞給多種事件目標,完成事件的處理。
事件
事件,代表了事情的發生、條件和狀態的變化。在云的時代,事件是無處不在的,云的任何一個產品、一個應用、甚至一個資源都在時刻發生事件,它們稱為事件源。事件源來自不同的組織和環境,事件源對事件將被如何響應沒有任何預期,事件目標通過中心化的事件總線來訂閱事件,依賴事件具備的自描述能力,來低成本地理解和處理事件。
EventBridge 中的事件通過云原生事件標準 CloudEvents 來描述,CloudEvents 是 EventBridge 生態系統中的一等公民。EventBridge 采取 CloudEvents 的主要原因為:
采取統一的云原生事件標準,有助于統一表達來自不同事件源中的事件,提升事件驅動程序的互操作性。
標準化,用戶沒有廠商鎖定的擔憂,基于 CloudEvents 的事件驅動程序可以在不同云之間隨意移植。
CloudEvents 具備非常簡單的結構,如下 JSON 文本為一個 CloudEvents 事件。
阿里云 EventBridge 目前支持兩類事件:自定義事件和阿里云服務事件。
阿里云服務事件:具備預先定義好的 Schema,來自各個云產品關于用戶資源狀態變更的事件,比如云視頻會議事件,包括會議開始、結束、成員變更等會議事件。
自定義事件:用戶可以使用 CloudEvents 社區的開源 SDK、EventBridge 官方的多語言輕量級 SDK、EventBridge Connect、WebHook等(后兩種能力即將開放)方式投遞自定義事件至 EventBridge,豐富的事件源接入方式助力客戶快速打造事件驅動的 Serverless 應用程序。
事件總線
事件總線是一個抽象概念,是事件的載體,阿里云 EventBridge 的事件總線具備用戶緯度的多租戶能力,每個總線有唯一的資源 ARN。事件發送至事件總線,隨后被事件規則路由至事件目標。
如上圖所示,阿里云的事件總線分為兩類:
默認事件總線:用戶開通 EventBridge 時自動創建 default 總線,所有接入的云服務事件都將主動投遞至 default 上,對于用戶來說云產品的事件是開箱即用的。
自定義事件總線:用戶自行創建,用來接受自定義的事件,是用戶研發事件驅動架構程序的必備資源。
規則
規則對事件總線中的事件進行過濾,過濾成功的事件經過一定的轉換路由到規則中指定的阿里云目標服務或者HTTP網關。
EventBridge 中的規則有兩端,一端連接事件總線,一端連接事件目標,并且是一對多的關系,每個規則最多關聯 5 個事件目標。同時,規則中的過濾和轉換組件,為用戶提供了輕量級的事件過濾和轉換的能力。
規則中過濾能力由事件模式(Event Pattern)提供,當前支持的過濾模式包含:
- 指定值匹配
- 前綴匹配
- 后綴匹配
- 除外匹配
- 數值匹配
- 數組匹配
- 以及復雜的組合邏輯匹配
規則中的轉換用于將 CloudEvents 轉變事件目標接受的格式,EventBridge 提供了四種轉換器:
- 完整事件:不做轉換,直接投遞原生 CloudEvents。
- 部分事件:通過 JsonPath 語法從 CloudEvents 中提取部分內容投遞至事件目標。
- 常量:事件只起到觸發器的作用,投遞內容為常量。
- 模板轉換器:通過定義模板,靈活地渲染自定義的內容投遞至事件模板。
EventBridge 產品架構
EventBridge 作為一款全新的云產品,全面采用了云原生技術棧,如下圖所示,EventBridge 搭建在容器服務提供的 Kubernetes 集群之上,設計了一整套基于 K8S 的 DevOps 研發體系,研發階段實踐 GitOps 提高交付和迭代效率,測試階段配備了大量的自動化測試,發布階段有完善的灰度機制,運維階段依賴 K8S 的自愈能力大幅度降低運維成本,并通過 Prometheus ,SLS 等產品建立了云原生的監控體系。
除此之外,EventBridge 依賴 RocketMQ 提供核心的事件存儲能力,RocketMQ 作為阿里自研的消息中間件,經歷過多次雙11流量高峰的考驗和無數個阿里內部業務場景的驗證,為 EventBridge 提供了高 SLA 的,高性能的事件傳輸服務。
EventBridge 典型場景
在本章節,我們根據 EventBridge 當前以及具備的能力,列舉三個典型的案例。隨著 EventBridge 生態的豐富,未來可以挖掘更多的業務場景,我們后續也會出一系列的樣板間項目,方便用戶快速將事件驅動的方式契合大盤自己的業務場景中。
場景 1:360 度業務全景
隨著企業業務規模的擴大,業務的穩定性愈發重要,為了避免故障隨著場景的復雜化而頻繁發生,對應用建設 360 度全方位的可觀測和監控體系尤為重要。傳統的應用基于云原生重構后,享受云原生技術紅利的同時也為應用的穩定性治理帶來了更多的復雜性,最主要的就是變更難以控制:業務依賴了整套云的基礎設施,IaaS 層物理資源、網絡資源以及 PaaS 層云服務,甚至依賴的上下游服務,時刻都在進行變更,用戶很難立馬感知到變更的發生以及相應的影響,而 95% 的故障都是由變更導致的。
為了解決這個問題,通過 EventBridge 打造 360 度業務全景圖,清晰地感知整個產品業務鏈路上,做了哪些變更,有哪些異常反應,這些異常反應是不是跟最近的變更有關聯,遇到特殊問題時,我們甚至可以通過自運維的方式,幫助產品更快的恢復,將影響面降低到最小。
而這些能力的擁有,離不開 EventBridge 集成多個云產品事件的能力,也離不開 EventBridge 可以通過事件觸發多個云產品響應的能力。事件作為一個信息的重要載體,通過 EventBridge 優雅的協調各個云產品進行有序工作。
場景 2:網頁截圖制作每日快報
場景 1 是一個比較復雜的案例,再來看一個可以快速上手的場景:使用 EventBridge 驅動函數計算幫我們進行網頁截圖,并通過郵箱發送出去,制作每日快報。
- 首先,業務系統通過分析,計算出今日有價值的頭條新聞,并把新聞 URL 地址通過 Event,發送給EventBridge;
- EventBridge 接收到 Event 后,根據預配置的規則,開始觸發函數計算的網頁截圖程序進行工作;
- 函數計算接收到 Event 后,自動創建資源,并運行網頁截圖程序進行截圖,保存到 OSS,同時通知 EventBridge 截圖完成,然后自動釋放資源;
- EventBridge 接收到函數計算完成的 Event 后,根據預配置的規則,開始觸發郵箱服務,將網頁截圖以郵件的形式發送給目標用戶;
從這個例子中,可以發現:Serverless 和 EventBridge,是云原生時代一個非常強有力的組合。通過事件去驅動函數計算,讓業務按需調度資源,不僅可以預防突發流量帶來的穩定性風險,還可以最大程度的降低成本,按需付費。
場景 3:新零售智慧家具門店
EventBridge 未來可以觸達的場景有多大?讓我們看一個新零售智慧家具門店的場景:
- 倉庫的家具商品入庫事件、門店的顧客進店事件通過 EventBridge 實時流轉到在線分析系統,讓我們知道現在店內有哪些家具商品,進店顧客的家具偏好是什么,并推送給商場門店的導購員或則廣告屏,幫助門店更好的下單轉化;
- 顧客在線電子支付后,訂單信息發送到 EventBridge,并觸發第三方物流公司進行送貨上門;
- 第三方物流公司,可以實時的將家具的位置信息通過 EventBridge 推送給移動端APP,客戶可以通過 APP 很方便的實時了解到自己的家具到哪了,預估還需要多久送到家;
- 所有這些通過EventBridge流轉的在線業務事件數據,最終通過EventBridge流轉到離線分析系統,自動生成業務報表,供管理層做績效考核或則運營決策。
在這個場景中,EventBridge 起著關鍵的通道作用,無論是 IoT、在線業務、還是大數據場景,EventBridge 將事件信息高效的流轉,推動業務目標達成。Event 既作為在線業務數據,又作為離線分析數據,這種方式,既降低了成本,同時也提高了效率。
EventBridge 未來規劃
作為云上的事件樞紐,EventBridge 最核心的能力就是連接。所以,未來EventBridge會重點建設生態網絡。無論是在線業務場景、IoT 場景、還是大數據場景,都能夠通過低代碼甚至 0 代碼的方式,集成到 EventBridge。如果你的應用部署在私有 IDC 機房,或則其他云廠商環境,我們也都將提供安全可靠的集成方式。
當然,云時代下這么龐大的神經中樞系統,不是一日可以建成的,需要大家一起的努力。所以未來,EventBridge 同時會致力于開源社區建設,也希望志同道合的朋友一起加入進來,成為云原生時代,Event-Driven Model 的第一批布道師。
?
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的最IN的云原生架构,阿里云 Serverless 事件总线 EventBridge 重磅发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MQTT在游戏运营发行中的实践
- 下一篇: 如何实现用户通信授权的可信、可知、可追溯