分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度
启动jetty服务并执行调度1.1 启动一个jetty server服务 首先加载ServerConnector, 加载HandlerCollection并设置handlers, 其中connector负责接受客户端http请求, 而handlers负责处理客户端请求, 最后就是调用start()方法启动jetty服务.1.2 负责处理admin调度中心请求的JettySer...
启动jetty服务并执行调度
1.1 启动一个jetty server服务
首先加载ServerConnector, 加载HandlerCollection并设置handlers, 其中connector负责接受客户端http请求, 而handlers负责处理客户端请求, 最后就是调用start()方法启动jetty服务.

1.2 负责处理admin调度中心请求的JettyServerHandler
其实底层就是通过解析admin调度中心传递过来的request参数, 获取类名, 方法名, 参数以及参数类型, 执行反射调用, 并且将最终结果返回给调度中心.

1.3 NetComServerFactory类根据参数, 执行反射调用

这样admin调度中心就与executor完成了一次调度时的通信, 即每次当admin调度中心cron时间片到达后, 就会触发一次调度, 通过调用executor事先已经暴露的Jetty服务, 调用executor执行器服务, 进行本次的任务调度.
1.4 本篇加上前几篇解析的文章, 对于xxl-job分布式定时任务框架的原理做一个总结
首先admin调度中心提供心跳注册的http接口, 提供同一个group组下的每个executor执行器初始化时, 利用心跳机制, 向admin调度中心汇报自己jetty server暴露服务的ip+port.而admin调度中心, 再根据用户在前台页面配置的路由调度策略, 阻塞策略, cron表达式以及运行模式, 动态可配置化操作定时job的执行. 当配置的cron时间片到达后, 会通过动态代理的方式, 发起一次http请求, 调用executor执行器的服务, 并且接收执行结果, 判断本次调度是否成功.
而接着executor执行器端, 在初始化时, 就开启一个专门用于注册自己服务的工作线程, 向调度中心汇报自己提供的jetty服务地址及端口, 通过暴露自己的jetty server服务, 接收admin调度中心的每一次http调度请求, 再解析admin调度中心发送的request请求参数, 获取到本次调用的类名, 方法名称, 方法参数以及参数类型, 执行反射调用执行类, 并将执行结果返回给admin调度中心.
到此为止, 本次xxl-job分布式任务调度框架解析就告一段落.
美滋滋, 睡觉^_^
更多推荐
所有评论(0)