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