分布式系统学习——动态调度与负载平衡
动态调度
集中 分散
开环 不参考过去决策
闭环 参考
负载平衡
负载(系统相关)举例:
- CPU 队列的长度(进程数目)
- 某时段 CPU 队列的平均长度
- 可用内存的大小
- 上下文切换的速率
- 系统调用的速率
负载描述系统的负担状态
负载平衡算法构成方式
- 选取发出者
选取任务
任务应该足够大,值得耗费额外的资源(转移操作)来处理它
- 选出目标
- 集中式:收取信息协调者分配
- 非集中式:轮询(轮寻?)
信息策略:决定系统中其他站点的状态信息如何收集信息的(懒惰 or 积极)
发送者主动算法
超载发送给轻载站点
- 转移策略:阈值
- 选择策略:选择新任务
- 定位策略:阈值
- 信息策略:
接收者主动算法
负载不足时从重载站点获取额外任务
双向主动算法
接收者主动的渗透算法
基本思想:
预约策略
一个轻载站点按一定方式查询系统状态,请求某个重载站点
投标策略
- 重载站点向系统广播消息
- 接收到这一请求消息的站点根据自己的状态决定是否参与
广播策略
智能型任务调度算法
- 最佳任务调度是\(NP\)完全问题,传统研究的寻优,存在一些问题
- 分布式站点自治性和冬天变化的远程对象状态,使局部调度算法具有的全局状态信息是不确定的
- 系统观点来看
从而引出 智能型任务调度算法
任务调度中的知识及其表示
- 调度知识:设计任务调度算法的一些经验、原理、规则、就近调度原则、不要调度运行中的任务等。
- 对象知识:构成任务调度算法的一些基本知识,一个对象知识主要是由对象提、作用在其上的操作和相关知识三部分组成。
任务调度程序结构(图)
任务调度算法的实现
- 分层实现
- 核心层:观察处理器的状态。一行成统计数据;将任务分配到指定的处理器;常驻内存
- 决策层:完成调度任务决策,包裹状态管理和决策管理
- 用户界面层:良好的 HCI。
自学
- 基于 DNS 的
- 基于反向代理
基于 CDN
- 轮寻算法
Hash 散列算法
思考题
- 目前经常用到的负载均衡技术有哪些,都用在什么地方?
- 目前 memcached 集群用到的负载均衡技术有哪些
- 调研 JBoss 服务器中的负载平衡机制
分布式系统范型?
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!