一文詳解EventMesh落地華為云的探索及實(shí)踐
??想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:??
Gartner 2020調(diào)查顯示:到2024年,30%的電商企業(yè)將采用組合式應(yīng)用創(chuàng)新(PBC)。
對于PBC,Gartner 是這樣定義的:PBC是具有明確業(yè)務(wù)能力的多個(gè)數(shù)據(jù)模型、微服務(wù)、API應(yīng)用和事件通道的集成。它以業(yè)務(wù)為驅(qū)動(dòng),能獨(dú)立完成業(yè)務(wù)需求,不需要外部依賴。多個(gè)PBC可以以積木方式來建立企業(yè)解決方案,呈現(xiàn)完整統(tǒng)一的用戶體驗(yàn)。
下圖分別是單一PBC、組合PBC和多個(gè)組合PBC的示意圖。
PBC尤其適合電商業(yè)務(wù)場景下使用,它的價(jià)值包括:
- 商業(yè)驅(qū)動(dòng)的SaaS應(yīng)用,真正解決每個(gè)業(yè)務(wù)問題。
- 不鎖定單一供應(yīng)商,采購和開發(fā)最好的應(yīng)用服務(wù)。
- 低代碼方式集成應(yīng)用,敏捷上線,高效迭代。
- 對底層技術(shù)封裝,屏蔽技術(shù)實(shí)現(xiàn),更容易技術(shù)更新。
PBC的挑戰(zhàn)包括:
- 應(yīng)用集成缺乏統(tǒng)一標(biāo)準(zhǔn)。
- 應(yīng)用協(xié)議多樣化:HTTP, TCP, MQTT, AMQP 等等。
- 應(yīng)用數(shù)據(jù)模型多樣化:OpenAPI, AsyncAPI。
具體到咱們今天的主題——Apache EventMesh,它是一個(gè)云原生事件驅(qū)動(dòng)分布式應(yīng)用運(yùn)行時(shí),可以提供輕量級(jí)、多語言客戶端,支持多種通訊協(xié)議,是一個(gè)插件化架構(gòu),可以對接其他后端服務(wù)。
下圖就是EventMesh的整體架構(gòu),支持TCP、HTTP、gRPC等多種協(xié)議,也可以支持Java、Python、C、Go等多語言客戶端。縱橫來說,通過插件化可以對接各類開發(fā)者需要的后端服務(wù)。
EventMesh是怎么運(yùn)作的呢?它是一個(gè)事件驅(qū)動(dòng)的中間件,涉及到兩個(gè)角色:事件生產(chǎn)者、事件消費(fèi)者。事件生產(chǎn)者把事件發(fā)送到EventMesh,EventMesh把事件存儲(chǔ),這個(gè)事件存儲(chǔ)可以支持RocketMQ、Kafka。
中間件的作用包括:
- 基于線程池的多線程并發(fā)和異步調(diào)用, 提高請求并發(fā)量。
- 針對事件生產(chǎn)和消費(fèi)對性能的要求,獨(dú)立配置線程池參數(shù)。
- 事件消費(fèi)采用負(fù)載均衡和重試機(jī)制,保證事件消費(fèi)成功。
- 對事件進(jìn)行校驗(yàn)、過濾、路由和轉(zhuǎn)換,支持高級(jí)事件處理能力。
- 作為事件總線,通過插件化支持多種底層事件存儲(chǔ)。
EventMesh對SaaS組合式應(yīng)用場景是怎么做的呢?SaaS組合式應(yīng)用最大的問題是集成標(biāo)準(zhǔn)化問題,而EventMesh天然可以解決這個(gè)問題。EventMesh通過gRPC支持多語言SDK, 整合TCP和HTTP協(xié)議。gRPC是谷歌開源的基于HTTP/2的高性能RPC框架,支持Client和Server雙向異步通訊。gRPC數(shù)據(jù)模型是統(tǒng)一的,統(tǒng)一用Protobuf定義API接口數(shù)據(jù)模型,統(tǒng)一由CloudEvents定義事件模型。
在EventMesh的gRPC框架中,我們支持的gRPC事件使用場景包括:事件發(fā)送和批量事件發(fā)送、事件廣播、事件請求和響應(yīng)、事件訂閱和推送。
在gRPC的Protobuf事件模型中,每個(gè)事件是以SimpleMessage的數(shù)據(jù)模型呈現(xiàn),事件的實(shí)體內(nèi)容放在 content 字段里,CloudEvents是業(yè)界流行的事件模型。
gRPC 整合了EventMesh TCP和HTTP協(xié)議,讓運(yùn)行時(shí)和客戶端更加輕量。
從去年開始,華為云開始進(jìn)行廣泛調(diào)研,希望在云上做一個(gè)無服務(wù)器的事件總線。這時(shí)候我們發(fā)現(xiàn)EventMesh的理念跟華為云很相似,能力很強(qiáng)。所以我們就希望EventMesh被繼續(xù)做大,可以在華為云落地——這就是事件網(wǎng)格 (EventGrid)誕生的背景,它是華為云中間件在云原生時(shí)代推出的新一代無服務(wù)器事件總線。
EventGrid以EventMesh作為運(yùn)行時(shí)引擎,增加了華為自需的特性,包括可視化儀表盤、高級(jí)事件過濾、事件查詢跟蹤、死信存儲(chǔ)等,這都是我們的自研產(chǎn)品。整個(gè)EventGrid以事件驅(qū)動(dòng)方式對接華為云服務(wù)、微服務(wù)應(yīng)用和SaaS應(yīng)用。它對我們的價(jià)值是,希望通過這個(gè)服務(wù)能為華為云創(chuàng)造更多應(yīng)用場景,豐富華為云的開發(fā)者生態(tài)。
EventGrid整個(gè)架構(gòu)圖跟EventMesh很類似:
EventGrid在華為云有哪些場景呢?
比如ERP場景,當(dāng)新員工入職時(shí),HR系統(tǒng)產(chǎn)生新員工注冊事件,通過EventGrid推送歡迎新員工郵件,通知IT系統(tǒng)配備新電腦設(shè)備,發(fā)送財(cái)務(wù)部門新員工資料。
比如電商場景,倉庫商品入庫事件、門店顧客進(jìn)店事件通過EventGrid實(shí)時(shí)流轉(zhuǎn)到在線分析系統(tǒng),讓我們知道現(xiàn)在店內(nèi)貨物存量和顧客購買偏好,并推送相關(guān)廣告給到門店導(dǎo)購員。顧客在線支付后,訂單信息發(fā)送到EventGrid, 并觸發(fā)第三方物流公司進(jìn)行送貨上門。顧客可以通過物流事件實(shí)時(shí)查看運(yùn)送情況。
EventGrid是華為打造數(shù)字集成中心(Digital Integration Hub)的重要組成部分。它承接ROMA Connect集成平臺(tái)的事件流轉(zhuǎn),通過消息和事件完成多云、跨云的應(yīng)用集成以及SaaS伙伴應(yīng)用服務(wù)的集成。其面向事件驅(qū)動(dòng)的架構(gòu)平臺(tái)也是華為云成功的關(guān)鍵。
EventGrid官方事件源目前已經(jīng)超過50個(gè),包括智能邊緣平臺(tái)、數(shù)據(jù)接入服務(wù)、容器鏡像服務(wù)等等,主要還在Beta版本階段,服務(wù)于華為云內(nèi)部。當(dāng)然大家還可以創(chuàng)建自定義的事件源。
在華為云,通過采用EventMesh,我們可以實(shí)現(xiàn)可視化事件訂閱,支持多個(gè)事件目標(biāo);此外,事件源支持事件過濾;另外,事件目標(biāo)也支持事件轉(zhuǎn)換。
展望EventMesh的未來,有兩個(gè)重點(diǎn),首先是EventMesh的工作流,我們希望:
- 采用事件驅(qū)動(dòng)架構(gòu)讓工作流編排變得簡單和清晰。
- 應(yīng)用只需訂閱感興趣的事件,發(fā)送事件到對方主題即可。
- 適合用于微服務(wù)間事務(wù)處理場景(Saga)。
- 可以接入函數(shù),建立函數(shù)工作流(Serverless Workflow)。
其次是EventMesh的聯(lián)邦治理:
- 打破數(shù)據(jù)孤島,集成多云、跨區(qū)的數(shù)據(jù)和事件。
- 做到跨區(qū)容災(zāi),EventMesh間事件轉(zhuǎn)發(fā)。
- 通過實(shí)時(shí)分析和大數(shù)據(jù)收集,以及與平臺(tái)無關(guān)的連接以及對開放標(biāo)準(zhǔn)的支持,實(shí)現(xiàn)跨區(qū)、跨企業(yè)的事件聯(lián)邦治理。
- 從數(shù)據(jù)無政府狀態(tài)過渡到聯(lián)合治理和成熟的企業(yè)數(shù)據(jù)策略。
- 利用工具,將策略有效變?yōu)榇a,實(shí)現(xiàn)可視化、可觀察、可調(diào)整。