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 場景視圖
下圖展示元件的場景視圖
插件域 清單本地插件,自檢插件可用性;用例針對本地插件,并非runtime
類型定義 連接配接器類型注冊,包括連接配接器參數,涉及手動錄入,執行角色是
邏輯事件通道 拖拽建構邏輯事件通道,執行角色是
運作域 使用者建構好邏輯事件通道,下發到runtime運作,支援一鍵啟停整個通道,也可以單個連接配接器啟停
6 運作架構
EventBridge可以看作是runtime的管理台,domain建構,rpc 建立并運作實體事件通道,事件相容CloudEvent标準,runtime可以無縫切換
7 技術架構
下圖技術架構
建構邏輯事件通道,其中的rpc元件調用runtime建構實體通道,擷取連接配接器狀态等,目前runtime是rocketmq connect
runtime是事件通道的實體實作者,執行者;worker是其核心元件,包裝執行連接配接器,默默搭通消息總線,連接配接source/target;提供,叢集,分片,位點,配置等核心服務
底層rocketmq,提供消息(事件)存儲,分布式等支撐服務
8 工程架構
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易于了解,操作順暢移動
Ø 通道元件模型
Component 元件基類,定義元件基本屬性,行為
ClassComponent 類型元件,定義元件類型(className),參數中繼資料(ParameterMetadata)
ParameterMetadata 參數中繼資料,屬性require是否需要;屬性secret是否保密,可用于界面建構屬性,驗證屬性合法性
ObjectComponent 對象元件,是類型的執行個體,擁有參數,對應ParameterMetadata
Ø 事件通道模型
事件通道領域可以分3層,類型定義;執行個體;運作
EventBridge 事件通道,聚合一組事件源和事件目标,過濾器,轉換等;多個事件源輸入,經過過濾器分發,轉換,最終到事件目标
EventSourceClass/EventTargetClass/TransformClass 源/目标事件/轉換類型定義,注冊,包括各元件的屬性,類型,是否必須等,用于建構執行個體
EventSource/EventTarget/Transform 源/目标事件/轉換(執行個體)
Runner 運作執行個體,描述運作環境和資源
EventBus 運作總線,包括事件存儲(隊列)
*原版本還有EventRule類,考慮到EventRule最終落地到轉換器,本版本把事件通道轉換視為普通轉換,EventRule變成Transform的屬性
服務API
api分兩個接口AdminFacade,BusinessFacade
AdminFacade 管理類api,包括插件類型清單,插件類型注冊,使用者是
BusinessFacade 業務類api,使用者建構邏輯事件通道,運作事件通道,使用者是
api劃分為4個域,,,,
api概覽
Ø 插件域和類型域
Ø 邏輯通道域
Ø 運作域
運作域包括runner,runner也可以放到邏輯通道域; 連接配接器啟停
附錄
demo
demo分階段1,階段2,示範動建構态通道,連接配接器啟停,一對多/多對一的source到target分發
注意:rocketmq connect的rocketmq連接配接器用于阿裡雲,本地的rocketmq需要自行開發,可參考rabbitmq連接配接器