對單主機資源和集群資源進行管控的方法及其對應的系統的制作方法
【專利摘要】本發明公開了一種對單主機資源和集群資源進行管控的方法及其對應的系統,其中,對單主機資源進行管控的方法包括:本地應用通過南向接口向本地主機進行資源訪問的申請請求,其中,申請請求攜帶有資源類型以及資源大小;判斷本地主機中是否有足夠的該類型的資源,若有,則分配相應大小的該類型的資源至所述本地應用;若沒有,則向本地應用返回申請失敗的消息;當本地應用使用資源完畢,通知本地主機中的kernel進行資源釋放以及資源回收。本發明能夠對單個主機上的系統資源以及主機集群上的系統資源進行統一的資源管控,不僅能夠保證資源訪問的安全性,還能對資源進行均衡分配,使資源能夠均衡的利用,發揮資源的最大利用。
【專利說明】
對單主機資源和集群資源進行管控的方法及其對應的系統
技術領域
[0001] 本發明設及資源管控技術領域,具體設及一種對單主機資源和集群資源進行管控 的方法及其對應的系統。
【背景技術】
[0002] 隨著計算機技術的發展,計算機內的各種資源也越來越多,比如,計算機系統內的 平臺資源和應用資源,對于單主機的系統資源,當多個本地應用訪問本地資源時,沒有一個 統一的管理方案,會很混亂,不能充分地對本地資源進行利用,可能會造成有些資源浪費, 而有限資源不夠用的情況;同樣對于集群資源,也缺乏統一的資源管控方案,對于資源的管 理比較混亂。
【發明內容】
[0003] 本發明所要解決的技術問題是提供一種對單主機資源和集群資源進行管控的方 法及其對應的系統,能夠實現對單個主機資源和多個主機組成的集群資源的統一管控。
[0004] 本發明解決上述技術問題的技術方案如下:
[0005] -方面,本發明提供了一種對單主機資源進行管控的方法,包括:
[0006] Sla、本地應用通過南向接口向本地主機進行資源訪問的申請請求,其中,所述申 請請求攜帶有申請訪問的資源類型W及申請訪問的資源大小;
[0007] S2a、根據所述資源類型和資源大小,判斷本地主機中是否有足夠的該類型的資 源,若有,則分配相應大小的該類型的資源至所述本地應用;若沒有,則向本地應用返回申 請失敗的消息;
[000引 S3a、當本地應用使用資源完畢,通知本地主機中的kernel進行資源釋放W及資源 回收。
[0009] 另一發明,本發明提供了一種對集群資源進行管控的方法,所述集群由多個主機 組成,包括:
[0010] S化、從集群的多個主機中選擇一個主機作為其它主機的管理者master,其它主機 作為slaver;
[OOW 8化、外部應用向集群進行資源訪問的申請請求,其中,所述申請請求攜帶有申請 訪問的資源類型W及資源大小;
[0012] S3b、根據所述資源類型和資源大小,master從本地預先存儲的各主機的資源登記 總表中查找各主機的資源情況,將外部應用的資源訪問的申請請求路由到對應的主機上, 由該主機向所述外部應用分配對應大小的資源。
[0013] 又一方面,本發明提供了一種對單主機資源進行管控的系統,單主機中包括南向 接口和kerne 1;
[0014] 所述南向接口,用于供本地應用向本地主機進行資源訪問的申請請求,其中,所述 申請請求攜帶有申請訪問的資源類型W及申請訪問的資源大小;
[0015] 所述kerne I包括:
[0016] 判斷模塊,用于根據本地應用的訪問申請請求中的所述資源類型和資源大小,判 斷本地主機中是否有足夠的該類型的資源,若有,則觸發資源分配模塊;若沒有,則觸發失 敗消息返回模塊;
[0017] 資源分配模塊,用于分配相應大小的該類型的資源至所述本地應用;
[0018] 失敗消息返回模塊,用于向本地應用返回申請失敗的消息。
[0019] 再一方面,本發明提供了一種對集群資源進行管控的系統,包括一個master主機 和多個slaver主機;
[0020] 所述master主機,用于接收外部應用向集群發送的資源訪問的申請請求,其中,所 述申請請求攜帶有申請訪問的資源類型W及資源大小;W及還用于根據所述資源類型和資 源大小,從本地預先存儲的各主機的資源登記總表中查找各主機的資源情況,將外部應用 的資源訪問的申請請求路由到對應的主機上,由該主機向所述外部應用分配對應大小的資 源。
[0021] 本發明提供的一種對單主機資源和集群資源進行管控的方法及其對應的系統,能 夠對單個主機上的系統資源W及主機集群上的系統資源進行統一的資源管控,不僅能夠保 證資源訪問的安全性,還能對資源進行均衡分配,使資源能夠均衡的利用,發揮資源的最大 利用。
【附圖說明】
[0022] 圖1為本發明實施例的一種對單主機資源進行管控的方法流程圖;
[0023] 圖2為本發明實施例2的一種對集群資源進行管控的方法流程圖;
[0024] 圖3為本發明實施例3的一種對單主機資源進行管控系統示意圖;
[0025] 圖4為本發明實施例4的一種對集群資源進行管控系統示意圖。
【具體實施方式】
[0026] W下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并 非用于限定本發明的范圍。
[0027] 實施例1、一種對單主機資源進行管控的方法。下面結合圖1對本實施例提供的方 法進行說明。
[0028] 參見圖1,本實施例提供的對單主機資源進行管控的方法包括:Sla、本地應用通過 南向接口向本地主機進行資源訪問的申請請求,其中,所述申請請求攜帶有申請訪問的資 源類型W及申請訪問的資源大小;
[0029] S2a、根據所述資源類型和資源大小,判斷本地主機中是否有足夠的該類型的資 源,若有,則分配相應大小的該類型的資源至所述本地應用;若沒有,則向本地應用返回申 請失敗的消息;
[0030] S3a、當本地應用使用資源完畢,通知本地主機中的kernel進行資源釋放W及資源 回收。
[0031] 具體的,南向接口面向操作系統層面,南向接口為最底層封裝,向上屏蔽實現細 節,屏蔽各種操作系統、RDBMS W及中間件的差異性等。本實施例中本地應用通過南向接口 向本地主機申請訪問系統資源,其中,系統資源包括平臺資源和應用資源,平臺資源包括內 存、存儲、網絡等,應用資源包括數據庫、中間件和其它的第=方軟件等。
[0032] 其中,本地主機上的所有資源在被訪問使用之前,需向本地主機的kernel進行資 源注冊,在得到kernel的資源注冊成功確認之后,方能被本地應用申請訪問;根據本地主機 上的資源的注冊情況,kernel會記錄本地主機上的資源情況W及各類型的資源在本地主機 上的位置,形成資源登記表,其中的資源登記表包括資源類型、該種類型的資源的總量、已 使用量W及最后的更新時間。需要說明的是,本地主機中的所有資源都W資源池的形式存 在。
[0033] 本實施例中kerne 1還為每一個本地應用對本地主機上的資源的申請訪問權限進 行設定;當本地應用向本地主機進行資源訪問的申請請求時,本地主機中的kerne 1判斷該 本地應用是否具有申請訪問權限,若是,則分配對應的資源,若否,則拒絕進行訪問。
[0034] 當步驟Sl中有多個本地應用同時向本地主機進行資源訪問的申請請求時,所述步 驟S2還包括:kernel按照每一個本地應用申請的資源類型進行分類,對于申請同一類型的 資源的多個本地應用,按照該多個本地應用的優先級順序為每一個本地應用分配相應大小 的資源,若存在優先級相同的本地應用,則按照先申請先分配的原則給本地應用分配資源。
[0035] 具體的,當多個本地應用同時向本地主機申請資源訪問時,首先本地主機中的 kernel會判斷運多個本地應用是否均具有資源訪問權限,對于有資源訪問權限的多個本地 應用申請的資源類型進行分類,對于申請同一類型的多個本地應用,按照運多個本地應用 的優先級順序為每一個本地應用分配資源,若存在優先級相同的多個本地應用,則按照先 申請先分配的原則為再先申請的本地應用分配資源。比如,現有本地應用A、本地應用B、本 地應用C、本地應用D和本地應用E均向本地主機申請資源的訪問,本地主機中的kerne 1會將 運些應用的資源訪問的申請請求放入隊列中。其中本地應用A、本地應用B、本地應用C和本 地應用D均向本地主機申請20G的內存資源,本地應用E向本地主機申請IOOM的存儲,則首先 判斷運五個本地應用是否均具有對本地主機的資源訪問權限,比如,其中,本地應用D沒有 對本地主機的資源訪問權限,則直接拒絕。然后,對于申請同一類型資源的本地應用A、本地 應用B和本地應用C,則本地主機中的kernel會根據記錄的本地主機中的資源登記表查找本 地主機中內存的剩余量,比如,本地主機的內存使用量有80G,則按照本地應用A、本地應用B 和本地應用C的優先級順序進行分配。比如,本地應用A優先級最高,本地應用B次之,本地應 用C的優先級最低,則依次按照本地應用A、本地應用B和本地應用C的順序分配大小為20G的 內存資源。但是如果本地主機中只有50G剩余的內存資源,則先將40G的內存資源分別分配 給本地應用A和本地應用B,而向本地應用C發送訪問失敗的消息,消息中包括剩余內存資源 的大小,本地應用接收到失敗的消息后,可選擇是放棄訪問申請還是更改申請內存資源的 大小。若本地應用B和本地應用C具有相同的優先級,如果本地主機中有足夠的40G內存資 源,且本地應用B的申請請求在隊列中靠前,則先給本地應用B發配20G內存資源,然后再給 本地應用C分配20G內存;但是若本地主機上只有30G剩余的內存資源,則先分配20G內存資 源給本地應用B,而向本地應用C發送訪問失敗的消息,消息中包括剩余內存資源的大小,本 地應用接收到失敗的消息后,可選擇是放棄訪問申請還是更改申請內存資源的大小。
[0036] 當為本地應用分配了對應的資源后,本地主機中的kernel會及時更新本地主機中 的資源登記表中的各資源的已使用量,并建立一個資源使用登記表,其中,資源使用登記表 中會記錄各類型資源的已使用量、占用該種類型資源的本地應用名稱、申請時間、資源狀態 W及該種資源在本地主機中的位置。資源登記表和資源使用登記表可參見如下表格1和表 格2所示:
[0037] 表1資源登記表 「00381
[0041]
[0042] 當本地應用使用資源完畢,本地應用會通知kernel進行資源釋放和資源回收,將 回收的資源的狀態設置為空閑狀態。另外,在資源訪問的過程中,kernel還對資源的使用情 況進行實時監控,比如,發現資源的僵死或者發現無主資源,則進行回收處理,并更新資源 登記表和資源使用登記表。
[0043] 當本地應用在使用資源的過程中,發現資源異常,則及時向kernel上報,kernrl對 資源登記表和資源使用登記表進行更新。Kernel還會定時對資源登記表中的資源進行健康 度檢測,若發現資源的健康異常或者資源的實際異常狀態與資源使用登記表中不符,則輸 出告警信息,并更新資源使用登記表。
[0044] 實施例2、一種對集群資源進行管控的方法。下面結合圖2對本實施例提供的方法 進行說明。
[0045] 參見圖2,本實施例提供的對集群資源進行管控的方法包括:S化、從集群的多個主 機中選擇一個主機作為其它主機的管理者master,其它主機作為slaver;
[0046] S2b、外部應用向集群進行資源訪問的申請請求,其中,所述申請請求攜帶有申請 訪問的資源類型W及資源大小;
[0047] S3b、根據所述資源類型和資源大小,master從預先存儲在本地的各主機的資源登 記總表中查找各主機的資源情況,將外部應用的資源訪問的申請請求路由到對應的主機 上,由該主機向所述外部應用分配對應大小的資源。
[004引具體的,如上述實施例1,本地主機中的資源都會向kernel進行資源注冊,在本地 主機上形成資源登記表W及資源使用登記表,本地主機向集群中其它的主機發送本地主機 上的資源登記表和資源使用登記表,W使集群中的每一個主機均存儲有所有主機的資源登 記表和資源使用登記表,W形成資源登記總表和資源使用登記總表。其中,集群中的每一個 主機均存儲有包括自身的全部主機的資源登記總表,是因為如果集群中的master異常,貝U 從其它的多個slaver中重新選擇一個作為整個集群的master,該slaver來接管之前master 的功能。
[0049] 外部應用向通過master的北向接口向整個集群申請資源訪問,集群中的master會 首先判斷該外部應用是否具有該集群的資源訪問權限,若沒有,則直接拒絕訪問,若有, master會根據該外部應用所申請的資源類型,從預先存儲在本地的資源登記總表中查找各 主機上該種類型資源的剩余量,將外部應用的資源訪問的申請請求路由到剩余資源量充足 的主機上,由該主機向外部應用分配對應大小的資源。
[0050] 另外,當外部應用在使用資源的過程中,若發現資源異常,則主動向master上報, master中的kernel會對資源登記總表中的對應資源的狀態進行更新,并將更新后的資源登 記總表同步到其它的slaver中。此外,每一個主機中kernel會定時對本機上登記的資源進 行健康度的檢查,如果發現健康異常,或者是資源的實際狀態與資源使用登記表中資源的 狀態不一致的情況,kernel會輸出告警信息并更新資源使用登記表中該資源的狀態,并將 更新后的資源使用登記表同步至其他的主機,對于健康異常的資源,kernel進行回收。當發 現外部應用連接masetr主機失敗或超時時,master主機中的kernel會按照回收策略對該申 請的資源進行回收。
[0051] 實施例3、一種對單主機資源進行管控的系統。下面結合圖3對本實施例提供的系 統進行描述。
[0052] 參見圖3,本實施例提供的對單主機資源進行管控的系統中的單主機中包括南向 接口 1、資源注冊模塊2和kernel 3,其中,kernel 3包括權限設定模塊31、記錄模塊32、判斷 模塊33、負載均衡器34、失敗消息反饋模塊35、資源分配模塊36和更新模塊37。
[0053] 具體的,南向接口 1,用于供本地應用向本地主機進行資源訪問的申請請求,其中, 所述申請請求攜帶有申請訪問的資源類型W及申請訪問的資源大小。
[0化4] 所述的kernel 3包括:
[0055] 判斷模塊33,用于根據本地應用的訪問申請請求中的所述資源類型和資源大小, 判斷本地主機中是否有足夠的該類型的資源,若有,則觸發資源分配模塊36;若沒有,則觸 發失敗消息返回模塊35。
[0056] 資源分配模塊36,用于分配相應大小的該類型的資源至所述本地應用。
[0057] 失敗消息反饋模塊35,用于向本地應用返回申請失敗的消息。
[005引其中,所述的kernel 3還包括負載均衡器34,所述負載均衡器34用于當有多個本 地應用同時向本地主機進行資源訪問的申請請求時,按照每一個本地應用申請的資源類型 進行分類,對于申請同一類型的資源的多個本地應用,按照該多個本地應用的優先級順序 為每一個本地應用分配相應大小的資源,若存在優先級相同的本地應用,則按照先申請先 分配的原則給本地應用分配資源。
[0化9] 所述的kernel 3還包括權限設定模塊31,用于為每一個本地應用對本地主機上的 資源的申請訪問權限進行設定;當本地應用向本地主機進行資源訪問的申請請求時,所述 判斷模塊判斷該本地應用是否具有申請訪問權限,若是,則觸發資源分配模塊分配對應的 資源,若否,則拒絕進行訪問。
[0060]本實施例提供的對單主機資源進行管控的系統還包括資源注冊模塊2,用于供本 地主機上的資源向本地主機的kerne I進行資源注冊,W使本地主機上的資源在得到kerne I 的資源注冊成功確認之后,方能被本地應用申請訪問;
[0061] 所述的kernel 3還包括記錄模塊32W及更新模塊37,所述的記錄模塊32用于根據 本地主機上的資源的注冊情況,記錄本地主機上的資源情況W及本地資源使用情況,形成 資源登記表W及資源使用登記表。所述的更新模塊37用于當本地應用成功訪問到在本地主 機上所申請的資源時,更新本地主機上的資源登記表W及資源使用登記表。
[0062] 實施例4、一種對集群資源進行管控的系統。下面結合圖4對本實施例提供的系統 進行描述。
[0063] 參見圖4,本實施例提供的對集群資源進行管控的系統包括一個master主機和多 個slaver主機;所述master主機,用于接收外部應用向集群發送的資源訪問的申請請求,其 中,所述申請請求攜帶有申請訪問的資源類型W及資源大小;W及還用于根據所述資源類 型和資源大小,從本地預先存儲的各主機的資源登記總表中查找各主機的資源情況,將外 部應用的資源訪問的申請請求路由到對應的主機上,由該主機向所述外部應用分配對應大 小的資源。
[0064] 其中,當每一個主機中的資源注冊模塊2向本地主機中的kernel 3進行了資源注 冊后,在本地主機上形成資源登記表W及資源使用登記表;每一個主機,用于向集群中其它 的主機發送本地主機上的資源登記表和資源使用登記表,W使集群中的每一個主機均存儲 有所有主機的資源登記表和資源使用登記表,W形成資源登記總表和資源使用登記總表。
[0065] 本發明提供的一種對單主機資源和集群資源進行管控的方法及其對應的系統,能 夠對單個主機上的系統資源W及主機集群上的系統資源進行統一的資源管控,不僅能夠保 證資源訪問的安全性,還能對資源進行均衡分配,使資源能夠均衡的利用,發揮資源的最大 利用。
[0066] 在本說明書的描述中,參考術語"實施例一"、"示例"、"具體示例"、或"一些示例" 等的描述意指結合該實施例或示例描述的具體方法、裝置或者特點包含于本發明的至少一 個實施例或示例中。在本說明書中,對上述術語的示意性表述不必須針對的是相同的實施 例或示例。而且,描述的具體特征、方法、裝置或者特點可W在任一個或多個實施例或示例 中W合適的方式結合。此外,在不相互矛盾的情況下,本領域的技術人員可W將本說明書中 描述的不同實施例或示例W及不同實施例或示例的特征進行結合和組合。
[0067] W上所述僅為本發明的較佳實施例,并不用W限制本發明,凡在本發明的精神和 原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1. 一種對單主機資源進行管控的方法,其特征在于,包括: S1 a、本地應用通過南向接口向本地主機進行資源訪問的申請請求,其中,所述申請請 求攜帶有申請訪問的資源類型以及申請訪問的資源大小; S2a、根據所述資源類型和資源大小,判斷本地主機中是否有足夠的該類型的資源,若 有,則分配相應大小的該類型的資源至所述本地應用;若沒有,則向本地應用返回申請失敗 的消息; S3a、當本地應用使用資源完畢,通知本地主機中的kernel進行資源釋放以及資源回 收。2. 如權利要求1所述的對單主機資源進行管控的方法,其特征在于,當步驟S1中有多個 本地應用同時向本地主機進行資源訪問的申請請求時,所述步驟S2還包括: 按照每一個本地應用申請的資源類型進行分類,對于申請同一類型的資源的多個本地 應用,按照該多個本地應用的優先級順序為每一個本地應用分配相應大小的資源,若存在 優先級相同的本地應用,則按照先申請先分配的原則給本地應用分配資源。3. 如權利要求1或2所述的對單主機資源進行管控的方法,其特征在于,為每一個本地 應用對本地主機上的資源的申請訪問權限進行設定; 當本地應用向本地主機進行資源訪問的申請請求時,本地主機判斷該本地應用是否具 有申請訪問權限,若是,則分配對應的資源,若否,則拒絕進行訪問。4. 如權利要求3所述的對單主機資源進行管控的方法,其特征在于,本地主機上的資源 需向本地主機的kernel進行資源注冊,在得到kernel的資源注冊成功確認之后,方能被本 地應用申請訪問; 根據本地主機上的資源的注冊情況,kernel會記錄本地主機上的資源情況,形成資源 登記表。5. 如權利要求4所述的對單主機資源進行管控的方法,其特征在于,當本地應用成功訪 問到在本地主機上所申請的資源時,kernel會更新本地主機上的資源登記表以及新建一張 資源使用登記表。6. -種對集群資源進行管控的方法,所述的集群由多個主機組成,其特征在于,包括: Sib、從集群的多個主機中選擇一個主機作為其它主機的管理者master,其它主機作為 slaver; S2b、外部應用集群進行資源訪問的申請請求,其中,所述申請請求攜帶有申請訪問的 資源類型以及資源大小; S3b、根據所述資源類型和資源大小,master從在本地預先存儲的各主機的資源登記總 表中查找各主機的資源情況,將外部應用的資源訪問的申請請求路由到對應的主機上,由 該主機向所述外部應用分配對應大小的資源。7. 如權利要求6所述的對集群資源進行管控的方法,其特征在于,當向本地主機中的 kernel進行了資源注冊后,在本地主機上形成資源登記表,本地主機向集群中其它的主機 發送資源登記表,以使集群中的每一個主機均擁有所有主機的資源登記表,進行匯總后形 成整個集群的資源登記總表。8. -種對單主機資源進行管控的系統,其特征在于,單主機中包括南向接口和kernel; 所述南向接口,用于供本地應用向本地主機進行資源訪問的申請請求,其中,所述申請 請求攜帶有申請訪問的資源類型以及申請訪問的資源大小; 所述kernel包括: 判斷模塊,用于根據本地應用的訪問申請請求中的所述資源類型和資源大小,判斷本 地主機中是否有足夠的該類型的資源,若有,則觸發資源分配模塊;若沒有,則觸發失敗消 息返回模塊; 資源分配模塊,用于分配相應大小的該類型的資源至所述本地應用; 失敗消息返回模塊,用于向本地應用返回申請失敗的消息。9. 如權利要求8所述的對單主機資源進行管控的系統,其特征在于,所述kernel還包 括: 負載均衡器,用于當有多個本地應用同時向本地主機進行資源訪問的申請請求時,按 照每一個本地應用的申請的資源類型進行分類,對于申請同一類型的資源的多個本地應 用,按照該多個本地應用的優先級順序為每一個本地應用分配相應大小的資源,若存在優 先級相同的本地應用,則按照先申請先分配的原則給本地應用分配資源。10. 如權利要求8或9所述的對單主機資源進行管控的系統,其特征在于,所述kernel還 包括: 權限設定模塊,用于為每一個本地應用對本地主機上的資源的申請訪問權限進行設 定; 當本地應用向本地主機進行資源訪問的申請請求時,所述判斷模塊判斷該本地應用是 否具有申請訪問權限,若是,則觸發資源分配模塊分配對應的資源,若否,則拒絕進行訪問。11. 如權利要求10所述的對單主機資源進行管控的系統,其特征在于,還包括: 資源注冊模塊,用于供本地主機上的資源向本地主機的kernel進行資源注冊,以使本 地主機上的資源在得到kernel的資源注冊成功確認之后,方能被本地應用申請訪問; 所述kernel還包括: 記錄模塊,用于根據本地主機上的資源的注冊情況,kernel會記錄本地主機上的資源 情況,形成資源登記表。12. 如權利要求11所述的對單主機資源進行管控的系統,其特征在于,所述kernel還包 括: 更新模塊,用于當本地應用成功訪問到在本地主機上所申請的資源時,更新本地主機 上的資源登記表以及建立一張資源使用登記表。13. -種對集群資源進行管控的系統,其特征在于,包括一個master主機和多個slaver 主機; 所述mas ter主機,用于接收外部應用向集群發送的資源訪問的申請請求,其中,所述申 請請求攜帶有申請訪問的資源類型以及資源大小;以及還用于根據所述資源類型和資源大 小,從本地預先存儲的各主機的資源登記表中查找各主機的資源情況,將外部應用的資源 訪問的申請請求路由到對應的主機上,由該主機向所述外部應用分配對應大小的資源。14. 如權利要求13所述的對集群資源進行管控的系統,其特征在于,當每一個主機中的 資源注冊模塊向本地主機中的kernel進行了資源注冊后,在本地主機上形成資源登記表; 每一個主機中還包括: 發送模塊,用于向集群中其它的主機發送本地主機上的資源登記表,以使集群中的每 一個主機均擁有所有主機的資源登記表,進行匯總后形成整個集群的資源登記總表。
【文檔編號】G06F9/50GK106020968SQ201610290913
【公開日】2016年10月12日
【申請日】2016年5月4日
【發明人】蔣敏鐘
【申請人】北京思特奇信息技術股份有限公司