启动流程
Runtime 的启动流程
Last updated
Runtime 的启动流程
Last updated
启动过程总共分为三个阶段:读取并设置参数、启动服务、运行,每个阶段包含多个子模块。
此阶段是Runtime启动初始化阶段,主要是处理JVM参数和connect.conf
配置文件的参数,包含了:
参数解析
设置Runtime运行环境重要模块: 服务发现,集群配置信息同步,Source/Sink 消费进度,持久化线程,负载均衡以及RESTful接口
设置worker参数,并装载相关模块
更多参数配置请参考:
该阶段主要是启动Connector运行所需的所有环境,包含了多个模块:
常用的服务发现组件如Dubbo可以用zk,RocketMQ的Namesrv,RocketMQ Connect因为依赖了RocketMQ ,借助的是RocketMQ 的机制。集群中的每个节点都订阅相同的Topic,并且上线下线都发送节点信息到Topic,并且每隔一段时间向节点上报心跳信息,每次都同步节点保存的当前的全量节点信息,如果有节点尝试见没有心跳会剔除节点信息。这样就做到了节点见间的服务发现。节点信息就是节点唯一标识和节点上报心跳时间。
配置信息,集群中每个Worker节点启动Connector相关的配置信息,也会像集群信息一样在集群中每个节点全量同步,同时会持久化到每个节点。
每个runtime在本地都会有四个配置信息文件,在Runtime参数 storePathRootDir
所指定的文件夹中,其中两个配置文件包含了Connector的相关配置信息。
connectorConfig.json
connector 实例的参数设置,包含了connector运行的Topic设置、集群信息和任务信息等。
每个connector的配置参数不完全一样,具体配置请参考对应的Connector配置参数说明。
taskConnfig.json
可以使用RESTful接口中的getConfigInfo获取配置信息列表,具体请查看
****RESTful 接口 **
负责一个Connector的启动,停止,删除
获取设置信息和负载信息
具体信息请参考
positionManagementSevice和offsetManagementSevice是一对相互的服务,其中前者对应Source Connector的处理进度,后者对应Sink Connector的处理进度。
在Runtime参数 storePathRootDir
所指定的文件夹中,其中两个配置文件有配合对应Service文件
position.json
offset.json
该模块每隔一定时间进行一次进度持久化,将消息写入RocketMQ的Broker集群中,分别会处理
connectorConfig.json,taskConfig.json,position.json,offset.json四个文件。
具体时间间隔的参数配置请参考
RocketMQ Connect负载均衡跟RocketMQ Consumer和Queue之间的负载均衡类似,都是每个节点运行相同的负责均衡算法计算本节点应该处理的Task。
RocketMQ Connect集群中如果有节点挂掉,集群信息会发生变化,每个节点检查到集群信息发生了变化就会出发负载均衡,对集群中运行的Connector, Task重新分配,从而保证故障节点的任务分配到其它接单处理。
除了启动服务阶段的服务外,运行阶段主要是运行connector、负载均衡、task任务执行三个部分:
运行connector
负载均衡
task任务执行