-
Notifications
You must be signed in to change notification settings - Fork 413
1.2_深入Worker
elevenqq edited this page Sep 29, 2018
·
2 revisions
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
Worker内部运行了一系列的Probe,用于采集Task和Worker的各项运行指标,方便监控和统计,主要包括:
- Task延迟时间
- Task异常
- Task的其它常规指标:每分钟同步的数据量,每分钟同步的流量,单条记录的写入速度,每分钟的读写交互次数等
- Worker的各种运行指标:Jvm内存、GC次数、GC时间、网卡流量、CPU-load和使用率等
Worker内嵌了Jetty,用于提供Rest服务,这些服务的调用者,主要是Manager,如:重启Task服务、重启Worker、取元数据信息等。
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用逗号分隔 |