一、分布式调度框架的基本设计
二、线程池线程数量设置的基本逻辑
cpu是分时复用的方法,线程是cpu调度的最小单元
如果当前cpu核数是n,计算密集型线程数一般设为n,io密集型(包括磁盘io和网络io)线程数一般设置为2n.
计算密集型线程数一般设为n的逻辑解释:
io密集型(包括磁盘io和网络io)线程数一般设置为2n的逻辑解释:
三、xxljob为什设置的线程是100,200?
四、power-job的无锁化设计
1. 任务分片
设计理念:在分布式环境中,任务通常被分成多个子任务(分片)并行执行。无锁化设计通过减少对共享资源的竞争来提高并发性能。
实现方式:PowerJob 通过将任务分片分配给不同的执行节点,避免了多个节点对同一资源的竞争,从而减少了锁的使用。
2. 去中心化调度
设计理念:去中心化调度意味着调度决策不依赖于单一的中心节点,从而避免了中心节点的性能瓶颈和单点故障。
实现方式:PowerJob 采用去中心化的调度策略,允许各个节点独立地进行任务调度和执行,减少了对中心节点的依赖。
3. 无状态设计
设计理念:无状态设计意味着每个节点不依赖于其他节点的状态信息,从而减少了锁的使用。
实现方式:PowerJob 的节点设计为无状态,任务的状态信息存储在外部持久化存储中(如数据库),节点通过查询持久化存储来获取任务状态。
五、分布式调度框架对比
ElasticJob相对xxl-job和power-job的对比:
备注:
推荐课程:
【分布式调度中心power-job中固定延迟任务调度问题】https://www.bilibili.com/video/BV1Qb421B7n8?vd_source=3c00905b4271effeeee3f3184045c49b