国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種資源調(diào)度的方法和系統(tǒng)與流程

      文檔序號:12278174閱讀:533來源:國知局
      一種資源調(diào)度的方法和系統(tǒng)與流程

      本發(fā)明涉及計算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種資源調(diào)度的方法和系統(tǒng)。



      背景技術(shù):

      在應(yīng)用系統(tǒng)運(yùn)營過程中,常常會碰到這樣的問題:偶然會碰到訪問量過高的情況,為了保證應(yīng)用系統(tǒng)能夠正常運(yùn)行,系統(tǒng)建設(shè)時期會以最高要求來組件服務(wù)器,但這種情況在訪問量低時,會出現(xiàn)大量的資源空閑的情況。如果在系統(tǒng)建設(shè)時期對訪問量預(yù)計不足,則在出現(xiàn)高并發(fā)請求時,會造成應(yīng)用系統(tǒng)運(yùn)行緩慢或掛機(jī)等情況。因此,針對上述問題目前已經(jīng)提出了彈性調(diào)度機(jī)制,即在訪問量高時自動創(chuàng)建計算資源以擴(kuò)展系統(tǒng)處理能力,在訪問量低的空閑時能夠自動縮減計算資源以節(jié)約成本。

      目前采用的彈性調(diào)度機(jī)制主要是依據(jù)對系統(tǒng)資源的使用情況來判斷應(yīng)用的負(fù)載情況,例如依據(jù)對CPU、內(nèi)存、網(wǎng)絡(luò)流量、磁盤IO等資源的使用情況來確定應(yīng)用的負(fù)載情況,如果某應(yīng)用對CPU、內(nèi)存等占用較多,則確定需要針對該應(yīng)用進(jìn)行擴(kuò)容。然而,這種方式在有些情況下并不能真實(shí)反映應(yīng)用狀態(tài),例如有些應(yīng)用對系統(tǒng)資源的占用并不多,但針對該應(yīng)用的處理卻十分緩慢甚至停滯,如果使用目前的彈性調(diào)度機(jī)制則無法滿足該應(yīng)用的擴(kuò)容需求。



      技術(shù)實(shí)現(xiàn)要素:

      有鑒于此,本發(fā)明提供了一種資源調(diào)度的方法和系統(tǒng),以便于更加準(zhǔn)確地滿足實(shí)際的調(diào)度需求。

      具體技術(shù)方案如下:

      本發(fā)明提供了一種資源調(diào)度的方法,該方法包括:

      監(jiān)控待服務(wù)器處理的應(yīng)用請求的阻塞狀況;

      依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和所述應(yīng)用請求的阻塞狀況,對所述應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述監(jiān)控待服務(wù)器處理的應(yīng)用請求的阻塞狀況包括:

      收集服務(wù)器的阻塞請求隊列的請求數(shù),所述阻塞請求隊列包含待服務(wù)器處理的應(yīng)用請求;

      對收集的所述請求數(shù)進(jìn)行分析和統(tǒng)計,得到所述應(yīng)用請求的阻塞狀況。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述應(yīng)用請求的阻塞狀況包括:

      針對具體應(yīng)用的請求阻塞狀況、針對具體實(shí)例的請求阻塞狀況以及針對具體主機(jī)的請求阻塞狀況中的至少一種。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述收集服務(wù)器的阻塞請求隊列的請求數(shù)包括:

      從代理服務(wù)器暴露的API收集服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,該方法還包括:

      所述代理服務(wù)器中設(shè)置有事件監(jiān)聽統(tǒng)計模塊;

      所述事件監(jiān)聽統(tǒng)計模塊監(jiān)聽所述代理服務(wù)器上報請求給所述服務(wù)器的事件,獲取已上報請求數(shù)量;以及監(jiān)聽所述代理服務(wù)器確定所述服務(wù)器完成對請求的處理事件,獲取已處理請求數(shù)量;

      依據(jù)所述已上報請求數(shù)量和所述已處理請求數(shù)量,確定所述服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述從代理服務(wù)器暴露的API收集服務(wù)器的阻塞請求隊列的請求數(shù)包括:

      訪問所述API提供的URL;

      從所述URL對應(yīng)的頁面數(shù)據(jù)獲取所述服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和所述應(yīng)用請求的阻塞狀況,對所述應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度包括以下至少一種:

      如果針對具體應(yīng)用的請求阻塞狀況滿足第一擴(kuò)容條件,則針對所述具體應(yīng)用產(chǎn)生并部署新的實(shí)例;

      如果針對具體應(yīng)用的請求阻塞狀況滿足第一縮容條件,則減少所述具體應(yīng)用的實(shí)例;

      如果針對具體實(shí)例的請求阻塞狀況滿足第二擴(kuò)容條件,則針對所述具體實(shí)例增加系統(tǒng)資源或者利用其它實(shí)例對所述具體實(shí)例進(jìn)行負(fù)載分擔(dān);

      如果針對具體實(shí)例的請求阻塞狀況滿足第二縮容條件,則針對所述具體實(shí)例減少系統(tǒng)資源;

      如果針對具體主機(jī)的請求阻塞狀況滿足第三擴(kuò)容條件,則利用其它主機(jī)對所述具體主機(jī)進(jìn)行負(fù)載分擔(dān);

      如果針對具體主機(jī)的請求阻塞狀況滿足第三縮容條件,則優(yōu)先在所述具體主機(jī)上部署實(shí)例,或者優(yōu)先利用所述具體主機(jī)對其他主機(jī)進(jìn)行負(fù)載分擔(dān)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,該方法還包括以下至少一種:

      監(jiān)控具體應(yīng)用中實(shí)例的資源使用狀況,如果具體應(yīng)用中實(shí)例的平均資源使用狀況大于或等于預(yù)設(shè)的第一上限值,則增加所述具體應(yīng)用的實(shí)例;如果具體應(yīng)用中實(shí)例的平均資源使用狀況小于或等于預(yù)設(shè)的第一下限值,則減少所述具體應(yīng)用的實(shí)例;

      監(jiān)控具體應(yīng)用中實(shí)例的資源使用狀況,如果某實(shí)例的資源使用狀況大于或等于預(yù)設(shè)的第二上限值,則增加所述某實(shí)例所占用的系統(tǒng)資源;如果某實(shí)例的資源使用狀況小于或等于預(yù)設(shè)的第二下限值,則減少所述某實(shí)例所占用的系統(tǒng)資源;

      如果檢測到某主機(jī)不可用,則針對所述某主機(jī)上的實(shí)例發(fā)起遷移;

      如果檢測到某進(jìn)程不可用,則針對所述某進(jìn)程執(zhí)行重啟,如果重啟失敗,則針對所述某進(jìn)程上的實(shí)例發(fā)起遷移;

      如果檢測到某應(yīng)用異常,則對所述某應(yīng)用執(zhí)行重啟,或者針對所述某應(yīng)用的實(shí)例發(fā)起遷移,或者進(jìn)行報警。

      本發(fā)明還提供了一種資源調(diào)度的系統(tǒng),該系統(tǒng)包括:

      阻塞監(jiān)控單元,用于監(jiān)控待服務(wù)器處理的應(yīng)用請求的阻塞狀況;

      調(diào)度單元,用于依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和所述應(yīng)用請求的阻塞狀況,對所述應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述阻塞監(jiān)控單元具體包括:

      監(jiān)控子單元,用于收集服務(wù)器的阻塞請求隊列的請求數(shù),所述阻塞請求隊列包含待服務(wù)器處理的應(yīng)用請求;

      計算子單元,用于對所述監(jiān)控子單元收集的所述請求數(shù)進(jìn)行分析和統(tǒng)計,得到所述應(yīng)用請求的阻塞狀況。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述應(yīng)用請求的阻塞狀況包括:

      針對具體應(yīng)用的請求阻塞狀況、針對具體實(shí)例的請求阻塞狀況以及針對具體主機(jī)的請求阻塞狀況中的至少一種。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述監(jiān)控子單元從代理服務(wù)器暴露的API收集服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,該系統(tǒng)還包括:

      設(shè)置于所述代理服務(wù)器的事件監(jiān)聽統(tǒng)計模塊,用于監(jiān)聽所述代理服務(wù)器上報請求給所述服務(wù)器的事件,獲取已上報請求數(shù)量;以及監(jiān)聽所述代理服務(wù)器確定所述服務(wù)器完成對請求的處理事件,獲取已處理請求數(shù)量;依據(jù)所述已上報請求數(shù)量和所述已處理請求數(shù)量,確定所述服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述監(jiān)控子單元,具體用于訪問所述API提供的URL,從所述URL對應(yīng)的頁面數(shù)據(jù)獲取所述服務(wù)器的阻塞請求隊列的請求數(shù)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述調(diào)度單元,具體執(zhí)行以下調(diào)度中的至少一種:

      如果針對具體應(yīng)用的請求阻塞狀況滿足第一擴(kuò)容條件,則針對所述具體應(yīng)用產(chǎn)生并部署新的實(shí)例;

      如果針對具體應(yīng)用的請求阻塞狀況滿足第一縮容條件,則減少所述具體應(yīng)用的實(shí)例;

      如果針對具體實(shí)例的請求阻塞狀況滿足第二擴(kuò)容條件,則針對所述具體實(shí)例增加系統(tǒng)資源或者利用其它實(shí)例對所述具體實(shí)例進(jìn)行負(fù)載分擔(dān);

      如果針對具體實(shí)例的請求阻塞狀況滿足第二縮容條件,則針對所述具體實(shí)例減少系統(tǒng)資源;

      如果針對具體主機(jī)的請求阻塞狀況滿足第三擴(kuò)容條件,則利用其它主機(jī)對所述具體主機(jī)進(jìn)行負(fù)載分擔(dān);

      如果針對具體主機(jī)的請求阻塞狀況滿足第三縮容條件,則優(yōu)先在所述具體主機(jī)上部署實(shí)例,或者優(yōu)先利用所述具體主機(jī)對其他主機(jī)進(jìn)行負(fù)載分擔(dān)。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述阻塞監(jiān)控單元,還用于監(jiān)控具體應(yīng)用中實(shí)例的資源使用狀況;

      所述調(diào)度單元,還用于如果具體應(yīng)用中實(shí)例的平均資源使用狀況大于或等于預(yù)設(shè)的第一上限值,則增加所述具體應(yīng)用的實(shí)例;如果具體應(yīng)用中實(shí)例的平均資源使用狀況小于或等于預(yù)設(shè)的第一下限值,則減少所述具體應(yīng)用的實(shí)例;或者,如果某實(shí)例的資源使用狀況大于或等于預(yù)設(shè)的第二上限值,則增加所述某實(shí)例所占用的系統(tǒng)資源;如果某實(shí)例的資源使用狀況小于或等于預(yù)設(shè)的第二下限值,則減少所述某實(shí)例所占用的系統(tǒng)資源。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,該系統(tǒng)還包括:

      狀態(tài)檢測單元,用于檢測主機(jī)、進(jìn)程或應(yīng)用的運(yùn)行狀態(tài);

      所述調(diào)度單元,還用于如果所述狀態(tài)檢測單元檢測到某主機(jī)不可用,則針對所述某主機(jī)上的實(shí)例發(fā)起遷移;如果所述狀態(tài)檢測單元檢測到某進(jìn)程不可用,則針對所述某進(jìn)程執(zhí)行重啟,如果重啟失敗,則針對所述某進(jìn)程上的實(shí)例發(fā)起遷移;如果所述狀態(tài)檢測單元檢測到某應(yīng)用異常,則對所述某應(yīng)用執(zhí)行重啟,或者針對所述某應(yīng)用的實(shí)例發(fā)起遷移,或者進(jìn)行報警。

      根據(jù)本發(fā)明一優(yōu)選實(shí)施方式,所述調(diào)度單元包括:

      調(diào)度子單元,用于依據(jù)依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和所述應(yīng)用請求的阻塞狀況,生成調(diào)度指令,并將調(diào)度指令發(fā)送給管理子單元;

      管理子單元,用于依據(jù)所述調(diào)度指令,對所述應(yīng)用執(zhí)行服務(wù)器的計算資源 調(diào)度。

      由以上技術(shù)方案可以看出,本發(fā)明轉(zhuǎn)換了一種思路,對待服務(wù)器處理的應(yīng)用請求的阻塞狀況進(jìn)行收集并基于此對應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度,而并非基于應(yīng)用對系統(tǒng)資源的使用情況。由于待服務(wù)器處理的應(yīng)用請求的阻塞狀況能夠更真實(shí)地反映應(yīng)用的負(fù)載狀況,因此本發(fā)明的調(diào)度方式能夠更加準(zhǔn)確地滿足實(shí)際的調(diào)度需求。

      【附圖說明】

      圖1為本發(fā)明實(shí)施例所基于的架構(gòu)圖;

      圖2為本發(fā)明實(shí)施例提供的一個方法流程圖;

      圖3為本發(fā)明實(shí)施例提供的資源調(diào)度系統(tǒng)的結(jié)構(gòu)圖。

      【具體實(shí)施方式】

      為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。

      為了方便對本發(fā)明的理解,首先對本發(fā)明所基于的架構(gòu)進(jìn)行介紹。如圖1中所示,在該架構(gòu)中服務(wù)器是對應(yīng)用請求進(jìn)行具體處理的網(wǎng)絡(luò)設(shè)備,即應(yīng)用請求的訪問對象是服務(wù)器,服務(wù)器負(fù)責(zé)對各應(yīng)用請求進(jìn)行處理從而實(shí)現(xiàn)該應(yīng)用的服務(wù)內(nèi)容。另外對應(yīng)用請求進(jìn)行處理的服務(wù)器可以是一臺服務(wù)器,也可以是一個服務(wù)器集群。

      在服務(wù)器中可以存在至少一臺主機(jī),每個主機(jī)上運(yùn)行有一個或者多個應(yīng)用的實(shí)例。也就是說,一個應(yīng)用可以由一個以上的應(yīng)用實(shí)例構(gòu)成,每個應(yīng)用實(shí)例部署在主機(jī)上,可以部署在同一臺主機(jī)上,也可以部署在不同的主機(jī)上,甚至可以部署在服務(wù)器集群中的不同服務(wù)器上。

      在如圖1所示的架構(gòu)中,代理服務(wù)器(proxy server)負(fù)責(zé)將來自用戶側(cè)設(shè)備的應(yīng)用請求轉(zhuǎn)發(fā)至服務(wù)器進(jìn)行處理,并將來自服務(wù)器的響應(yīng)轉(zhuǎn)發(fā)給用戶側(cè)設(shè)備。

      調(diào)度系統(tǒng)則是本發(fā)明的核心,負(fù)責(zé)監(jiān)控服務(wù)器處理的應(yīng)用請求的阻塞狀況,依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和應(yīng)用請求的阻塞狀況,對應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度。更具體地,調(diào)度系統(tǒng)在監(jiān)控服務(wù)器處理的應(yīng)用請求的阻塞狀況時,并非直接從服務(wù)器獲取,而是采用從代理服務(wù)器進(jìn)行數(shù)據(jù)收集并分析后,間接得到服務(wù)器處理的應(yīng)用請求的阻塞狀況。下面對調(diào)度系統(tǒng)的處理過程和組成結(jié)構(gòu)進(jìn)行詳細(xì)描述。

      圖2為本發(fā)明實(shí)施例提供的一個方法流程圖,該方法由上述調(diào)度系統(tǒng)執(zhí)行,如圖2中所示,該方法可以包括以下步驟:

      在201中,從代理服務(wù)器暴露的API收集服務(wù)器的阻塞請求隊列的請求數(shù)。

      由于代理服務(wù)器負(fù)責(zé)將發(fā)送給服務(wù)器的應(yīng)用請求轉(zhuǎn)發(fā)給服務(wù)器,并接收服務(wù)器處理應(yīng)用請求后返回的響應(yīng),因此依據(jù)代理服務(wù)器轉(zhuǎn)發(fā)給服務(wù)器的應(yīng)用請求數(shù)以及收到的響應(yīng)對應(yīng)的請求數(shù),就可以獲知已發(fā)送給服務(wù)器待服務(wù)器處理的請求數(shù),基于該原理,就可以從代理服務(wù)器進(jìn)行服務(wù)器的阻塞請求隊列的請求數(shù)收集。

      更具體地,由于代理服務(wù)器采用的是異步事件處理機(jī)制,當(dāng)執(zhí)行一項(xiàng)處理時存在相應(yīng)的事件。因此,可以預(yù)先在代理服務(wù)器設(shè)置事件監(jiān)聽統(tǒng)計模塊,負(fù)責(zé)進(jìn)行代理服務(wù)器的事件監(jiān)聽和請求統(tǒng)計,即事件監(jiān)聽統(tǒng)計模塊監(jiān)聽代理服務(wù)器上報請求給服務(wù)器的事件,獲取已上報請求數(shù)量,在此可以采用一個全局變量進(jìn)行已上報請求數(shù)量的統(tǒng)計,每上報一個請求,該全局變量(假設(shè)為u)加1。另外,事件監(jiān)聽統(tǒng)計模塊監(jiān)聽代理服務(wù)器確定服務(wù)器完成對請求的處理事件(例如接收到服務(wù)器針對請求返回的處理完成響應(yīng)),獲取已處理請求數(shù)量,每獲取已處理請求數(shù)量,上述的全局變量u減1。最終該全局變量的值就可以認(rèn)為是服務(wù)器的阻塞請求隊列的請求數(shù),即已發(fā)送給服務(wù)器并待服務(wù)器處理的請求數(shù)。

      除此之外,事件監(jiān)聽統(tǒng)計模塊還可以監(jiān)聽代理服務(wù)器建立網(wǎng)絡(luò)連接的事件,獲取已建立網(wǎng)絡(luò)連接但尚未轉(zhuǎn)發(fā)給服務(wù)器的請求數(shù),該請求數(shù)體現(xiàn)了服 務(wù)器未來會面臨的處理壓力,該請求數(shù)可以作為輔助因素,后續(xù)調(diào)度單元可以將該輔助因素作為進(jìn)行計算資源調(diào)度的參考。

      上述獲取的請求數(shù),事件監(jiān)聽統(tǒng)計模塊可以通過代理服務(wù)器暴露的API輸出,在輸出時可以采用http協(xié)議。例如該API可以提供特定的URL,當(dāng)調(diào)度系統(tǒng)訪問該URL時,API會返回一個頁面,該頁面可以通過格式化數(shù)據(jù)的方式提供上述的請求數(shù),即調(diào)度系統(tǒng)從該URL對應(yīng)的頁面數(shù)據(jù)獲取服務(wù)器的阻塞請求隊列的請求數(shù)。

      在202中,對收集的請求數(shù)進(jìn)行分析和統(tǒng)計,得到應(yīng)用請求的阻塞狀況。

      在本步驟中,可以對收集的請求數(shù)分別進(jìn)行分析和統(tǒng)計,確定各具體應(yīng)用對應(yīng)的阻塞請求隊列的請求數(shù)、各具體實(shí)例對應(yīng)的阻塞請求隊列的請求數(shù)、具體主機(jī)對應(yīng)的阻塞請求隊列的請求數(shù)。對于一個請求而言,依據(jù)其訪問的域名可以確定其對應(yīng)的具體應(yīng)用,依據(jù)其訪問的IP地址可以確定其對應(yīng)的具體主機(jī),依據(jù)其訪問的端口可以確定其對應(yīng)的具體實(shí)例。

      阻塞請求隊列的請求數(shù)結(jié)合對應(yīng)計算資源的處理能力能夠反映請求的阻塞狀況,具體將在后續(xù)描述中體現(xiàn)。

      在203中,依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和應(yīng)用請求的阻塞狀況,對應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度。

      對于具體應(yīng)用而言,如果某應(yīng)用的請求阻塞狀況滿足第一擴(kuò)容條件,例如,阻塞請求隊列的請求數(shù)超過該應(yīng)用所占用計算資源的3倍處理能力(其中3倍是一個例子,具體可以取經(jīng)驗(yàn)值或者根據(jù)歷史數(shù)據(jù)得到的值,下面所舉的各例也類似),則說明該應(yīng)用的請求阻塞嚴(yán)重,需要針對該應(yīng)用產(chǎn)生并部署新的實(shí)例,新的實(shí)例在部署時可以基于負(fù)載均衡策略,優(yōu)先部署在負(fù)載較低(例如阻塞請求隊列的請求數(shù)較少)的主機(jī)上。如果某應(yīng)用的請求阻塞狀況滿足第一縮容條件,例如阻塞請求隊列的請求數(shù)低于該應(yīng)用所占用計算資源的0.5倍處理能力,則說明該應(yīng)用的請求數(shù)量很少,其所占用的計算資源空閑,因此可以減少分配給該應(yīng)用的實(shí)例,其中待結(jié)束的實(shí)例不再分配請求,待該實(shí)例無任務(wù)時,結(jié)束該實(shí)例。

      對于具體實(shí)例而言,如果某實(shí)例的請求阻塞狀況滿足第二擴(kuò)容條件,例如某實(shí)例的阻塞請求隊列的請求數(shù)超過該實(shí)例所占用計算資源的3倍處理能力,則說明該實(shí)例的請求阻塞嚴(yán)重,可以針對該實(shí)例增加系統(tǒng)資源,本發(fā)明所涉及的系統(tǒng)資源可以包括但不限于CPU、內(nèi)存、IO資源、網(wǎng)絡(luò)流量等,或者增加實(shí)例對該實(shí)例進(jìn)行負(fù)載分擔(dān),還可以結(jié)合該實(shí)例對系統(tǒng)資源的占用狀況來確定增加那種系統(tǒng)資源。如果某實(shí)例的請求阻塞狀況滿足第二縮容條件,例如某實(shí)例的阻塞請求隊列的請求數(shù)低于該實(shí)例所占用計算資源的3倍處理能力,則說明該實(shí)例的計算資源空閑,可以針對該實(shí)例減少系統(tǒng)資源。

      對于具體主機(jī)而言,如果針對具體主機(jī)的請求阻塞狀況滿足第三擴(kuò)容條件,例如該主機(jī)的阻塞請求隊列的請求數(shù)超過該主機(jī)的3倍處理能力,則利用其它主機(jī)對該主機(jī)進(jìn)行負(fù)載分擔(dān)。如果針對具體主機(jī)的請求阻塞狀況滿足第三縮容條件,例如該主機(jī)的阻塞請求隊列的請求數(shù)低于該主機(jī)的0.5倍處理能力,則優(yōu)先在該主機(jī)上部署新的實(shí)例,或者優(yōu)先利用該主機(jī)對其他主機(jī)進(jìn)行負(fù)載分擔(dān)。

      上述對計算資源的調(diào)度可以是周期性地,可以滿足不同階段的應(yīng)用彈性調(diào)度需求。

      在基礎(chǔ)上,還可以融合現(xiàn)有彈性調(diào)度機(jī)制,例如可以包括但不限于以下情況:

      監(jiān)控具體應(yīng)用中實(shí)例的資源使用狀況,這里的資源使用狀況包括CPU、內(nèi)存、IO資源等系統(tǒng)資源,如果所有實(shí)例的平均資源使用狀況大于或等于預(yù)設(shè)的第一上限值,例如大于或等于80%的理論平均值,則可以增加具體應(yīng)用的實(shí)例。如果所有實(shí)例的平均資源使用狀況小于或等于預(yù)設(shè)的第一下限值,例如小于或等于20%的理論平均值,則可以減少具體應(yīng)用的實(shí)例。其中第一上限值大于第一下限值。

      如果某實(shí)例的資源使用狀況大于或等于預(yù)設(shè)的第二上限值,例如CPU占用高于30%,則可以增加該實(shí)例所占用的系統(tǒng)資源,例如CPU、內(nèi)存或IO資源等。如果某實(shí)例的資源使用狀況小于或等于預(yù)設(shè)的第二下限值,例如 CPU占用低于10%,則可以減少該實(shí)例所占用的系統(tǒng)資源。其中第二上限值大于第二下限值。

      如果檢測到某主機(jī)不可用,則可以針對該主機(jī)上的所有實(shí)例發(fā)起遷移,例如遷移到其他一個或多個主機(jī)上,在遷移到其他一個或多個主機(jī)上時可以基于負(fù)載均衡策略,優(yōu)先遷移到負(fù)載較小的主機(jī)上。

      如果檢測到某進(jìn)程不可用,則針對該進(jìn)程執(zhí)行重啟,如果重啟失敗,則針對該進(jìn)程上的實(shí)例發(fā)起遷移,可以遷移到其他進(jìn)程上,其中可以遷移到同一個主機(jī)的其他進(jìn)程,但優(yōu)選遷移到其他主機(jī)的進(jìn)程。

      如果檢測到應(yīng)用不可用,可能是由應(yīng)用故障或者攻擊引起,則可以將該應(yīng)用的實(shí)例所在的進(jìn)程進(jìn)行重啟,或者將整個應(yīng)用的實(shí)例進(jìn)行遷移,或者報警。

      在上述實(shí)現(xiàn)中,可以對各應(yīng)用實(shí)例的資源使用進(jìn)行限制,例如可以設(shè)置各應(yīng)用實(shí)例對內(nèi)存的使用上限是4G。也可以針對各應(yīng)用的資源使用進(jìn)行限制,例如設(shè)置該應(yīng)用所有實(shí)例對CPU的總使用上限是80%。其目的是為了防止因?yàn)槟承?yīng)用代碼異常而導(dǎo)致的系統(tǒng)資源的無限制使用。另外,調(diào)度系統(tǒng)可以開放接口供用戶對上述調(diào)度規(guī)則和資源使用上限進(jìn)行配置和調(diào)整。

      圖3為本發(fā)明實(shí)施例提供的資源調(diào)度系統(tǒng)的結(jié)構(gòu)圖,如圖3中所示,該系統(tǒng)可以包括阻塞監(jiān)控單元00和調(diào)度單元10,還可以包括設(shè)置于代理服務(wù)器的事件監(jiān)聽統(tǒng)計模塊20和狀態(tài)檢測單元30。其中,阻塞監(jiān)控單元00可以具體包括監(jiān)控子單元01和計算子單元02,調(diào)度單元10可以具體包括調(diào)度子單元11和管理子單元12。

      阻塞監(jiān)控單元00負(fù)責(zé)監(jiān)控待服務(wù)器處理的應(yīng)用請求的阻塞狀況。

      具體地,監(jiān)控子單元01負(fù)責(zé)收集服務(wù)器的阻塞請求隊列的請求數(shù),阻塞請求隊列包含待服務(wù)器處理的應(yīng)用請求。監(jiān)控子單元01可以從代理服務(wù)器暴露的API收集服務(wù)器的阻塞請求隊列的請求數(shù)。

      由于代理服務(wù)器采用的是異步事件處理機(jī)制,當(dāng)執(zhí)行一項(xiàng)處理時存在相應(yīng)的事件。因此,可以預(yù)先在代理服務(wù)器設(shè)置事件監(jiān)聽統(tǒng)計模塊20,其負(fù)責(zé) 監(jiān)聽代理服務(wù)器上報請求給服務(wù)器的事件,獲取已上報請求數(shù)量;以及監(jiān)聽代理服務(wù)器確定服務(wù)器完成對請求的處理事件,獲取已處理請求數(shù)量;依據(jù)已上報請求數(shù)量和已處理請求數(shù)量,確定服務(wù)器的阻塞請求隊列的請求數(shù)。

      在此可以采用一個全局變量進(jìn)行已上報請求數(shù)量的統(tǒng)計,每上報一個請求,該全局變量加1,每獲取一個已處理請求的響應(yīng),上述的全局變量減1。最終該全局變量的值就可以認(rèn)為是服務(wù)器的阻塞請求隊列的請求數(shù),即已發(fā)送給服務(wù)器并待服務(wù)器處理的請求數(shù)。

      除此之外,事件監(jiān)聽統(tǒng)計模塊20還可以監(jiān)聽代理服務(wù)器建立網(wǎng)絡(luò)連接的事件,獲取已建立網(wǎng)絡(luò)連接但尚未轉(zhuǎn)發(fā)給服務(wù)器的請求數(shù),該請求數(shù)體現(xiàn)了服務(wù)器未來會面臨的處理壓力,該請求數(shù)可以作為輔助因素,后續(xù)調(diào)度單元可以將該輔助因素作為進(jìn)行計算資源調(diào)度的參考。

      上述獲取的請求數(shù),事件監(jiān)聽統(tǒng)計模塊20可以通過代理服務(wù)器暴露的API輸出,在輸出時可以采用http協(xié)議。例如該API可以提供特定的URL,當(dāng)調(diào)度系統(tǒng)訪問該URL時,API會返回一個頁面,該頁面可以通過格式化數(shù)據(jù)的方式提供上述的請求數(shù),即監(jiān)控子單元01訪問API提供的URL,從URL對應(yīng)的頁面數(shù)據(jù)獲取服務(wù)器的阻塞請求隊列的請求數(shù)。

      計算子單元02負(fù)責(zé)對監(jiān)控子單元01收集的請求數(shù)進(jìn)行分析和統(tǒng)計,得到應(yīng)用請求的阻塞狀況。其中,應(yīng)用請求的阻塞狀況可以包括:針對具體應(yīng)用的請求阻塞狀況、針對具體實(shí)例的請求阻塞狀況以及針對具體主機(jī)的請求阻塞狀況中的至少一種。對于一個請求而言,依據(jù)其訪問的域名可以確定其對應(yīng)的具體應(yīng)用,依據(jù)其訪問的IP地址可以確定其對應(yīng)的具體主機(jī),依據(jù)其訪問的端口可以確定其對應(yīng)的具體實(shí)例。

      由于監(jiān)控子單元01對請求數(shù)的收集是周期性執(zhí)行的,因此監(jiān)控子單元01可以將收集的數(shù)據(jù)送入監(jiān)控數(shù)據(jù)庫,計算子單元02對監(jiān)控數(shù)據(jù)庫中的數(shù)據(jù)執(zhí)行上述分析和統(tǒng)計。

      調(diào)度單元10負(fù)責(zé)依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和應(yīng)用請求的阻塞狀況,對應(yīng)用進(jìn)行服務(wù)器的計算資源調(diào)度。

      具體地,調(diào)度單元10可以具體執(zhí)行以下調(diào)度中的至少一種:

      如果針對具體應(yīng)用的請求阻塞狀況滿足第一擴(kuò)容條件,則針對具體應(yīng)用產(chǎn)生并部署新的實(shí)例,新的實(shí)例在部署時可以基于負(fù)載均衡策略,優(yōu)先部署在負(fù)載較低(例如阻塞請求隊列的請求數(shù)較少)的主機(jī)上。如果針對具體應(yīng)用的請求阻塞狀況滿足第一縮容條件,則減少具體應(yīng)用的實(shí)例,其中待結(jié)束的實(shí)例不再分配請求,待該實(shí)例無任務(wù)時,結(jié)束該實(shí)例。

      如果針對具體實(shí)例的請求阻塞狀況滿足第二擴(kuò)容條件,則針對具體實(shí)例增加系統(tǒng)資源或者利用其它實(shí)例對具體實(shí)例進(jìn)行負(fù)載分擔(dān)。如果針對具體實(shí)例的請求阻塞狀況滿足第二縮容條件,則針對具體實(shí)例減少系統(tǒng)資源。

      如果針對具體主機(jī)的請求阻塞狀況滿足第三擴(kuò)容條件,則利用其它主機(jī)對具體主機(jī)進(jìn)行負(fù)載分擔(dān)。如果針對具體主機(jī)的請求阻塞狀況滿足第三縮容條件,則優(yōu)先在具體主機(jī)上部署實(shí)例,或者優(yōu)先利用具體主機(jī)對其他主機(jī)進(jìn)行負(fù)載分擔(dān)。

      在上述基礎(chǔ)上,該系統(tǒng)還可以融合現(xiàn)有彈性調(diào)度機(jī)制,此時,阻塞監(jiān)控單元00還負(fù)責(zé)監(jiān)控具體應(yīng)用中實(shí)例的資源使用狀況。如果具體應(yīng)用中實(shí)例的平均資源使用狀況大于或等于預(yù)設(shè)的第一上限值,則調(diào)度單元10可以增加具體應(yīng)用的實(shí)例。如果具體應(yīng)用中實(shí)例的平均資源使用狀況小于或等于預(yù)設(shè)的第一下限值,則調(diào)度單元10可以減少具體應(yīng)用的實(shí)例。其中第一上限值大于第一下限值。

      如果某實(shí)例的資源使用狀況大于或等于預(yù)設(shè)的第二上限值,則調(diào)度單元10可以增加某實(shí)例所占用的系統(tǒng)資源,例如CPU、內(nèi)存或IO資源等。如果某實(shí)例的資源使用狀況小于或等于預(yù)設(shè)的第二下限值,則調(diào)度單元10可以減少某實(shí)例所占用的系統(tǒng)資源。其中第二上限值大于第二下限值。

      狀態(tài)檢測單元30負(fù)責(zé)檢測主機(jī)、進(jìn)程或應(yīng)用的運(yùn)行狀態(tài)。如果狀態(tài)檢測單元30檢測到某主機(jī)不可用,則調(diào)度單元10可以針對某主機(jī)上的實(shí)例發(fā)起遷移,例如遷移到其他一個或多個主機(jī)上,在遷移到其他一個或多個主機(jī)上時可以基于負(fù)載均衡策略,優(yōu)先遷移到負(fù)載較小的主機(jī)上。

      如果狀態(tài)檢測單元30檢測到某進(jìn)程不可用,則調(diào)度單元10可以針對某進(jìn)程執(zhí)行重啟,如果重啟失敗,則針對某進(jìn)程上的實(shí)例發(fā)起遷移,可以遷移到其他進(jìn)程上,其中可以遷移到同一個主機(jī)的其他進(jìn)程,但優(yōu)選遷移到其他主機(jī)的進(jìn)程。

      如果狀態(tài)檢測單元30檢測到某應(yīng)用異常,則調(diào)度單元10可以對某應(yīng)用執(zhí)行重啟,或者針對某應(yīng)用的實(shí)例發(fā)起遷移,或者進(jìn)行報警。

      調(diào)度單元10包括的調(diào)度子單元11負(fù)責(zé)依據(jù)依據(jù)預(yù)設(shè)的調(diào)度規(guī)則和應(yīng)用請求的阻塞狀況,生成調(diào)度指令,并將調(diào)度指令發(fā)送給管理子單元12。其中調(diào)度子單元11可以從規(guī)則數(shù)據(jù)庫中加載調(diào)度規(guī)則,其中調(diào)度規(guī)則數(shù)據(jù)庫可以對外提供一個接口,用戶可以通過該接口對調(diào)度規(guī)則進(jìn)行配置或修改。

      管理子單元12是具體執(zhí)行調(diào)度操作的單元,平時負(fù)責(zé)對資源進(jìn)行管理,在本發(fā)明實(shí)施例中負(fù)責(zé)依據(jù)調(diào)度指令,對應(yīng)用執(zhí)行服務(wù)器的計算資源調(diào)度。還可以進(jìn)一步將調(diào)度結(jié)果返回給調(diào)度子單元11。

      在本發(fā)明所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式。

      所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

      另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。

      上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指 令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實(shí)施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機(jī)存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

      以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1