Skip to content

1.2_深入Worker

elevenqq edited this page Sep 29, 2018 · 2 revisions

功能简介

Coordination & ExecutingTask

Worker最核心的两大功能:参与集群的Coordination和对Task进行生命周期的管理,主要包括:

  • 和Manager的GroupCoordinator进行Reblance交互
  • 和Manager维持心跳(保持session)
  • 接收Manager指令,重启Task
  • 监控t_dl_task配置表,扫描到Task新增和删除时,发起Reblance
  • 监控t_dl_task配置表,扫描到Task-TargetState发生变化时,Pause或Resume Task
  • 监控t_dl_task配置表,扫描到Task配置参数发生变更时,自动重启Task

Probe

Worker内部运行了一系列的Probe,用于采集Task和Worker的各项运行指标,方便监控和统计,主要包括:

  • Task延迟时间
  • Task异常
  • Task的其它常规指标:每分钟同步的数据量,每分钟同步的流量,单条记录的写入速度,每分钟的读写交互次数等
  • Worker的各种运行指标:Jvm内存、GC次数、GC时间、网卡流量、CPU-load和使用率等

Rest

Worker内嵌了Jetty,用于提供Rest服务,这些服务的调用者,主要是Manager,如:重启Task服务、重启Worker、取元数据信息等。

BootMode

Worker支持两种启动方式:standalone和distributed,前者启动时只依赖于数据库,后者启动时需要同时依赖数据库、datalink-manager和zookeeper。

参数说明

下面对Worker的主要参数进行说明:

参数名称 参数描述
bootstrap.servers Reblance时需要的manager的ip/port列表。
格式:[ip:port,ip:port],其中port是manager.properties中指定的port
task.shutdown.graceful.timeout.ms Task优雅关闭的超时时间。
Worker在触发了Task的stopping后,会阻塞等待,直至触发该参数指定的超时时间,超时后,把Task设置成cancel状态
task.position.commit.interval.ms Task消费位点的commit间隔。
Worker内置了位点管理器——TaskPositionManager供Task选用,设计时为了性能的考虑,位点信息并不是实时提交,而是定时提交,该参数用来设置定时提交的时间间隔,默认为1s
rest.host.name 提供rest服务的主机名称
rest.port 提供rest服务的端口
group.id Worker所属Group的id
session.timeout.ms Worker和Manager的会话超时时间
该参数值必须在manager设定的区间范围之内,区间范围:[ group.min.session.timeout.ms,group.max.session.timeout.ms]
heartbeat.interval.ms Worker和Manager的心跳频率
heartbeat用于维持Manager和Worker之间的session,该参数值必须小于session.timeout.ms,并且建议不要大于session.timeout.ms的1/3
rebalance.timeout.ms Worker和Manager进行Rebalance时Join阶段的超时时间
每个Worker可以设置不同的值,manager会选用最大的那个值(以Group为单位)
zookeeper.root datalink在zk上注册的根节点名称,默认为datalink,可自定义更改
zookeeper.servers zk集群地址,格式:ip:port,ip:port,...
zookeeper.session.timeout.ms zk会话超时时间
Task的运行状态会注册到zk上,并且依赖状态节点保证task的互斥,所以建议【和zk的会话超时时间要大于【和manager的超时时间
zookeeper.connection.timeout.ms zk连接超时时间
classloader.type 插件使用的classloader类型
开发环境使用Dev;发布环境使用Rel;还有一个选项是Inherit,直接使用框架层的classloader,用的比较少
worker.bootMode Worker的运行模式
standalone,单机模式,依赖DB;distributed,分布式模式,依赖DB、ZK和Manager;
worker.probe.blackList Probe黑名单
名单内的probe不会被启动,配置时多个probe用逗号分隔