集成平台实现解释(二)运行时 架构,服务和组件

简介

集成平台是作为企业或复杂系统的"交通中枢",连接并协调各孤立的应用、数据和设备,打破"信息孤岛",让信息和业务流程在不同系统间自由、高效地流动。本平台支持拖拽"画"逻辑数据通道,调用runtime构建物理数据通道,实现0代码搭建系统间数据集成。

本系列解释集成平台的源码原理,包括数据通道,runtime,目前runtime是rocketmq connect

本文是分析rocketmq connet源码分析第一部分,架构,服务和组件

第二部分分析worker,worker connector,worker source task,worker sink task

关键词

OpenMessaging OpenMessaging 是 Linux 基金会下一个开源组织,致力于制定消息领域的标准;

集成平台/接口中台

参考资料

Connect

本章介绍connect平台

技术架构

上图是数据通道是逻辑定义,每个worker运行事件通道的部分任务,数据通道由多个源和多个目标,源与目标之间转换链构成

> 同一集群worker,共同运行一个数据通道的任务,负载均衡和容错

> rocketmq connect/rocketmq底层支撑,事件bus,数据同步,分布式特性支持

> 转换链,修改转换的数据,基于规则的实现

集群架构

下图是rocketmq connect的集群架构

若干worker组成执行集群,同一集群的worker共同运行同一个++数据通道++,worker间互为负载均衡和故障转移。

逻辑架构和场景

startup 启动worker,支持++standalone++ 和++分布式++两种模式

rest worker的内置rest服务,接收client的指令和请求

服务 集群服务,状态服务,配置服务,位点服务,分片服务等

workerconnect执行单位,封装连接器/任务,转换执行,状态维护

controller 控制器起着门面服务的作用,持有服务实例

plugin 类加载器,载入jar包,类型

utils ServiceThread和datasync组件

还有些组件本系列没有分析:

connector,transform,stat,metrics

原理分析

原理源码分析通过场景用例分析完成,包括启动,服务,worker(包括连接器和任务),系统组件

启动(startup)

worker启动有两种模式,分布式和standalone,流程差不多,下面分析一下分布式模式启动

启动从startup类发起,该类从命令行获取配置,实例化服务类,插件类,然后构建控制器;

控制器实例和初始化各服务和功能类,控制器两个职责

  1. 作为门面服务支持rest服务;
  2. 持有服务类,传递给Worker
worker集群启动

目前connect并没有worker集群的启动实现,需逐个worker节点启动,加入集群,集群的其他worker收到消费组变更通知,触发重分片

服务

上图服务逻辑架构图,下面逐个分析服务

集群服务

集群服务实现比较简单,职责是监听集群成员上下线,调用WorkerStatusListener监听接口,处理集群成员变更事件,驱动执行分片服务

监听集群成员变化是通过订阅消息引擎的消费组成员变更事件

分片服务

分片服务负责分派连接器和任务到worker

RebalanceService 分片服务,继承ServiceThread,获得定时执行和唤醒特性

RebanceImpl/AllocateConnAndTaskStrategy 分片的实现类,支持不同的分片策略;分片完成,连接器/任务分派到位,重新启动Worker连接器和任务

WorkerStatusListenerImpl 实现WorkerStatusListener接口,监听集群变化,唤醒分片服务,驱动重新分片

ConnectorConnectorConfigChangeListenerImpl 实现ConnectorConfigUpdateListener接口,监听connector/task配置变更,唤醒分片服务,驱动重新分片

分片策略

分片策略有2点关键

  1. 分片服务集成ServiceThread,支持唤醒执行和定时执行,而且定时时间间隔1秒,原因可能是集群变更事件有丢失,或者执行失败可能,引起任务丢失,频繁的分片要求分片策略有高的稳定性,尽量减少连接器和任务的转移引起启停
  2. 分片每个worker进行,分派属于自身worker的部分给自己,因此分片策略需与worker相关,不遗漏,不重复的分派

connect自带两个实现,默认实现,workerId排序,然后哈希分派;另一个是哈希一致性,这里不详细分析

配置服务(config)

配置服务负责连接器/任务配置存储和同步;连接器/任务启停

ConfigManagementService 配置管理服务,有local,memory,rocketmq实现,适配standalone和分布式模式,memory只能在standalone;local和rocketmq可用作分布式模式

DataSync 组件 负责分发请求到集群的所有worker,请求分两类,配置变更;connector/task启停指令,两类请求有重叠,配置变更最终通过重新分片反映到connector/task

对于配置变更,worker不直接处理,通过DataSync分发变更到集群,当然包括自身,在消息消费中处理,这样所有配置在每个worker有完整备份,用于故障转移,新worker同步

对于启停操作,connector/task分派到不同worker,worker不直接处理,通过DataSync分发变更到集群,各worker收到后识别是否自身处理

ConnectorConfigUpdateListener 配置变更通知接口,目前有一个实现,该实现分片服务介绍过,唤醒分片服务,驱动重新分片

DataSync组件分析可知,主要业务集中在消息消费方法

TARGET_STATE_PREFIX

CONNECTOR_PREFIX 连接器

TASK_PREFIX 任务

DELETE_CONNECTOR_PREFIX 删除连接器

系统通过消息key前缀识别分流处理,具体业务不详细分析

位点服务(position)

位点服务记录source/sink处理位置,用于分页和容错

"套路"与配置服务一样,通过消息key前缀分流处理

PositionUpdateListener 位点变更监听目前没有使用

  • 主要业务分析

ONLINE 是新节点起来,请求同步集群的其他节点数据,获得全量数据

状态服务(state)

状态服务跟踪connector/task的状态

"套路"与上面两个服务一样,通过消息key分流处理

  • 状态模型

WrapperStatusListener 该接口是聚合连接器和任务监听实现,连接器和任务通过该接口报告给状态服务

ConnAndTaskStatus 状态服务实现都拥有KeyValueStore,但并没有使用,而是使用ConnAndTaskStatus保存连接器和任务的状态

  • 主业务分析

资源管理

目前connect没有资源管理,计算资源即worker节点,worker节点相同消费组是同一个集群,作为计算资源分派任务

功能组件

rest服务

worker内置rest服务,RestHandle,输出worker连接器/任务新建,配置和变更等服务,实现依赖控制器

服务唤醒和等待组件(ServiceThread)

服务继承ServiceThread获得定时和唤醒执行服务逻辑的特性

​​​​​​​同步组件

datasync底层以消息引擎实现,用于数据同步和命令分发,例如,任务配置变更,通知集群的其他worker,其他worker保存到本地,每份数据都得到复制,用于任务故障转移时恢复

​​​​​​​store组件

上一章提到,位点,状态,配置的存储,store组件负责该功能

组件利用泛型和序列化器,支持不同的数据的存储,实现只有基于内存和文件,均为本地存储

​​​​​​​统计(stat)组件

不分析​​​​​​​

metrics组件

不分析

附录

open message

open message是阿里发起一个消息标准,旨在提高系统连通性,消息的自解释能能力,了解open message对了解rocketmq connect和接口中台有很大的帮助

相关推荐
中间件XL1 个月前
接口(集成)平台设计(一)-服务,接口,数据集和数据源
低代码·集成平台·接口平台
RestCloud3 个月前
智能制造的底层基建:iPaaS 如何统一 ERP、MES 与 WMS 的数据流
java·wms·erp·数据传输·ipaas·mes·集成平台
RestCloud7 个月前
10迁移TiDB数据库数据到GaussDB
数据库·tidb·etl·gaussdb·数据处理·数据同步·集成平台
Feather Duster8 个月前
国内开源集成平台(业务编排)调研
系统集成·企业服务总线·集成平台·业务编排
RestCloud9 个月前
ETL常见的数据转换方式
数据仓库·mysql·etl·数据处理·数据集成工具·集成平台
RestCloud9 个月前
ETLCloud中数据生成规则使用技巧
大数据·服务器·数据库·etl·数字化转型·数据处理·集成平台