分布式调度框架学习笔记

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

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

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

相关推荐
d111111111d17 小时前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
静小谢17 小时前
前后台一起部署,vite配置笔记base\build
前端·javascript·笔记
ask_baidu18 小时前
Doris笔记
android·笔记
嗷嗷哦润橘_18 小时前
AI Agent学习:MetaGPT之我的工作
人工智能·学习·flask
知识分享小能手19 小时前
CentOS Stream 9入门学习教程,从入门到精通,Linux日志分析工具及应用 —语法详解与实战案例(17)
linux·学习·centos
IMPYLH19 小时前
Lua 的 IO (输入/输出)模块
开发语言·笔记·后端·lua
2301_7833601319 小时前
【学习笔记】关于RNA_seq和Ribo_seq技术的对比和BAM生成
笔记·学习
qq_3977315119 小时前
Objective-C 学习笔记(第9章)
笔记·学习·objective-c
ujainu20 小时前
Python学习第一天:保留字和标识符
python·学习·标识符·保留字
sheji341620 小时前
【开题答辩全过程】以 基于Java的应急安全学习平台的设计与实现为例,包含答辩的问题和答案
java·开发语言·学习