本申請涉及云計算技術(shù)領(lǐng)域,尤其涉及一種云環(huán)境下統(tǒng)一資源調(diào)度方法及系統(tǒng)。
背景技術(shù):
云計算(cloudcomputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。按照服務(wù)方式,云計算包括基礎(chǔ)設(shè)施即服務(wù)(iaas)、平臺即服務(wù)(paas)和軟件即服務(wù)(saas)。其中,saas提供給客戶的服務(wù)是運營商運行在云計算基礎(chǔ)設(shè)施上的應(yīng)用程序,用戶可以在各種設(shè)備上通過客戶端界面訪問。按照部署方式,云計算包括公有云、私有云和混合云。
當(dāng)主機(jī)系統(tǒng)部署的應(yīng)用程序越來越多,如何管理每一個主機(jī)系統(tǒng)以及如何降低平臺的復(fù)雜性則變得非常重要。編排(orchestration)在it管理范疇中,指的是以用戶需求為目的,將各種服務(wù)或要素進(jìn)行科學(xué)的安排和組織,使各個組成部分平衡協(xié)調(diào),生成能夠滿足用戶要求的服務(wù)。編排包括資源調(diào)度、集群管理及提供額外主機(jī)等含義。在云環(huán)境下,服務(wù)并不是一成不變的,而是要動態(tài)調(diào)整的。資源調(diào)度是指在特定的資源環(huán)境下,根據(jù)一定的資源使用規(guī)則,在不同的資源使用者之間進(jìn)行資源調(diào)整的過程。集群管理是控制一組主機(jī)的過程,包括引入新的主機(jī)或者移除原有主機(jī)、獲取主機(jī)和容器的當(dāng)前狀態(tài),以及開啟或停止處理過程。資源調(diào)度與集群管理密不可分,這是因為調(diào)度器必須訪問集群中的主機(jī)才能實現(xiàn)對服務(wù)的調(diào)度。調(diào)度的首要任務(wù)是選擇主機(jī)。如果管理者決定在集群中運行一個服務(wù)或容器,調(diào)度器就用來確定選擇哪個主機(jī)。管理者可以根據(jù)需求提供選擇條件,但是最終還是由調(diào)度器確定選擇哪個主機(jī)。
現(xiàn)有技術(shù)中的資源調(diào)度方案一般都是針對公有云設(shè)計的,例如公有 云黑盒調(diào)度機(jī)制。然而,隨著私有云以及混合云的需求,有必要提供在私有云和混合云環(huán)境下都適合的資源調(diào)度方案。
技術(shù)實現(xiàn)要素:
本申請解決的技術(shù)問題之一是提供一種云環(huán)境下統(tǒng)一資源調(diào)度方法及系統(tǒng),可適應(yīng)私有云及混合云的部署環(huán)境。
根據(jù)本申請一方面的一個實施例,提供了一種云環(huán)境下統(tǒng)一資源調(diào)度方法,包括:
接收用戶提交的資源分配請求,并解析所述資源分配請求得到資源類型信息和資源描述信息;
判斷資源類型信息中是否包括私有云類型;
若是,首先通過所述資源描述信息在多臺私有云服務(wù)器中篩選出所有符合資源要求的私有服務(wù)器,然后,按照各個所述符合資源要求的私有服務(wù)器的資源歷史使用信息,對各個私有服務(wù)器進(jìn)行打分,選取分值最高的私有服務(wù)器進(jìn)行資源分配;
否則,在公有資源池中按照公有資源分配算法進(jìn)行資源分配。
優(yōu)選的,所述通過所述資源描述信息在多臺私有云服務(wù)器中篩選出所有符合資源要求的私有服務(wù)器,包括:
從所述資源描述信息中得到資源規(guī)格信息、資源限制條件信息及資源標(biāo)簽信息;
獲取各私有云服務(wù)器的硬件配置信息;
判斷私有云服務(wù)器的硬件配置信息是否滿足所述資源限制條件,并判斷私有云服務(wù)器是否具備滿足所述資源規(guī)格的硬件資源,若二者都為是,再進(jìn)一步確定所述私有云服務(wù)器是否具有與所述資源標(biāo)簽對應(yīng)的標(biāo)簽,若是,將該私有云服務(wù)器確定為符合資源要求的服務(wù)器。
優(yōu)選的,對私有服務(wù)器進(jìn)行打分,包括:
設(shè)定基礎(chǔ)分;獲得各資源使用率;確定分值為基準(zhǔn)分減去各資源使用率及各資源權(quán)重的乘積;其中,預(yù)設(shè)各資源權(quán)重。
優(yōu)選的,所述分值等于基礎(chǔ)分減去cpu利用率與第一權(quán)重乘積并減 去內(nèi)存利用率與第二權(quán)重的乘積,其中,預(yù)先設(shè)置cpu利用率對應(yīng)的第一權(quán)重、內(nèi)存利用率對應(yīng)的第二權(quán)重。
優(yōu)選的,還包括:
判斷所述私有服務(wù)器上是否有待分配資源依賴的微服務(wù),若有,則確定獎勵分,并更新所述分值為原分值加上所述獎勵分。
優(yōu)選的,還包括:
對所述符合資源要求的私有服務(wù)器進(jìn)行等級劃分;
在資源分配時選取分值最高且等級最低的私有服務(wù)器進(jìn)行。
優(yōu)選的,所述對所述符合資源要求的私有服務(wù)器進(jìn)行等級劃分,包括:
計算運行在所述私有服務(wù)器上的各類型微服務(wù)的數(shù)量,其中,所述服務(wù)類型包括生產(chǎn)級、批處理級和盡量滿足級;
確定私有服務(wù)器的等級為批處理級微服務(wù)數(shù)量與第三權(quán)重的乘積加上盡量滿足級微服務(wù)數(shù)量與第四權(quán)重的乘積,其中,預(yù)先設(shè)置批處理級微服務(wù)對應(yīng)的第三權(quán)重、盡量滿足級微服務(wù)對應(yīng)的第四權(quán)重,且第三權(quán)重大于第四權(quán)重。
優(yōu)選的,還包括:
若通過所述資源描述信息在私有云服務(wù)器中未篩選出符合資源要求的服務(wù)器,則在公有資源池中進(jìn)行資源分配。
根據(jù)本申請另一方面的一個實施例,提供了一種云環(huán)境下統(tǒng)一資源調(diào)度系統(tǒng),所述系統(tǒng)包括調(diào)度器,所述調(diào)度器包括請求處理模塊、云類型選擇模塊、私有云調(diào)度模塊和公有云調(diào)度模塊,其中,
所述請求處理模塊,用于接收用戶提交的資源分配請求,并解析所述資源分配請求得到資源類型信息和資源描述信息;
所述云類型選擇模塊,用于判斷資源類型信息中是否包括私有云類型,若包括私有云類型,則啟動私有云調(diào)度模塊繼續(xù)調(diào)度,否則啟動公有云調(diào)度模塊進(jìn)行調(diào)度;
所述私有云調(diào)度模塊,通過所述所述請求處理模塊得到的資源描述信息在多臺私有云服務(wù)器中篩選出所有符合資源要求的私有服務(wù)器,并按 照各個所述符合資源要求的私有服務(wù)器的資源歷史使用信息,對各個私有服務(wù)器進(jìn)行打分,選取分值最高的私有服務(wù)器進(jìn)行資源分配;
所述公有云調(diào)度模塊,用于在公有資源池中按照公有資源分配算法進(jìn)行資源分配。
優(yōu)選的,所述所述私有云調(diào)度模塊具體用于,從所述資源描述信息中得到資源規(guī)格信息、資源限制條件信息及資源標(biāo)簽信息;獲取各私有云服務(wù)器的硬件配置信息;以及,判斷私有云服務(wù)器的硬件配置信息是否滿足所述資源限制條件,并判斷私有云服務(wù)器是否具備滿足所述資源規(guī)格的硬件資源,若二者都為是,再進(jìn)一步確定所述私有云服務(wù)器是否具有與所述資源標(biāo)簽對應(yīng)的標(biāo)簽,若是,將該私有云服務(wù)器確定為符合資源要求的服務(wù)器。
優(yōu)選的,所述私有云調(diào)度模塊用于,設(shè)定基礎(chǔ)分;獲得各資源使用率;以及,確定分值為基準(zhǔn)分減去各資源使用率及各資源權(quán)重的乘積;其中,預(yù)設(shè)各資源權(quán)重。
優(yōu)選的,所述私有云調(diào)度模塊用于,確定所述分值等于基礎(chǔ)分減去cpu利用率與第一權(quán)重乘積并減去內(nèi)存利用率與第二權(quán)重的乘積,其中,預(yù)先設(shè)置cpu利用率對應(yīng)的第一權(quán)重、內(nèi)存利用率對應(yīng)的第二權(quán)重。
優(yōu)選的,所述私有云調(diào)度模塊還用于,判斷所述私有服務(wù)器上是否有待分配資源依賴的微服務(wù),若有,則確定獎勵分,并更新所述分值為原分值加上所述獎勵分。
優(yōu)選的,所述私有云調(diào)度模塊還用于,對所述符合資源要求的私有服務(wù)器進(jìn)行等級劃分,以及,在資源分配時選取分值最高且等級最低的私有服務(wù)器進(jìn)行。
優(yōu)選的,所述私有云調(diào)度模塊具體用于,計算運行在所述私有服務(wù)器上的各類型微服務(wù)的數(shù)量,其中,所述服務(wù)類型包括生產(chǎn)級、批處理級和盡量滿足級;以及,確定私有服務(wù)器的等級為批處理級微服務(wù)數(shù)量與第三權(quán)重的乘積加上盡量滿足級微服務(wù)數(shù)量與第四權(quán)重的乘積;其中,預(yù)先設(shè)置批處理級微服務(wù)對應(yīng)的第三權(quán)重、盡量滿足級微服務(wù)對應(yīng)的第 四權(quán)重,且第三權(quán)重大于第四權(quán)重。
優(yōu)選的,所述云類型選擇模塊還用于,若通過所述私有云調(diào)度模塊未篩選出符合資源要求的服務(wù)器的情況下,啟動所述公有云調(diào)度模塊在公有資源池中進(jìn)行資源分配。
通過本發(fā)明實施例的方案,至少帶來以下技術(shù)效果:
由于私有云中可引入容器代替虛擬機(jī)(當(dāng)然虛擬機(jī)也適用),每個容器化應(yīng)用都會共享相同的操作系統(tǒng)(單個主機(jī)操作系統(tǒng))。相比于虛擬機(jī),容器擁有更高的資源使用效率,因為它并不需要為每個應(yīng)用分配單獨的操作系統(tǒng),這意味相比于虛擬機(jī),單個操作系統(tǒng)能夠承載更多的容器,因此,可提高資源使用率及集群速率,從而可大大降低私有數(shù)據(jù)中心的成本。
本發(fā)明方案可應(yīng)用到公有云和私有云的混合云環(huán)境下,特別是通過私有云下的資源分配算法,選擇最合適的服務(wù)器進(jìn)行資源分配,在私有云不滿足資源分配的情況下,可將公有云作為一種有效的補(bǔ)充。
本發(fā)明方案具有高度融合性,可以將其他調(diào)度和編排算法植入該系統(tǒng)中,例如,可支持
本領(lǐng)域普通技術(shù)人員將了解,雖然下面的詳細(xì)說明將參考圖示實施例、附圖進(jìn)行,但本申請并不僅限于這些實施例。而是,本申請的范圍是廣泛的,且意在僅通過后附的權(quán)利要求限定本申請的范圍。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1是根據(jù)本申請一個實施例的云環(huán)境下統(tǒng)一資源調(diào)度方法流程圖。
圖2是根據(jù)本申請一個實施例的云環(huán)境下統(tǒng)一資源調(diào)度系統(tǒng)架構(gòu)示意圖。
圖3是圖2系統(tǒng)中調(diào)度器的邏輯示意圖。
本領(lǐng)域普通技術(shù)人員將了解,雖然下面的詳細(xì)說明將參考圖示實施例、附圖進(jìn)行,但本申請并不僅限于這些實施例。而是,本申請的范圍 是廣泛的,且意在僅通過后附的權(quán)利要求限定本申請的范圍。
具體實施方式
在更加詳細(xì)地討論示例性實施例之前應(yīng)當(dāng)提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當(dāng)其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
所述計算機(jī)設(shè)備包括用戶設(shè)備與網(wǎng)絡(luò)設(shè)備。其中,所述用戶設(shè)備包括但不限于電腦、智能手機(jī)、pda等;所述網(wǎng)絡(luò)設(shè)備包括但不限于單個網(wǎng)絡(luò)服務(wù)器、多個網(wǎng)絡(luò)服務(wù)器組成的服務(wù)器組或基于云計算(cloudcomputing)的由大量計算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成的云,其中,云計算是分布式計算的一種,由一群松散耦合的計算機(jī)集組成的一個超級虛擬計算機(jī)。其中,所述計算機(jī)設(shè)備可單獨運行來實現(xiàn)本申請,也可接入網(wǎng)絡(luò)并通過與網(wǎng)絡(luò)中的其他計算機(jī)設(shè)備的交互操作來實現(xiàn)本申請。其中,所述計算機(jī)設(shè)備所處的網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、vpn網(wǎng)絡(luò)等。
需要說明的是,所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)等僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的計算機(jī)設(shè)備或網(wǎng)絡(luò)如可適用于本申請,也應(yīng)包含在本申請保護(hù)范圍以內(nèi),并以引用方式包含于此。
后面所討論的方法(其中一些通過流程圖示出)可以通過硬件、軟件、固件、中間件、微代碼、硬件描述語言或者其任意組合來實施。當(dāng)用軟件、固件、中間件或微代碼來實施時,用以實施必要任務(wù)的程序代碼或代碼段可以被存儲在機(jī)器或計算機(jī)可讀介質(zhì)(比如存儲介質(zhì))中。(一個或多個)處理器可以實施必要的任務(wù)。
這里所公開的具體結(jié)構(gòu)和功能細(xì)節(jié)僅僅是代表性的,并且是用于描述本申請的示例性實施例的目的。但是本申請可以通過許多替換形式來具體實現(xiàn),并且不應(yīng)當(dāng)被解釋成僅僅受限于這里所闡述的實施例。
應(yīng)當(dāng)理解的是,雖然在這里可能使用了術(shù)語“第一”、“第二”等等來描述各個單元,但是這些單元不應(yīng)當(dāng)受這些術(shù)語限制。使用這些術(shù)語僅僅是為了將一個單元與另一個單元進(jìn)行區(qū)分。舉例來說,在不背離示例性實施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術(shù)語“和/或”包括其中一個或更多所列出的相關(guān)聯(lián)項目的任意和所有組合。
應(yīng)當(dāng)理解的是,當(dāng)一個單元被稱為“連接”或“耦合”到另一單元時,其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對,當(dāng)一個單元被稱為“直接連接”或“直接耦合”到另一單元時,則不存在中間單元。應(yīng)當(dāng)按照類似的方式來解釋被用于描述單元之間的關(guān)系的其他詞語(例如“處于...之間”相比于“直接處于...之間”,“與...鄰近”相比于“與...直接鄰近”等等)。
這里所使用的術(shù)語僅僅是為了描述具體實施例而不意圖限制示例性實施例。除非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個”、“一項”還意圖包括復(fù)數(shù)。還應(yīng)當(dāng)理解的是,這里所使用的術(shù)語“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個或更多其他特征、整數(shù)、步驟、操作、單元、組件和/或其組合。
還應(yīng)當(dāng)提到的是,在一些替換實現(xiàn)方式中,所提到的功能/動作可以按照不同于附圖中標(biāo)示的順序發(fā)生。舉例來說,取決于所涉及的功能/動作,相繼示出的兩幅圖實際上可以基本上同時執(zhí)行或者有時可以按照相反的順序來執(zhí)行。
本發(fā)明實施例應(yīng)用于云環(huán)境,提供一種調(diào)度及編排方案,以支持公有云和私有云的環(huán)境。通過該方案,大部分準(zhǔn)備及維護(hù)工作都可由統(tǒng)一調(diào)度系統(tǒng)自動完成,從而為客戶節(jié)省開銷。
本發(fā)明實施例提供一種調(diào)度及編排系統(tǒng),該系統(tǒng)可應(yīng)用在集裝化(containerization)環(huán)境和虛擬化(virtualization)環(huán)境。
作為一種部署應(yīng)用程序的全新方式,容器(container)技術(shù)在短時間 內(nèi)獲得了廣泛關(guān)注,但是這種技術(shù)同樣存在某些限制,并且和虛擬機(jī)(virtulmachine)存在本質(zhì)上的不同。容器和虛擬機(jī)之間的主要區(qū)別在于虛擬化層的位置和操作系統(tǒng)資源的使用方式。虛擬機(jī)依賴于hypervisor,其通常被安裝在“裸金屬”系統(tǒng)硬件之上,這導(dǎo)致hypervisor在某些方面被認(rèn)為是一種操作系統(tǒng)。一旦hypervisor安裝完成,就可以從系統(tǒng)可用計算資源當(dāng)中分配虛擬機(jī)實例了,每臺虛擬機(jī)都能夠獲得唯一的操作系統(tǒng)和負(fù)載(應(yīng)用程序)。通常,第一臺虛擬機(jī)都將會被用來運行系統(tǒng)管理程序,比如microsoftsystemcenter。而之后的虛擬機(jī)可能包含其他企業(yè)負(fù)載,比如數(shù)據(jù)庫、erp、crm、郵件服務(wù)器、媒體服務(wù)器、web服務(wù)器或者其他業(yè)務(wù)應(yīng)用。虛擬機(jī)之間是完全隔離的——沒有任何一臺虛擬機(jī)知道(或者依賴)相同系統(tǒng)當(dāng)中的另外一臺虛擬機(jī)的存在——惡意軟件、應(yīng)用程序崩潰和其他問題只能影響一臺虛擬機(jī)。虛擬機(jī)從一個虛擬系統(tǒng)被移動到另外一個當(dāng)中,而不用考慮系統(tǒng)硬件和操作系統(tǒng)等因素。而容器環(huán)境的工作方式則有所不同。對于容器環(huán)境來說,需要首先安裝主機(jī)操作系統(tǒng),之后將容器層(比如lxc或libcontainer)安裝在主機(jī)操作系統(tǒng)(通常是linux變種)之上。在安裝完容器層之后,就可以從系統(tǒng)可用計算資源當(dāng)中分配容器實例了,并且企業(yè)應(yīng)用可以被部署在容器當(dāng)中。但是,每個容器化應(yīng)用都會共享相同的操作系統(tǒng)(單個主機(jī)操作系統(tǒng))。相比于虛擬機(jī),容器擁有更高的資源使用效率,因為它并不需要為每個應(yīng)用分配單獨的操作系統(tǒng)-實例規(guī)模更小、創(chuàng)建和遷移速度也更快。這意味相比于虛擬機(jī),單個操作系統(tǒng)能夠承載更多的容器。云提供商十分熱衷于容器技術(shù),因為在相同的硬件設(shè)備當(dāng)中,可以部署數(shù)量更多的容器實例。然而,單個操作系統(tǒng)有可能引起影響所有相關(guān)實例的單點事故。比如,惡意軟件或者主機(jī)操作系統(tǒng)崩潰可能禁用或者影響所有容器。此外,容器易于遷移,但是只能被遷移到具有兼容操作系統(tǒng)內(nèi)核的其他服務(wù)器當(dāng)中,這樣會無形中減少遷移選擇。從實際應(yīng)用的角度來說,容器和虛擬機(jī)可以在同一個數(shù)據(jù)中心當(dāng)中共存,因此這兩種技術(shù)被認(rèn)為是互補(bǔ)的——為現(xiàn)代應(yīng)用程序架構(gòu)師和數(shù)據(jù)中心管理員添加了可用工具集,通過不同的方式 為應(yīng)用負(fù)載提供支持。
本發(fā)明實施例中,調(diào)度器負(fù)責(zé)將容器或虛擬機(jī)加載到相關(guān)主機(jī)上,并負(fù)責(zé)啟動、停止及管理運行過程。調(diào)度及編排系統(tǒng)類似于整個云環(huán)境的心臟或指揮中心。
參見圖1,是根據(jù)本申請一個實施例的云環(huán)境下統(tǒng)一資源調(diào)度方法流程圖。
s101:接收用戶提交的資源分配請求,并解析資源分配請求得到資源類型信息和資源描述信息;
s102:判斷資源類型信息中是否包括私有云類型,若是,執(zhí)行s103,否則,執(zhí)行s104;
s103:如果是私有云,則首先通過資源描述信息在多臺私有云服務(wù)器中篩選出所有符合資源要求的私有服務(wù)器,然后,按照各個符合資源要求的私有服務(wù)器的資源歷史使用信息,對各個服務(wù)器進(jìn)行打分,選取分值最高的私有服務(wù)器進(jìn)行資源分配;
s104:如果是公有云或混合云,則在公有資源池中按照公有資源分配算法進(jìn)行資源分配。
在步驟s101中,通過解析資源分配請求可以得到資源類型信息和資源描述信息。資源類型信息標(biāo)記是在私有云、公有云還是混合云中進(jìn)行資源分配,對于私有云,采取本發(fā)明實施例提出的分配算法進(jìn)行服務(wù)器選擇,對于公有云和混合云情況,在公有資源池中進(jìn)行資源分配。資源描述信息包括資源規(guī)格信息(資源要求,如cpu、內(nèi)存要求)、資源限制條件信息(如限制disk為ssd)及資源標(biāo)簽信息等,其中,資源標(biāo)簽信息標(biāo)記資源優(yōu)先級(例如highmem或normal),在服務(wù)器選擇時須選擇具有與該資源標(biāo)簽對應(yīng)標(biāo)簽的服務(wù)器。
在步驟s102中,按照資源類型信息,確定是在私有云進(jìn)行資源分配(步驟s103),還是在公有云中進(jìn)行資源分配(步驟s103)。
在步驟s103中,對于私有服務(wù)器的選擇分為兩個層次,首先篩選出符合資源要求的所有私有服務(wù)器,其次在符合要求的所有私有服務(wù)器進(jìn)行打分, 最終確定分值最高的私有服務(wù)器進(jìn)行資源分配。
其中,在第一層次中,可通過如下步驟實現(xiàn)找到符合資源要求的所有私有服務(wù)器:
(1.1)從資源描述信息中得到資源規(guī)格信息、資源限制條件信息及資源標(biāo)簽信息;
(1.2)獲取各私有云服務(wù)器的硬件配置信息;
(1.3)逐個判斷各私有云服務(wù)器的硬件配置信息是否滿足資源限制條件,并判斷私有云服務(wù)器是否具備滿足資源規(guī)格的硬件資源,若二者都為是,再進(jìn)一步確定私有云服務(wù)器是否具有與所述資源標(biāo)簽對應(yīng)的標(biāo)簽,若是,將該私有云服務(wù)器確定為符合資源要求的服務(wù)器;
(1.4)集合所有符合資源要求的私有服務(wù)器,得到符合資源要求的所有私有服務(wù)器。
在第二層次中,可通過如下方式確定分值:
(2.1)設(shè)定基礎(chǔ)分;獲得各資源使用率;確定分值為基準(zhǔn)分減去各資源使用率及各資源權(quán)重的乘積;其中,預(yù)設(shè)各資源權(quán)重;
例如,所述分值等于基礎(chǔ)分減去cpu利用率與第一權(quán)重乘積并減去內(nèi)存利用率與第二權(quán)重的乘積,其中,預(yù)先設(shè)置cpu利用率對應(yīng)的第一權(quán)重、內(nèi)存利用率對應(yīng)的第二權(quán)重。
(2.2)判斷私有服務(wù)器上是否有待分配資源依賴的微服務(wù),若有,則確定獎勵分,并更新分值為原分值加上獎勵分。
在第二層次中,優(yōu)選的,還可以對符合資源要求的私有服務(wù)器進(jìn)行等級劃分;在資源分配時選取分值最高且等級最低的私有服務(wù)器進(jìn)行。具體的,計算運行在私有服務(wù)器上的各類型微服務(wù)的數(shù)量,其中,所述服務(wù)類型包括生產(chǎn)級、批處理級和盡量滿足級;確定私有服務(wù)器的等級為批處理級微服務(wù)數(shù)量與第三權(quán)重的乘積加上盡量滿足級微服務(wù)數(shù)量與第四權(quán)重的乘積,其中,預(yù)先設(shè)置批處理級微服務(wù)對應(yīng)的第三權(quán)重、盡量滿足級微服務(wù)對應(yīng)的第四權(quán)重,且第三權(quán)重大于第四權(quán)重。
通過上述兩個層次的方式,可以選擇出最適合的私有服務(wù)器進(jìn)行資 源分配。
如果在沒有選取出符合資源要求的私有服務(wù)器,則可以在公有資源池中進(jìn)行資源分配。
在步驟s104中,對于公有云或混合云的情況,在公有資源池中按照公有資源分配算法進(jìn)行資源分配。公有云由于有自帶的調(diào)度機(jī)制,所以不需要系統(tǒng)再特別設(shè)計,直接利用公有云類似黑盒里的調(diào)度機(jī)制來實現(xiàn)。對于混合云的情況,直接按照公有云的調(diào)度方法部署在公有云上,以節(jié)約私有云資源。
參見圖2,為本發(fā)明實施例提供的云環(huán)境下統(tǒng)一資源調(diào)度系統(tǒng)架構(gòu)示意圖。該系統(tǒng)包括中心管理服務(wù)器10、提交裝置20、分布式存儲裝置30、一個或多個私有云執(zhí)行服務(wù)器40、云整合平臺50及發(fā)現(xiàn)服務(wù)裝置60。
下面對系統(tǒng)各部分進(jìn)行如下介紹。
中心管理服務(wù)器10是整個調(diào)度和編排系統(tǒng)的核心,它至少包括調(diào)度器101和收集器102。調(diào)度器101負(fù)責(zé)管理不同優(yōu)先權(quán)的任務(wù)隊列、按照本發(fā)明的調(diào)度算法進(jìn)行資源映射,從而確定最優(yōu)主機(jī),并將任務(wù)分配給私有云執(zhí)行服務(wù)器40或者云整合平臺50。收集器102用于從cmdb(configurationmanagementdatabase配置管理數(shù)據(jù)庫)或直接從主機(jī)自身收集主機(jī)的元數(shù)據(jù),以及從監(jiān)控系統(tǒng)或直接從主機(jī)收集關(guān)于主機(jī)的如cpu、內(nèi)存使用率等信息;另外,收集器102也負(fù)責(zé)任務(wù)的運行狀態(tài)。
提交裝置20向用戶提供接口,用戶可通過提交裝置提交資源分配請求,請求在公有云或私有云部署某一個服務(wù)或應(yīng)用程序。
分布式存儲裝置30可用于存儲包括如任務(wù)執(zhí)行日志、運行日志、軟件包、容器部署描述文件、公有云部署描述文件等在內(nèi)的所有共享資源或文件。分布式存儲裝置30是共享存儲器,提供讀、寫及更新所需文件的統(tǒng)一接口。
私有云執(zhí)行服務(wù)器40負(fù)責(zé)從調(diào)度器接收啟動守護(hù)進(jìn)程(startdaemon)命令并將相關(guān)信號發(fā)送給相關(guān)任務(wù)進(jìn)程。私有云執(zhí)行服務(wù)器40控制容器或虛擬機(jī)的開始/重啟/停止的行為。
云整合平臺50用于將服務(wù)或應(yīng)用程序部署在多個公有云平臺(如aws、azure)。云整合平臺50具有不同公有云的適應(yīng)性。
發(fā)現(xiàn)服務(wù)裝置60,在一個服務(wù)或應(yīng)用程序成功部署之后,用于登記相關(guān)連接信息。該服務(wù)或應(yīng)用程序的信息一旦登記,其他應(yīng)用程序可向發(fā)現(xiàn)服務(wù)裝置60請求連接該服務(wù)或應(yīng)用程序。
下面重點對調(diào)度及資源映射過程重點介紹。
如果任務(wù)可被部署到公有云,則認(rèn)為任務(wù)不受限制,此情況下按照現(xiàn)有公有云的資源分配方式,由云整合平臺50負(fù)責(zé)在公有云中準(zhǔn)備硬件資源、軟件資源來完成任務(wù)。
如果任務(wù)被部署到私有云,用戶提交的任務(wù)碚存儲在分布式存儲裝置30中,并添加到等待隊列,然后,調(diào)度器101對任務(wù)隊列進(jìn)行異步掃描。調(diào)度器101以輪詢方式按照優(yōu)先級從高到低的順序?qū)﹃犃羞M(jìn)行掃描,以保證請求不會被阻止。一旦任務(wù)被掃描到,調(diào)度及資源映射邏輯被啟動,從而選擇一個最適合的節(jié)點(服務(wù)器)來執(zhí)行該任務(wù)。
對于部署到私有云中的任務(wù),調(diào)度過程包括如下步驟:
1、粗選(過濾)
檢查各節(jié)點是否具有足夠的資源或者是否滿足特殊的條件,如是否滿足ssd硬盤類型等,最后生成一個滿足任務(wù)的條件的所有節(jié)點的列表。
2、基于標(biāo)簽調(diào)度
所有節(jié)點被標(biāo)記上標(biāo)簽,例如,高端(highmem)和正常(normal)等標(biāo)簽。用戶提交的任務(wù)請求中可以攜帶任務(wù)的標(biāo)簽,調(diào)度器將按照標(biāo)簽匹配到具有相應(yīng)標(biāo)簽的節(jié)點的隊列中。
3、打分
按照打分規(guī)則對各個節(jié)點進(jìn)行打分,最終選擇出分值最高的節(jié)點進(jìn)行任務(wù)部署。
打分規(guī)則主要考慮了幾個因素1)如果需要部署的服務(wù)依賴于其他的微服務(wù),而所依賴的微服務(wù)正好在待選服務(wù)器上或和待選服務(wù)器同一個機(jī)架上,會加分;2)如果該服務(wù)器的cpu和內(nèi)存使用率比較低,會加 分。例如,給服務(wù)器一個基準(zhǔn)分(例如60分),score=基準(zhǔn)分-cpu利用率*第一權(quán)重-內(nèi)存利用率*第二權(quán)重+獎勵分(如果待選服務(wù)器上有依賴的微服務(wù));所以最終會選擇score值最高的服務(wù)器。其中,預(yù)先設(shè)定各項目對應(yīng)的權(quán)重,例如,cpu利用率對應(yīng)有第一權(quán)重,內(nèi)存利用率對應(yīng)第二權(quán)重,等。
下面列出一個任務(wù)(資源分配請求)的具體例子。
上述例子中,設(shè)定了三種資源類型(type),這三種類型的資源優(yōu)先級依次從高到低是:生產(chǎn)級(productive)、批處理級(batch)、盡量滿足級(try-best)。
在優(yōu)選的方式中,在上述步驟“3、打分”中,除了依據(jù)對各服務(wù)器打分的分值之外,還依據(jù)服務(wù)器的等級(level)進(jìn)行綜合選取。
所謂的服務(wù)器等級即是根據(jù)該服務(wù)器中正運行的微服務(wù)的類型確定的,因為多個微服務(wù)可能運行在同一臺服務(wù)器上,所以需要避免產(chǎn)生搶占資源的情況,因此結(jié)合待選服務(wù)器上運行的微服務(wù)狀況綜合考慮最合 適的服務(wù)器。計算level=第三權(quán)重*batch類微服務(wù)數(shù)量+第四權(quán)重*try-best類微服務(wù)數(shù)量(搶占的規(guī)律是productive類的微服務(wù)不能被搶占,batch類優(yōu)先級略低,try-best優(yōu)先級最低,優(yōu)先級高的可以搶占優(yōu)先級低的資源)。所以在這種優(yōu)選方式下,最終會綜合計算后的score值和level值選擇score值最高、level值最低的服務(wù)器。其中,預(yù)先設(shè)置batch類微服務(wù)對應(yīng)第三權(quán)重,try-best類微服務(wù)對應(yīng)第四權(quán)重,且由于batch類微服務(wù)的優(yōu)先級高于try-best類微服務(wù)的優(yōu)先級,因此第三權(quán)重大于第四權(quán)重。
參加圖3,是圖2系統(tǒng)中調(diào)度器的優(yōu)選方式的邏輯流程。
s301:接收資源分配請求;
s302:判斷資源分配請求中攜帶的云類型是私有云、公有云還是混合云,如果是私有云,執(zhí)行s303,如果是公有云或混合云,則執(zhí)行s322;
s303:從收集器中獲取所有私有服務(wù)器列表;
s304:按照順序從私有服務(wù)器列表中遍歷服務(wù)器,得到服務(wù)器的配置信息;
s305:判斷是否為最后一個服務(wù)器,若是,轉(zhuǎn)到s310,否則,執(zhí)行s306;
s306:判斷限制條件(如ssddisk)是否滿足,若滿足,執(zhí)行s307,否則,返回s304進(jìn)行下一個服務(wù)器的判斷;
s307:判斷是否有足夠的硬件資源(如cpu、mem、disk),如果有,執(zhí)行s308,否則,返回s304進(jìn)行下一個服務(wù)器的判斷;
s308:判斷是否存在與資源分配請求中相應(yīng)的標(biāo)簽(例如highmem或normal),若存在,執(zhí)行s309,否則,也返回s304進(jìn)行下一個服務(wù)器的判斷;
s309:將該服務(wù)器加入到候選名單中(即確定該服務(wù)器為符合資源要求的服務(wù)器),然后,返回s304進(jìn)行下一個服務(wù)器的判斷;
可見,通過重復(fù)執(zhí)行上述步驟s304-s309,即可篩選出符合標(biāo)簽要求及資源要求的所有服務(wù)器。
s310:通過上述步驟確定的所有服務(wù)器構(gòu)成一個私有資源池;
s311:判斷是否有一個以上服務(wù)器,若是,執(zhí)行s312,否則,則沒有滿足資源要求的服務(wù)器,因此轉(zhuǎn)到公有云進(jìn)行資源分配,即執(zhí)行步驟s322;
s312:從候選名單中選取一個服務(wù)器;
s313:是否為最后一個服務(wù)器,若是,執(zhí)行步驟s314進(jìn)行最終的私有服務(wù)器選擇;
s314:設(shè)定分值為基礎(chǔ)分;
s315:計算可能運行的微服務(wù)的數(shù)量(例如:batch類微服務(wù):2個;try-best類微服務(wù):3個);
s316:確定等級:level=第三權(quán)重*batch類微服務(wù)數(shù)量+第四權(quán)重*try-best類微服務(wù)數(shù)量;
s317:得到平均資源使用率;
s318:計算得分:score=基準(zhǔn)分-cpu利用率*第一權(quán)重-內(nèi)存利用率*第二權(quán)重;
s319:判斷該服務(wù)器上是否有資源依賴的微服務(wù),若有,執(zhí)行s320,否則,返回s313;
s320:確定獎勵分,更新得分:score=基準(zhǔn)分-cpu利用率*第一權(quán)重-內(nèi)存利用率*第二權(quán)重+獎勵分;
s321:選取得分最高、等級最低的服務(wù)器進(jìn)行資源分配;
在上述步驟s310-s321中,對之前確定的符合要求的各個服務(wù)器進(jìn)行打分及等級劃分,最終選擇分值最高、等級最低的服務(wù)器進(jìn)行資源分配。
s322:對于公有云或混合云的情況,在公有資源池中按照公有資源分配算法進(jìn)行資源分配。
公有云由于有自帶的調(diào)度機(jī)制,所以不需要系統(tǒng)再特別設(shè)計,直接利用公有云類似黑盒里的調(diào)度機(jī)制來實現(xiàn)。對于混合云的情況,直接按照公有云的調(diào)度方法部署在公有云上,以節(jié)約私有云資源。
通過本發(fā)明實施例的方案,至少帶來以下技術(shù)效果:
由于私有云中可引入容器代替虛擬機(jī)(當(dāng)然虛擬機(jī)也適用),每個容器化應(yīng)用都會共享相同的操作系統(tǒng)(單個主機(jī)操作系統(tǒng))。相比于虛擬機(jī),容器擁有更高的資源使用效率,因為它并不需要為每個應(yīng)用分配單獨的操作系統(tǒng),這意味相比于虛擬機(jī),單個操作系統(tǒng)能夠承載更多的容器,因此,可提高資源使用率及集群速率,從而可大大降低私有數(shù)據(jù)中心的成本。
本發(fā)明方案可應(yīng)用到公有云和私有云的混合云環(huán)境下,特別是通過私有云下的資源分配算法,選擇最合適的服務(wù)器進(jìn)行資源分配,在私有云不滿足資源分配的情況下,可將公有云作為一種有效的補(bǔ)充。
本發(fā)明方案具有高度融合性,可以將其他調(diào)度和編排算法植入該系統(tǒng)中,例如,可支持
需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(asic)、通用目的計算機(jī)或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機(jī)可讀記錄介質(zhì)中,例如,ram存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
另外,本申請的一部分可被應(yīng)用為計算機(jī)程序產(chǎn)品,例如計算機(jī)程序指令,當(dāng)其被計算機(jī)執(zhí)行時,通過該計算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機(jī)設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機(jī)程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機(jī)程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。
對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細(xì)節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。系統(tǒng)權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。