LtsJob平台jobTracker注册中心模块

Owen Jia 2020年06月10日 923次浏览

LTS-JOB:分布式任务调度平台

仓库地址:https://github.com/owen-jia/lts-job

QQ社区:806620585

围绕jobclient、tasktracker节点活跃状态如何在jobtracker中维护管理。

job-tracker app context

节点JobTracker上下文类JobTrackerAppContext,这个上下文在jobclient和tasktracker中也是各有一个,都是按全局引用的思路在各个对象中使用。在JobTracker上下文中有三个管理器:Channel、JobClient、TaskTracker。

channal manager

Channal管理器内存存储了jobclient、tasktracker与jobtracker建立的连接通道,同时还有一个tasktracker的离线通道存储,分别是:clientChannelMap、taskTrackerChannelMap、offlineTaskTrackerMap。

另外有2个轮询任务执行器,每个10s检测一次jobclient和tasktracker通道是否close,当close发生将对于通道从map中移除,特别处理的是tasktracker移入到offline map中。当重新open后再反向操作。

处理这些是通过jobclient和tasktracker各节点心跳机制来上报状态。只要心态活跃channal就一直保持,若jobclient和tasktracker服务停止则channal被迫close。

在LTS-JOB中channel的内部实现有三种,分别是mina、netty、自研socket机制。

remoting dispatcher

RemotingDispatcher类是jobtracker接受来自jobclient和tasktracker通信的统一分发中心,目前支持:提交任务、任务完成上报、获取任务、日志任务、取消任务,共6中远程通信类型,另外加上心跳通信,总共7中。

各业务类processor都交给对于的执行程序执行,心跳请求主要维护各channel的open\close状态。

在dispatcher中还支持请求限流措施,remoting.req.limit.enableremoting.req.limit.maxQPS,默认qps=500,不开启。

总结

对于jobtracker中channal manager来说,两个内置任务定期执行器最为关键,类似注册中心理念。

目前channal的异常断开并没有告警通知,只有debug的日志打印,也没有spring cloud注册中心的保护机制,相对来说是非常简单的。