Capacity調度器源碼解析
簡(jiǎn)介 源碼解析 Capacity 調度器的核心類(lèi)是CapacityScheduler。在初始化CapacityScheduler的時(shí)候,在構造函數initAsyncSchedulingProperties,里面會(huì )初始化調度器相關(guān)。 核心類(lèi)是AsyncSchedulingConfiguration,主要內容總結為:初始化異步調度器線(xiàn)程AsyncScheduleThread,可以初始化多個(gè),調度支持多線(xiàn)程。 AsyncScheduleThread繼承自Thread,核心是循環(huán)調度,調度的核心函數為schedule。 schedule函數 一般情況下,滿(mǎn)足下面條件的節點(diǎn)不會(huì )被分配資源: 心跳超時(shí)的節點(diǎn),心跳超時(shí)的節點(diǎn)一般認為是可能已經(jīng)dead了。為了可靠性考慮,不給此類(lèi)節點(diǎn)分配Container。 當前節點(diǎn)的狀態(tài)不為RUNNING狀態(tài),不為RUNNING狀態(tài)的節點(diǎn)是異常的,不能分配節點(diǎn)。 上述判斷的核心實(shí)現函數為shouldSkipNodeSchedule。 資源分配方式 資源分配方式分為: 按照節點(diǎn)分配資源 按照標簽進(jìn)行分配 按照節點(diǎn)分配資源 隨機產(chǎn)生一個(gè)隨機數,范圍是0 ~ ....