分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度

启动jetty服务并执行调度

1.1 启动一个jetty server服务

    首先加载ServerConnector, 加载HandlerCollection并设置handlers, 其中connector负责接受客户端http请求, 而handlers负责处理客户端请求, 最后就是调用start()方法启动jetty服务.

分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度_第1张图片

1.2 负责处理admin调度中心请求的JettyServerHandler

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

分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度_第2张图片

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

分布式任务调度平台XXL-JOB--源码解析六:executor执行器源码解析之启动jetty服务接受请求并执行调度_第3张图片

    这样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分布式任务调度框架解析就告一段落.

美滋滋, 睡觉^_^

 

 

你可能感兴趣的:(1====>Java)