分布式系统学习——动态调度与负载平衡

动态调度

集中 分散

开环 不参考过去决策

闭环 参考

负载平衡

  1. 负载(系统相关)举例:

    1. CPU 队列的长度(进程数目)
    2. 某时段 CPU 队列的平均长度
    3. 可用内存的大小
    4. 上下文切换的速率
    5. 系统调用的速率

    负载描述系统的负担状态

负载平衡算法构成方式

  1. 选取发出者
  2. 选取任务

    任务应该足够大,值得耗费额外的资源(转移操作)来处理它

  3. 选出目标
    1. 集中式:收取信息协调者分配
    2. 非集中式:轮询(轮寻?)

信息策略:决定系统中其他站点的状态信息如何收集信息的(懒惰 or 积极)

发送者主动算法

超载发送给轻载站点

  1. 转移策略:阈值
  2. 选择策略:选择新任务
  3. 定位策略:阈值
  4. 信息策略:

接收者主动算法

负载不足时从重载站点获取额外任务

双向主动算法

接收者主动的渗透算法

基本思想:

预约策略

一个轻载站点按一定方式查询系统状态,请求某个重载站点

投标策略

  1. 重载站点向系统广播消息
  2. 接收到这一请求消息的站点根据自己的状态决定是否参与

广播策略

智能型任务调度算法

  1. 最佳任务调度是\(NP\)完全问题,传统研究的寻优,存在一些问题
    1. 分布式站点自治性和冬天变化的远程对象状态,使局部调度算法具有的全局状态信息是不确定的
    2. 系统观点来看

从而引出 智能型任务调度算法

任务调度中的知识及其表示

  1. 调度知识:设计任务调度算法的一些经验、原理、规则、就近调度原则、不要调度运行中的任务等。
  2. 对象知识:构成任务调度算法的一些基本知识,一个对象知识主要是由对象提、作用在其上的操作和相关知识三部分组成。

任务调度程序结构(图)

任务调度算法的实现

  1. 分层实现
    1. 核心层:观察处理器的状态。一行成统计数据;将任务分配到指定的处理器;常驻内存
    2. 决策层:完成调度任务决策,包裹状态管理和决策管理
    3. 用户界面层:良好的 HCI。

自学

  1. 基于 DNS 的
  2. 基于反向代理
  3. 基于 CDN

  4. 轮寻算法
  5. Hash 散列算法

思考题

  1. 目前经常用到的负载均衡技术有哪些,都用在什么地方?
  2. 目前 memcached 集群用到的负载均衡技术有哪些
  3. 调研 JBoss 服务器中的负载平衡机制

分布式系统范型?