链接: powerJob官方文档.
无锁化
为了保证高可用,一般会在admin部署多份,那么就难免要考虑多个调度端同时工作,而带来的重复调度问题。
-
在XXL-JOB中使用了数据库锁,来保证在多台调度段同时工作时,仅有一台机器提供调度工作。
-
在PowerJob中,引入了执行器分组的概念。同一个执行器APPNAME仅有一台机器来调度,这样实现了调度的横向扩展,也避免了同一个任务被重复执行。
MapReduce
- XXL-JOB中提供了分片广播的路由策略,这个路由策略的实现原理,其实是读取到当前注册的执行器下的所有机器,携带者机器index,总机器数total,将请求发送给所有的机器,具体的实现根据客户端接收到的index和tital来进行哈希分配。
- PowerJob使用了MapReduce的思想, 由调度端调度端发一个请求给某一个客户端,请求参数携带了当前APPNAME下的所有客户端地址客户端参数等,接收到请求的客户端承担map的职责分发任务,监控任务执行状态。各个客户端执行完毕之后,会给分发请求的客户端响应,并由此客户端承担Reduce的职责来汇总执行结果。