知识卡片

调度器的过滤器链设计

专业/工作 · 317

内容

资源调度器把”选哪台机器运行这个任务”这个决策拆成一串各自独立、只负责单一判断维度的过滤器(如内存是否够、可用区是否匹配、镜像属性是否兼容、是否要和同组实例分散或聚集),候选主机必须依次通过所有过滤器的判断才能进入最终可选集合。这种链式设计的好处是每个过滤条件都能独立增删、独立测试,不需要为每一种新的调度策略组合去写一个新的整体判断函数。发散:这本质上是责任链模式在资源调度场景的应用——把一个复合决策拆成正交的小规则,比写一个大而全的if-else判断更容易维护和扩展,Kubernetes调度器的Predicates/Priorities机制也是同一思路。

参考来源

《OpenStack云计算实战手册 第3版》第4章《Nova——OpenStack计算服务》