伺服器調度方法和系統與流程
2023-09-13 00:10:40 1
本申請涉及計算機技術領域,尤其涉及一種伺服器調度方法和系統。
背景技術:
目前,現有技術中對伺服器調度的常用方法是:對一組的若干臺伺服器(伺服器集群)進行某一種固定方式的調度,例如指定一臺伺服器執行某一類型的任務指令。但是這種調度方式存在著以下缺點:
1.調度方式單一。只能進行固定一種方式的調度,來選擇伺服器列隊中的某臺機器執行任務指令,這種粗放的調度方式導致機器資源分配不合理、資源閒置嚴重,或者機器資源衝突、程序運行不暢。
2.伺服器隊列固定。不僅伺服器隊列是固定的,而且伺服器隊列的排列順序也是固定的,如果伺服器性能發生變化,這種固定的隊列不能夠挑選性能最新的伺服器執行任務指令。
3.伺服器資源浪費。按照現有技術中的調度方案,一臺伺服器固定執行某一類型的任務。例如,消耗伺服器cpu的計算類型指令在一臺機器上運行,但是該臺伺服器的內存和io資源充足,還有能力執行某些消耗內存和io資源的操作(如拷貝文件指令、涉及海量數據的指令等),但是上述調度方案並不分配該伺服器執行其他類型的任務,因此導致伺服器資源浪費。
綜上所述,上述的固定方式的伺服器調度方案存在伺服器資源浪費以及伺服器資源分配不合理的問題,因此有必要提出改進的技術手段解決上述問題。
技術實現要素:
本申請的主要目的在於提供一種伺服器調度方法和系統,以克服現有技 術中的伺服器調度方案存在的伺服器資源浪費以及伺服器資源分配不合理的問題。
根據本申請實施例提供了一種伺服器調度方法,其包括:收集多臺伺服器的資源消耗信息;根據資源類型分別組建多個對應不同資源類型的伺服器隊列,將所述多臺伺服器分別加入到每個伺服器隊列中,其中,所述伺服器隊列中的伺服器按照其對應的資源類型的資源消耗信息進行排序;接收伺服器任務指令,根據所述伺服器任務指令所消耗的資源類型匹配到對應的伺服器隊列,按照順序選取所述伺服器隊列中的伺服器執行所述伺服器任務指令。
其中,所述按照順序選取所述伺服器隊列中的伺服器執行所述伺服器任務指令,包括:按照順序選取所述伺服器隊列中的首臺伺服器進行閾值校驗,判斷選取的伺服器的資源消耗信息是否小於預設閾值,若是則選取該伺服器執行所述任務指令,否則按照順序選取下一臺伺服器繼續進行閾值校驗。
其中,所述方法還包括:若所述伺服器隊列中的伺服器均未通過閾值校驗,則等待預設時間後重新進行閾值校驗。
其中,在將所述伺服器分別加入到每個伺服器隊列中的步驟之前,所述方法還包括:檢測所述伺服器集群中的伺服器的是否正常運行,若是則將所述伺服器分別加入到每個伺服器隊列中。
其中,所述伺服器隊列包括:中央處理器資源隊列、內存資源隊列、輸入\輸出資源隊列、硬碟資源隊列。
根據本申請實施例還提供了一種伺服器調度系統,其包括:資源消耗信息收集模塊,用於收集多臺伺服器的資源消耗信息;伺服器隊列組建及維護模塊,用於根據資源類型分別組建多個對應不同資源類型的伺服器隊列,將所述多臺伺服器分別加入到每個伺服器隊列中,其中,所述伺服器隊列中的伺服器按照其對應的資源類型的資源消耗信息進行排序;接收模塊,用於接收伺服器任務指令;匹配模塊,用於根據所述伺服器任務指令所消耗的資源類型匹配到對應的伺服器隊列;調度模塊,用於按照順序選取所述伺服器隊列中的伺服器執行所述伺服器任務指令。
其中,所述調度模塊還用於,對選取的伺服器進行閾值校驗,判斷選取的伺服器的資源消耗信息是否小於預設閾值,若是則選取該伺服器執行所述任務指令,否則按照順序選取下一臺伺服器繼續進行閾值校驗。
其中,所述調度模塊還用於,若所述伺服器隊列中的伺服器均未通過閾值校驗,則等待預設時間後重新進行閾值校驗。
其中,所述系統還包括:檢測模塊,用於檢測所述伺服器集群中的伺服器的是否正常運行,若是則將所述伺服器分別加入到每個伺服器隊列中。
其中,所述伺服器隊列包括:中央處理器資源隊列、內存資源隊列、輸入\輸出資源隊列、硬碟資源隊列。
根據本申請的技術方案,通過將多臺伺服器按照各個資源消耗信息指標排序,並根據排序選取伺服器執行伺服器任務指令,從而能夠選取伺服器集群中性能最優的伺服器執行伺服器任務指令,並使得不同類型的伺服器任務指令能夠被調度到匹配的伺服器執行,實現了對伺服器集群的智能調度。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在附圖中:
圖1是根據本申請一個實施例的伺服器調度方法的流程圖;
圖2是根據本申請另一實施例的伺服器調度方法的流程圖;
圖3是根據本申請實施例的組建伺服器隊列的示意圖;
圖4是根據本申請實施例的伺服器調度系統的結構框圖。
具體實施方式
為使本申請的目的、技術方案和優點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有 其他實施例,都屬於本申請保護的範圍。
根據本申請實施例,提供一種伺服器調度方法。
圖1是根據本申請一個實施例的伺服器調度方法的流程圖,如圖1所示,所述方法至少包括以下步驟:
步驟S102,收集多臺伺服器的資源消耗信息。
在本申請的實施例中,所述多臺伺服器為伺服器集群中的有限數量的伺服器。其中,所述伺服器的資源消耗信息是指伺服器的硬體資源的消耗使用情況,具體地包括但不限於:中央處理器(cpu)利用率、內存(mem)利用率、輸入\輸出(io)消耗數量、硬碟(disk)利用率。需要說明,在本實施例中,伺服器的資源消耗信息還可以包括其他的伺服器硬體資源消耗信息(如網絡使用信息),此處不再贅述。
步驟S104,根據資源類型分別組建多個對應不同資源類型的伺服器隊列,將所述多臺伺服器分別加入到每個伺服器隊列中,其中,所述伺服器隊列中的伺服器按照其對應的資源類型的資源消耗信息進行排序。
根據資源類型組建的伺服器隊列可以包括cpu資源隊列,mem資源隊列,io資源隊列,disk資源隊列等等。將各個正常運行的伺服器分別加入到上述的伺服器隊列中,在每個伺服器隊列中按照伺服器隊列對應的資源類型的資源消耗信息對伺服器進行排序。如果伺服器隊列中的伺服器按照資源利用率的升序排列,那麼資源較空閒的伺服器排列在更靠前的位置。例如,在cpu資源隊列中,按照cpu消耗資源對伺服器升序排列,隊列中越靠前位置的伺服器當前cpu利用率越低,即cpu越空閒。實際上,伺服器隊列就是將多臺伺服器分別按照各個資源消耗信息指標進行排序。
需要說明,在步驟S104中需要按照預設時間(例如以秒為單位)動態更新各個對應不同資源類型的伺服器隊列,使得隊列中的伺服器的排序結果實時反映每個伺服器的資源消耗的實際指標。
步驟S106,接收伺服器任務指令,根據所述伺服器任務指令所消耗的資源類型匹配到對應的伺服器隊列,按照順序選取所述伺服器隊列中的伺服器執行所述伺服器任務指令。
一般地,伺服器任務指令與業務邏輯相關,當接收到用戶傳入的伺服器任務指令後,首先判斷該任務指令所消耗的資源類型:比如消耗cpu類,消耗mem類,消耗io類,消耗disk類等等。然後根據用戶傳入的任務指令所消耗的資源類型,匹配到與該資源類型相對應的伺服器隊列,例如消耗cpu類的任務指令匹配到cpu資源隊列。接著在匹配到的對應的伺服器隊列中按照順序選取伺服器執行所述伺服器任務指令。如果伺服器隊列中的伺服器按照資源利用率的升序排列,伺服器隊列中排列靠前的伺服器的資源較空閒,因此可以按照從前至後的順序選取資源較空閒的伺服器執行需消耗該資源的伺服器任務指令,在保證程序運行效果的同時平衡了機器使用率;如果伺服器隊列中的伺服器按照資源利用率的降序排列,伺服器隊列中排列靠後的伺服器的資源較空閒,因此可以按照從後至前的順序選取資源較空閒的伺服器執行需消耗該資源的伺服器任務指令,在保證程序運行效果的同時平衡了機器使用率。
在本申請的一個實施例中,在選取伺服器隊列中的伺服器執行伺服器任務指令之前,需要對選取到的伺服器進行閾值校驗,如果該伺服器通過閾值校驗則選取該伺服器執行伺服器任務指令。具體地,首先判斷伺服器隊列中的第一臺伺服器的資源消耗信息是否小於預設閾值,若是則該第一臺伺服器通過閾值校驗,選取該第一臺伺服器執行所述任務指令;如果選取的第一臺伺服器的資源消耗信息大於或等於預設閾值,則過濾掉該第一臺伺服器,繼續選取伺服器隊列中的第二臺伺服器進行閾值校驗,判斷該第二臺伺服器的資源消耗信息是否小於預設閾值,若是則該第二臺伺服器通過閾值校驗,選取該第二臺伺服器執行所述任務指令,否則繼續選取伺服器隊列中的第三臺伺服器進行閾值校驗,依次類推直到有一臺伺服器通過閾值校驗,選取通過閾值校驗的伺服器執行所述任務指令。需要說明,所述閾值可以是一個校驗閾值或一組校驗閾值。例如:在對cpu資源隊列中的伺服器進行閾值校驗時,校驗閾值既可以是只有cpu資源閾值這一個閾值,也可以是包括cpu資源閾值、mem資源閾值、io資源閾值等在內的一組閾值。此外,在校驗閾值為多個閾值的情況下,只有在伺服器的資源消耗信息均小於多個閾值時,才判斷伺服器通過閾值校驗。在本實施例中,進行閾值校驗的極端情況是伺服器隊列中的伺服器均未通過閾值校驗,在這種情況下需等待預設時間後重新進行 閾值校驗,直到有通過閾值校驗的伺服器出現為止,最終選取通過閾值校驗的伺服器執行任務指令。
下面結合圖2詳細描述上述處理的細節。圖2是根據本申請另一實施例的伺服器調度方法的流程圖,如圖2所述,所述方法至少包括以下步驟:
步驟S202,收集多臺伺服器的資源消耗信息。
具體地,在每臺伺服器中安裝代理(Agent),通過發送心跳信息檢測伺服器是否正常運行,同時收集正常運行的伺服器的資源消耗信息、版本信息情況等。其中,所述伺服器的資源消耗信息的類型包括但不限於:消耗cpu利用率、mem利用率、io消耗數量、disk利用率。例如,收集到一臺伺服器的資源消耗信息包括:cpu利用率為50%,mem利用率為80%,io消耗數量為20。在本申請的一個實施例中,伺服器的資源消耗信息還可以包括其他的伺服器硬體資源消耗信息(如網絡使用信息),此處不再贅述。
步驟S204,根據資源類型分別組建多個對應不同資源類型的伺服器隊列,將正常運行的伺服器分別加入到每個伺服器隊列中,其中,所述伺服器隊列中的伺服器按照其對應的資源類型的資源消耗信息的大小進行排序。
下面結合圖3詳細描述組建及維護伺服器隊列的技術細節。參考圖3,伺服器集群31包括有4臺伺服器(S1、S2、S3和S4),根據資源類型分別組建多個對應不同資源類型的伺服器隊列32,分別是:cpu資源隊列33、mem資源隊列34、io資源隊列35、disk資源隊列36。在本實施例中,組建的伺服器隊列還可以包括對應其他資源類型的伺服器隊列,例如網絡(net)資源隊列,此處不再贅述。將伺服器(S1、S2、S3和S4)分別加入到組建的4個伺服器隊列中,其中在cpu資源隊列33中按照伺服器的cpu利用率由小到大的順序排序,在mem資源隊列34中按照伺服器的mem利用率由小到大的順序排序等等。通過圖3可以看出,在不同的伺服器隊列中,伺服器的排列順序是不同的。
步驟S206,接收伺服器任務指令,其中,伺服器任務指令包括有linux命令、shell腳本、python腳本等等。根據所述伺服器任務指令所消耗的資源類型匹配到對應的伺服器隊列。一般地,計算類的任務指令,可以匹配到cpu 資源隊列;文件拷貝類的任務指令,可以匹配到disk資源隊列或io資源隊列;涉及海量數據的任務指令,可以匹配到mem資源隊列;佔用資料庫連接或者socket連接數量大的任務指令,可以匹配到網絡(net)資源隊列。
步驟S208,在匹配到的伺服器隊列中按照順序選取伺服器隊列中的伺服器。如果伺服器隊列中的伺服器按照資源利用率的升序排列,伺服器隊列中排列靠前的伺服器的資源較空閒,因此可以按照從前至後的順序選取資源較空閒的伺服器;如果伺服器隊列中的伺服器按照資源利用率的降序排列,伺服器隊列中排列靠後的伺服器的資源較空閒,因此可以按照從後至前的順序選取資源較空閒的伺服器。
步驟S210,對選取的伺服器進行閾值校驗,判斷選取的伺服器的資源消耗信息是否小於預設閾值,若是則執行步驟S212,否則按照順序選取下一臺伺服器繼續進行閾值校驗。
在本實施例中,設置一組校驗閾值進行閾值校驗。具體地,閾值校驗過程包括:首先確定一組校驗閾值(所述閾值也可以根據需求隨時進行動態調整),比如cpu利用率為50%、mem利用率為80%、io消耗為20等等。如果選取的第一臺伺服器的各個資源消耗信息均在校驗閾值之下,那麼該第一臺伺服器就為最佳的可執行伺服器任務指令的伺服器;如果選取的第一臺伺服器各個資源消耗信息指標中有一個指標在閾值之上,那麼就過濾掉該伺服器,繼續選取該伺服器隊列中的第二臺伺服器,斷該第二臺伺服器的各個資源消耗信息是否均小於預設閾值,若是則該第二臺伺服器通過閾值校驗,選取該第二臺伺服器執行所述任務指令,否則再選取伺服器隊列中第三臺伺服器進行閾值校驗,依次類推,直到有一臺伺服器通過閾值校驗。若所述伺服器隊列中的伺服器均未通過閾值校驗,則等待預設時間後繼續執行步驟S208,重新選取伺服器進行閾值校驗,直到有通過閾值校驗的伺服器出現為止。
步驟S212,選取通過閾值檢驗的伺服器執行步驟S206接收到的伺服器任務指令。
通過本申請的上述實施例,能夠選取伺服器集群中性能最優的伺服器執行伺服器任務指令。
根據本申請實施例,還提供一種伺服器調度系統。
圖4是根據本申請實施例的伺服器調度系統的結構框圖,如圖4所示,所述系統包括:資源消耗信息收集模塊41、伺服器隊列組建及維護模塊42、接收模塊43、匹配模塊44和調度模塊45,下面詳細描述各模塊的結構和功能。
資源消耗信息收集模塊41,用於收集伺服器集群中的多臺伺服器的資源消耗信息,其中,所述資源消耗信息包括但不限於:中央處理器(cpu)利用率、內存(mem)利用率、輸入\輸出(io)消耗數量、硬碟(disk)利用率、網絡(net)使用情況等。
伺服器隊列組建及維護模塊42,用於根據資源類型分別組建多個對應不同資源類型的伺服器隊列,將所述多臺伺服器分別加入到每個伺服器隊列中,其中,所述伺服器隊列中的伺服器按照其對應的資源類型的資源消耗信息進行排序。在本申請實施例中,所述伺服器隊列包括但不限於:cpu資源隊列、mem資源隊列、io資源隊列、disk資源隊列。在本實施例中,將伺服器集群中的多臺伺服器分別加入到上述的伺服器隊列中,在每個伺服器隊列中按照伺服器隊列對應的資源類型的資源消耗信息對伺服器進行排序。如果伺服器隊列中的伺服器按照資源利用率的升序排列,那麼資源較空閒的伺服器排列在更靠前的位置。需要說明,伺服器隊列組建及維護模塊42需要按照預設時間(例如以秒為單位)動態更新各個伺服器隊列,使得隊列中的伺服器的排序結果實時反映每個伺服器的資源消耗的實際指標。
進一步,所述系統還包括有:檢測模塊(圖中未示出),用於檢測所述伺服器集群中的伺服器是否正常運行,若是則將所述伺服器分別加入到每個伺服器隊列中。
接收模塊43,用於接收伺服器任務指令,其中,所述伺服器任務指令包括有linux命令、shell腳本、python腳本等等。
匹配模塊44,用於根據所述伺服器任務指令所消耗的資源類型匹配到對應的伺服器隊列。一般地,伺服器任務指令與業務邏輯相關,當接收到用戶傳入的伺服器任務指令後,首先判斷該任務指令所消耗的資源類型:比如消 耗cpu類,消耗mem類,消耗io類,消耗disk類等等。然後根據用戶傳入的任務指令所消耗的資源類型,匹配到與該資源類型相對應的伺服器隊列,例如,計算類的任務指令,可以匹配到cpu資源隊列;文件拷貝類的任務指令,可以匹配到disk資源隊列或io資源隊列;涉及海量數據的任務指令,可以匹配到mem資源隊列;佔用資料庫連接或者socket連接數量大的任務指令,可以匹配到網絡(net)資源隊列。
調度模塊45,用於按照順序選取所述伺服器隊列中的伺服器執行所述伺服器任務指令。如果伺服器隊列中的伺服器按照資源利用率的升序排列,伺服器隊列中排列靠前的伺服器的資源較空閒,因此可以按照從前至後的順序選取資源較空閒的伺服器執行需消耗該資源的伺服器任務指令;如果伺服器隊列中的伺服器按照資源利用率的降序排列,伺服器隊列中排列靠後的伺服器的資源較空閒,因此可以按照從後至前的順序選取資源較空閒的伺服器執行需消耗該資源的伺服器任務指令,在保證程序運行效果的同時平衡了機器使用率。
進一步,所述選取模塊45還用於,對選取的伺服器進行閾值校驗,判斷選取的伺服器的資源消耗信息是否小於預設閾值,若是則選取該伺服器執行所述任務指令,否則按照順序選取下一臺伺服器繼續進行閾值校驗。需要說明,所述閾值可以是一個校驗閾值或一組校驗閾值。在校驗閾值為多個的情況下,只有在伺服器的資源消耗信息均小於多個閾值時,才判斷伺服器通過閾值校驗。如果所述伺服器隊列中的伺服器均未通過閾值校驗,則等待預設時間後重新進行閾值校驗,直到有通過閾值校驗的伺服器出現為止,最終選取通過閾值校驗的伺服器執行任務指令。
本申請的方法的操作步驟與系統的結構特徵對應,可以相互參照,不再一一贅述。
根據本申請的技術方案,通過將多臺伺服器按照各個資源消耗信息指標排序,並根據排序選取伺服器執行伺服器任務指令,從而能夠選取伺服器集群中性能最優的伺服器執行伺服器任務指令,並使得不同類型的伺服器任務指令能夠被調度到匹配的伺服器執行,實現了對伺服器集群的智能調度。
本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機 程序產品。因此,本申請可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或快閃記憶體(flash RAM)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限於相變內存(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光碟只讀存儲器(CD-ROM)、數字多功能光碟(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁碟存儲或其他磁性存儲設備或任何其他非傳輸介質,可用於存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitory media),如調製的數據信號和載波。
還需要說明的是,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
以上所述僅為本申請的實施例而已,並不用於限制本申請。對於本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之 內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求範圍之內。