书的内容比较朴素,有些地方也有些凌乱。不过仍然可以借鉴很多思考和经验。
本书首先把集群调度、集群管理区分开来,分章节讨论。
集群调度
任务调度与资源调度
调度是集群管理的一部分。调度可以分为任务调度和资源调度:
- 任务调度: 主要解决任务执行顺序问题。涉及到任务间的拓扑(依赖关系,DAG、Group等)、优先级&饥饿、平面&队列&共享的Quota、抢占(preemption)
- 资源调度: 即资源分配(allocation)。给应执行的个体任务以资源,目前主要以过滤、排序模型为主。
任务调度是在资源调度上层。不同的CMS(集群管理系统,Cluster Management System)由于设计支持的场景不同,包含以上两层的重点、比例不同。例如偏大数据的CMS,偏通用在线任务的CMS等。
- K8S: 以pod为任务, scheduler负责资源调度。编排体现为不同的workload abstract与controller。例如Volc等短任务调度中有较多任务调度。
- 某内部系统: 以VM instance为任务,绝大多数都是资源调度。任务调度就是简单的FIFO, 但是后续可能会有优先级调度、抢占。
资源调度架构、算法与实践 (略)
资源调度指标
业务视角:
- 发布、弹性扩缩容的速度、成功率
- 运行的稳定性 (调度质量,如感知易出故障的机器)
- 响应业务变化的敏捷性,规则的灵活性、上线新规则的时间
内部视角:
- 资源分配率、碎片率、利用率、二次迁移量
- 高可用、吞吐量、时延
集群管理
内容
集群管理是全周期的管理:
- 集群建设: 容量与机型的规划、
- 集群运维: 迭代发布、故障处理:
指标
(内部视角) 资源效能:
- 资源分配率、碎片率
- 资源利用率
- 资源与应用可用率(?)
(内部视角) 管理效能指标:
- 人均管理和维护的服务器数量 (Google10000台/人)
- 集群服务器在线率 (版本、主动运维、故障处理)
- 集群软硬件故障处理维修周期 (故障自动检测、维修、自动化上线)
数据驱动
- 数据体系建设