6

LtsJob平台jobTracker注册中心模块

 3 years ago
source link: https://blog.shareworld.vip/archives/lts-channal
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

LtsJob平台jobTracker注册中心模块

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

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

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

QQ社区:806620585

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

job-tracker app context

jobtrackerappcontext-6e3fc67e16d148159c9fa967b8469ab3.png

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

channal manager

up-54f5b879aa4b7f045fd1a53a69095bc2445.png

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

up-4a1bf89e4900c22305ad062a15c9911eb34.png

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注册中心的保护机制,相对来说是非常简单的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK