一文詳解EventMesh落地華為云的探索及實踐

Gartner 2020調查顯示:到2024年,30%的電商企業將采用組合式應用創新(PBC)。
對于PBC,Gartner 是這樣定義的:PBC是具有明確業務能力的多個數據模型、微服務、API應用和事件通道的集成。它以業務為驅動,能獨立完成業務需求,不需要外部依賴。多個PBC可以以積木方式來建立企業解決方案,呈現完整統一的用戶體驗。
下圖分別是單一PBC、組合PBC和多個組合PBC的示意圖。

PBC尤其適合電商業務場景下使用,它的價值包括:
- 商業驅動的SaaS應用,真正解決每個業務問題。
- 不鎖定單一供應商,采購和開發最好的應用服務。
- 低代碼方式集成應用,敏捷上線,高效迭代。
- 對底層技術封裝,屏蔽技術實現,更容易技術更新。
PBC的挑戰包括:
- 應用集成缺乏統一標準。
- 應用協議多樣化:HTTP, TCP, MQTT, AMQP 等等。
- 應用數據模型多樣化:OpenAPI, AsyncAPI。
具體到咱們今天的主題——Apache EventMesh,它是一個云原生事件驅動分布式應用運行時,可以提供輕量級、多語言客戶端,支持多種通訊協議,是一個插件化架構,可以對接其他后端服務。
下圖就是EventMesh的整體架構,支持TCP、HTTP、gRPC等多種協議,也可以支持Java、Python、C、Go等多語言客戶端。縱橫來說,通過插件化可以對接各類開發者需要的后端服務。

EventMesh是怎么運作的呢?它是一個事件驅動的中間件,涉及到兩個角色:事件生產者、事件消費者。事件生產者把事件發送到EventMesh,EventMesh把事件存儲,這個事件存儲可以支持RocketMQ、Kafka。
中間件的作用包括:
- 基于線程池的多線程并發和異步調用, 提高請求并發量。
- 針對事件生產和消費對性能的要求,獨立配置線程池參數。
- 事件消費采用負載均衡和重試機制,保證事件消費成功。
- 對事件進行校驗、過濾、路由和轉換,支持高級事件處理能力。
- 作為事件總線,通過插件化支持多種底層事件存儲。
EventMesh對SaaS組合式應用場景是怎么做的呢?SaaS組合式應用最大的問題是集成標準化問題,而EventMesh天然可以解決這個問題。EventMesh通過gRPC支持多語言SDK, 整合TCP和HTTP協議。gRPC是谷歌開源的基于HTTP/2的高性能RPC框架,支持Client和Server雙向異步通訊。gRPC數據模型是統一的,統一用Protobuf定義API接口數據模型,統一由CloudEvents定義事件模型。
在EventMesh的gRPC框架中,我們支持的gRPC事件使用場景包括:事件發送和批量事件發送、事件廣播、事件請求和響應、事件訂閱和推送。
在gRPC的Protobuf事件模型中,每個事件是以SimpleMessage的數據模型呈現,事件的實體內容放在 content 字段里,CloudEvents是業界流行的事件模型。
gRPC 整合了EventMesh TCP和HTTP協議,讓運行時和客戶端更加輕量。

從去年開始,華為云開始進行廣泛調研,希望在云上做一個無服務器的事件總線。這時候我們發現EventMesh的理念跟華為云很相似,能力很強。所以我們就希望EventMesh被繼續做大,可以在華為云落地——這就是事件網格 (EventGrid)誕生的背景,它是華為云中間件在云原生時代推出的新一代無服務器事件總線。
EventGrid以EventMesh作為運行時引擎,增加了華為自需的特性,包括可視化儀表盤、高級事件過濾、事件查詢跟蹤、死信存儲等,這都是我們的自研產品。整個EventGrid以事件驅動方式對接華為云服務、微服務應用和SaaS應用。它對我們的價值是,希望通過這個服務能為華為云創造更多應用場景,豐富華為云的開發者生態。
EventGrid整個架構圖跟EventMesh很類似:

EventGrid在華為云有哪些場景呢?
比如ERP場景,當新員工入職時,HR系統產生新員工注冊事件,通過EventGrid推送歡迎新員工郵件,通知IT系統配備新電腦設備,發送財務部門新員工資料。
比如電商場景,倉庫商品入庫事件、門店顧客進店事件通過EventGrid實時流轉到在線分析系統,讓我們知道現在店內貨物存量和顧客購買偏好,并推送相關廣告給到門店導購員。顧客在線支付后,訂單信息發送到EventGrid, 并觸發第三方物流公司進行送貨上門。顧客可以通過物流事件實時查看運送情況。
EventGrid是華為打造數字集成中心(Digital Integration Hub)的重要組成部分。它承接ROMA Connect集成平臺的事件流轉,通過消息和事件完成多云、跨云的應用集成以及SaaS伙伴應用服務的集成。其面向事件驅動的架構平臺也是華為云成功的關鍵。
EventGrid官方事件源目前已經超過50個,包括智能邊緣平臺、數據接入服務、容器鏡像服務等等,主要還在Beta版本階段,服務于華為云內部。當然大家還可以創建自定義的事件源。
在華為云,通過采用EventMesh,我們可以實現可視化事件訂閱,支持多個事件目標;此外,事件源支持事件過濾;另外,事件目標也支持事件轉換。
展望EventMesh的未來,有兩個重點,首先是EventMesh的工作流,我們希望:
- 采用事件驅動架構讓工作流編排變得簡單和清晰。
- 應用只需訂閱感興趣的事件,發送事件到對方主題即可。
- 適合用于微服務間事務處理場景(Saga)。
- 可以接入函數,建立函數工作流(Serverless Workflow)。

其次是EventMesh的聯邦治理:
- 打破數據孤島,集成多云、跨區的數據和事件。
- 做到跨區容災,EventMesh間事件轉發。
- 通過實時分析和大數據收集,以及與平臺無關的連接以及對開放標準的支持,實現跨區、跨企業的事件聯邦治理。
- 從數據無政府狀態過渡到聯合治理和成熟的企業數據策略。
- 利用工具,將策略有效變為代碼,實現可視化、可觀察、可調整。































