天天看點

事件引擎EventBridge v1.0實作解釋與API說明

1 簡介

事件引擎作為事件流處理,內建中心,事件中心,流ETL的基礎設施,建基于rocketmq的開源rocketmq eventbridge是一個很好的選擇,經過分析後,rocketmq eventbridge基本滿足要求,但域模型(domain)有比較大的改進空間,本次設計主要重構事件通道領域模型,及其持久層

前篇事件引擎EventBridge v1.0設計介紹設計,本文介紹設計的落地和代碼實作細節,以及api說明,本版本與原版本最大差別是重構了領域模型和持久實作,重新設計

2 規劃特性與釋出計劃

2.1 M1 邏輯事件通道(完成)

建構邏輯事件通道,映射實體事件通道

2.2 M2 分布式worker

引入elastic-platform,重構分布式worker,包括worker叢集管理,配置管理

2.3 M3 資料總管

內建k8s,實作資源高可伸縮

3 術語

Ø CloudEvents

用标準方式描述事件資料的開源規範,旨在簡化事件聲明以及跨服務、跨平台的消息投遞

Ø 事件

狀态變化的資料記錄

Ø 事件總線

事件總線負責接收來自事件源的事件

4 參考資料

《rocketmq eventbridge與connect源碼原理分析I-架構,服務群組件.docx》

《rocketmq eventbridge與connect源碼原理分析II-worker.docx》

《事件引擎eventbridge1.0 設計說明書.docx》

5 場景視圖

下圖展示元件的場景視圖

事件引擎EventBridge v1.0實作解釋與API說明

插件域 清單本地插件,自檢插件可用性;用例針對本地插件,并非runtime

類型定義 連接配接器類型注冊,包括連接配接器參數,涉及手動錄入,執行角色是

邏輯事件通道 拖拽建構邏輯事件通道,執行角色是

運作域 使用者建構好邏輯事件通道,下發到runtime運作,支援一鍵啟停整個通道,也可以單個連接配接器啟停

6 運作架構

事件引擎EventBridge v1.0實作解釋與API說明

EventBridge可以看作是runtime的管理台,domain建構,rpc 建立并運作實體事件通道,事件相容CloudEvent标準,runtime可以無縫切換

7 技術架構

下圖技術架構

事件引擎EventBridge v1.0實作解釋與API說明

建構邏輯事件通道,其中的rpc元件調用runtime建構實體通道,擷取連接配接器狀态等,目前runtime是rocketmq connect

runtime是事件通道的實體實作者,執行者;worker是其核心元件,包裝執行連接配接器,默默搭通消息總線,連接配接source/target;提供,叢集,分片,位點,配置等核心服務

底層rocketmq,提供消息(事件)存儲,分布式等支撐服務

8 工程架構

事件引擎EventBridge v1.0實作解釋與API說明

core.domain 邏輯事件通道的模型

core.client 遠端調用接口,定義與runtime api的建構實體的事件通道的契約

adapter具體runtime實作

adapter.client core.client對應rocketmq connect的實作,建構/啟停connector等操作

adapter.web 邏輯事件通道模型的建構,連接配接器/轉換類型的注冊,基于spring boot的web應用

adapter.persistence 事件通道模型持久,目前實作neo4j/jpa

9 領域模型

重構邏輯事件通道領域是本元件的核心,本版本重新設計邏輯通道模型,面向對象,簡化一些暫時沒用的,如,RunOptions,面向對象模型更易達到資料完整性,對象操作使api易于了解,操作順暢移動

Ø 通道元件模型

事件引擎EventBridge v1.0實作解釋與API說明

Component 元件基類,定義元件基本屬性,行為

ClassComponent 類型元件,定義元件類型(className),參數中繼資料(ParameterMetadata)

ParameterMetadata 參數中繼資料,屬性require是否需要;屬性secret是否保密,可用于界面建構屬性,驗證屬性合法性

ObjectComponent 對象元件,是類型的執行個體,擁有參數,對應ParameterMetadata

Ø 事件通道模型

事件引擎EventBridge v1.0實作解釋與API說明

事件通道領域可以分3層,類型定義;執行個體;運作

EventBridge 事件通道,聚合一組事件源和事件目标,過濾器,轉換等;多個事件源輸入,經過過濾器分發,轉換,最終到事件目标

EventSourceClass/EventTargetClass/TransformClass 源/目标事件/轉換類型定義,注冊,包括各元件的屬性,類型,是否必須等,用于建構執行個體

EventSource/EventTarget/Transform 源/目标事件/轉換(執行個體)

Runner 運作執行個體,描述運作環境和資源

EventBus 運作總線,包括事件存儲(隊列)

*原版本還有EventRule類,考慮到EventRule最終落地到轉換器,本版本把事件通道轉換視為普通轉換,EventRule變成Transform的屬性

服務API

事件引擎EventBridge v1.0實作解釋與API說明

api分兩個接口AdminFacade,BusinessFacade

AdminFacade 管理類api,包括插件類型清單,插件類型注冊,使用者是

BusinessFacade 業務類api,使用者建構邏輯事件通道,運作事件通道,使用者是

api劃分為4個域,,,,

api概覽

Ø 插件域和類型域

事件引擎EventBridge v1.0實作解釋與API說明

Ø 邏輯通道域

事件引擎EventBridge v1.0實作解釋與API說明

Ø 運作域

運作域包括runner,runner也可以放到邏輯通道域; 連接配接器啟停

事件引擎EventBridge v1.0實作解釋與API說明

附錄

demo

事件引擎EventBridge v1.0實作解釋與API說明

demo分階段1,階段2,示範動建構态通道,連接配接器啟停,一對多/多對一的source到target分發

事件引擎EventBridge v1.0實作解釋與API說明

注意:rocketmq connect的rocketmq連接配接器用于阿裡雲,本地的rocketmq需要自行開發,可參考rabbitmq連接配接器