Diego竞拍如何分配任务
当新的应用需要分配到虚拟机时,Diego Auction决定使用哪台机器,拍卖算法均衡几台虚拟机,优化app的可用性和恢复力。
Tasks 和 Long-Running Processes
- Tasks有限时间运行的程序。
- Long-Running Processes,一直运行着的程序
每次竞拍分配当前一批任务,LRPs。
Ordering the Auction Batch
Diego 拍卖算法分配任务满足以下结果,降优先级排序: - 保证每个LRP至少一个实例在运行
- 在当前批处理中运行所有的任务
- 尽可能分散任务到可获得的虚拟机中
拍卖商把一批任务安排一个优先级。
Auctioning the Batch to the Cells
当拍卖商把任务的优先级排好之后,各个虚拟机就去竞标合适自己运行的任务。拍卖商查询每个Cells看哪个最适合运行当前的job。
- job只会分配给具有合适的软件栈结构和有足够的资源的主机。
- 分配LRP实例给没有已经分配给其它相同的LRP实例
- 分配给最轻负载的Cell 如下图分配任务的规则:
Triggering Another Auction
如新的部署任务产生,或者实际运行的计数器少于期望运行的计数器等,都会让CC触发拍卖动作。