分布式调度框架学习笔记

一、分布式调度框架的基本设计

二、线程池线程数量设置的基本逻辑

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

相关推荐
萌新小码农‍6 小时前
Spring框架学习day7--SpringWeb学习(概念与搭建配置)
学习·spring·状态模式
蓝婷儿6 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
行云流水剑6 小时前
【学习记录】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 与 Tools
人工智能·学习·交互
love530love6 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
一弓虽6 小时前
zookeeper 学习
分布式·学习·zookeeper
苗老大6 小时前
MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
人工智能·学习·语言模型
xhyu617 小时前
【学习笔记】On the Biology of a Large Language Model
笔记·学习·语言模型
小白杨树树7 小时前
【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理
笔记·学习
海棠蚀omo8 小时前
C++笔记-C++11(一)
开发语言·c++·笔记