集成平台实现解释(一)数据通道
简介
集成平台是企业或系统的“交通中枢”,连接并协调各孤立的应用、数据和设备,打破“信息孤岛”,让信息和业务流程在不同系统间自由、高效地流动。本平台支持拖拽”画”逻辑数据通道,调用runtime构建物理数据通道,实现0代码搭建系统间数据交换。
本系列解释集成平台的源码原理,包括数据通道,runtime,目前runtime是rocketmq connect
本文介绍数据设计的落地和代码实现细节
术语
连接器
数据通道
参考资料
技术架构
下图是集成平台的技术架构

集成平台 “画”逻辑数据通道,支持可视化拖拽
rpc 调用runtime构建和运行物理通道,获取连接器状态metrics等
rocketmq connect 目前runtime实现是rocketmq connect,数据通道的物理实现者,worker是其核心组件,包装执行连接器,默默搭通消息总线,连接source/target;提供集群,分片,位点,配置等核心服务
逻辑架构

domain 逻辑数据通道的模型,包括源连接器,目标连接器,转换,数据总线,runner等
domain.client 远程调用接口,定义与runtime api的构建和运行物理的连接器通道的契约
domain.facade 聚合接口,聚合通道所有组件的服务
console 管理台,负责画逻辑数据通道,下发逻辑通道到runtime,运行
console.client domain.client对应rocketmq connect实现,构建/启停connector等操作,可扩展其他,如,kafka,pulsar
console.web
persistence 事件通道模型持久实现,目前实现neo4j/jpa
transform 转换组件,转换是rocketmq connect的类型,实现基于规则的转换
领域模型
数据通道领域是本组件的核心
组件模型

Component 组件基类,定义组件基本属性和行为,支持可视化拖拽
ClassComponent 类型组件,定义组件类型(class),参数元数据(ParameterMetadata)
ParameterMetadata 参数元数据,名称name,属性require是否需要;属性secret是否保密,用于界面构建属性,验证属性合法性
ObjectComponent 对象组件,是类型的实例,即,配置参数,对应ParameterMetadata
数据通道模型

数据通道领域可以分3层,类型,实例;运行
DataBridge 数据通道,一组数据源和数据目标,转换构成;多个数据源输入,经过转换器,写入目标数据源
DataSourceClass/EventTargetClass/TransformClass 源/目标事件/转换类型定义,包括各组件的属性,参数定义
EventSource/EventTarget/Transform 源/目标事件/转换对象实例,可以理解为:类型+参数
Runner 启动运行器,设置运行环境和资源
DataBus 运行总线,包括source和sink连接器之间的数据管道,提供位点,持久,处理ack,出入计数等服务,目前rocketmq队列实现
插件模型
服务API
api分两个接口AdminFacade,BusinessFacade

AdminFacade 管理类api,包括插件类型列表,插件类型注册,使用者是系统管理员
BusinessFacade 业务类api,用户构建逻辑事件通道,运行事件通道,使用者是最终用户
api概览
- 插件域
插件api列表插件分类,分类的插件

- 类型域
组件类型注册,组件配置元素据

- 逻辑通道域
构建逻辑数据通道

- 运行域
运行域负责连接器启停,运行状态获取
架构review
本节回顾一下架构设计,并与实现代码比较
逻辑架构
下图是逻辑架构设计

设计4个核心类,连接器,数据集,接口,服务
连接器和数据集对应实现中的连接器,接入数据源,条件或参数,查询或写入指定的数据
数据通道,对应接口和服务,但粒度比设计小,重用性降低,复杂性也降低
技术架构

架构设计是使用基于zookeeper的分布式支撑服务,注册服务,分片服务,watcher,故障转移,分析了rocketmq connect源码,自带分布式机制,以消费组作为集群,集群服务消费组变更管发现群成员上下线,成员变更
rocketmq connect提供的服务参看下一篇《集成平台实现解释(二)-运行时 架构,服务和组件》
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)