1 简介
事件引擎作为事件流处理,集成中心,事件中心,流ETL的基础设施,建基于rocketmq的开源rocketmq eventbridge是一个很好的选择,经过分析后,rocketmq eventbridge基本满足要求,但域模型(domain)有比较大的改进空间,本次设计主要重构事件通道领域模型,及其持久层
前篇事件引擎EventBridge v1.0设计介绍设计,本文介绍设计的落地和代码实现细节,以及api说明,本版本与原版本最大区别是重构了领域模型和持久实现,重新设计
2 特性
2.1 重构逻辑事件通道
重新设计逻辑事件通道模型
2.2 分布式worker
引入elastic-platform,重构分布式worker,包括worker集群管理,配置管理
2.3 资源管理器
集成弹性资源组件,实现资源高可伸缩
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 技术架构
下图技术架构
eventbridge 构建逻辑事件通道,其中的rpc组件调用runtime构建物理通道,获取连接器状态等,目前runtime是rocketmq connect
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连接器