亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于分布式系統(tǒng)的調(diào)度方法、裝置及電子設備與流程

文檔序號:11917920閱讀:162來源:國知局
用于分布式系統(tǒng)的調(diào)度方法、裝置及電子設備與流程

本申請涉及計算機技術領域,具體涉及兩種用于分布式系統(tǒng)的調(diào)度方法;相應于上述方法,本申請同時涉及兩種用于分布式系統(tǒng)的調(diào)度裝置以及兩種電子設備。



背景技術:

在互聯(lián)網(wǎng)技術不斷發(fā)展的今天,越來越多的數(shù)據(jù)處理依賴較高的計算能力,為了解決單一處理節(jié)點無法處理多種多樣的工作,以及無法滿足越來越高的計算能力的要求,目前常利用分布式系統(tǒng)處理上述問題。

在分布式系統(tǒng)中,為了讓各個系統(tǒng)間協(xié)同工作,提出了分布式鎖的概念,分布式鎖是控制分布式系統(tǒng)之間訪問共享資源的一種方式,搶到分布式鎖的機器中的線程,可以繼續(xù)執(zhí)行任務,其它機器等待該鎖釋放。

由此可見,由于分布式鎖存在搶鎖-釋放鎖的過程,而且同一時間只能有一個機器搶到鎖,搶到鎖的機器才能運行,所以機器在處理任務時的效率較低,而且機器在使用分布式鎖的過程中,如果搶到鎖的機器突然宕機,且該鎖還未被釋放,則會能造成死鎖。另外,在搶占時,機器如果一次搶占不成功,則還需要循環(huán)搶占,所以任務分配收斂較慢,分配時間長。



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

本申請?zhí)峁﹥煞N用于分布式系統(tǒng)的調(diào)度方法,以解決現(xiàn)有技術中的上述問題。本申請同時涉及兩種用于分布式系統(tǒng)的調(diào)度裝置以及兩種電子設備。

本申請?zhí)峁┝艘环N用于分布式系統(tǒng)的調(diào)度方法,所述用于分布式系統(tǒng)的調(diào)度方法包括:

分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;

通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;

將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;

所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

可選的,所述資源提供單位為在分布式系統(tǒng)中的機器,所述資源消耗單位為處理待分配的任務項的線程組。

可選的,所述資源提供單位為處理待分配的任務項的線程組,所述資源消耗單位為待分配的任務項。

可選的,若所述資源消耗單位平均承擔數(shù)量N的取整方式為:去除所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值的小數(shù)位;

此時,所述按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,是從資源消耗單位中提取數(shù)量為N或者(N+1)的資源消耗單位,包括:

將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

將資源消耗單位數(shù)量減去取整資源消耗單位數(shù)量獲取剩余資源消耗單位數(shù)量X;

對于資源提供單位順序號M的數(shù)值小于等于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N+1的資源消耗單位;

為資源提供單位順序號M的數(shù)值大于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

可選的,若所述資源消耗單位承擔數(shù)量N的取整方式為:所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值,若存在小數(shù)位,則取大于該獲得值的最小整數(shù);

此時,所述按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N 或者(N-1)或者(N+1)的資源消耗單位,是從資源消耗單位中提取數(shù)量為N或者(N-1)的資源消耗單位,包括:

將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

將取整資源消耗單位數(shù)量減去資源消耗單位數(shù)量獲取多余資源消耗單位數(shù)量Y;

對于資源提供單位順序號M的數(shù)值小于等于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為(N-1)的資源消耗單位;

為資源提供單位順序號M的數(shù)值大于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

相應的,本申請還提供了一種用于分布式系統(tǒng)的調(diào)度裝置,所述用于分布式系統(tǒng)的調(diào)度裝置包括:

資源提供單位獲取單元,用于分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;

編號單元,用于通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;

承擔數(shù)量計算單元,用于將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;

資源消耗單位分配單元,用于所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

可選的,若所述承擔數(shù)量計算單元,具體用于去除所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值的小數(shù)位,則所述資源消耗單位分配單元,包括:取整計算子單元、剩余數(shù)計算子單元、第一資源消耗單位分配子單元以及第二資源消耗單位分配子單元;

所述取整計算子單元,用于從資源消耗單位中提取數(shù)量為N或者(N+1)的資源消耗單位,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

所述剩余數(shù)計算子單元,用于將資源消耗單位數(shù)量減去取整資源消耗單位數(shù)量獲取剩余資源消耗單位數(shù)量X;

所述第一資源消耗單位分配子單元,用于對于資源提供單位順序號M的數(shù)值小于等于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N+1的資源消耗單位;

所述第二資源消耗單位分配子單元,用于為資源提供單位順序號M的數(shù)值大于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

可選的,若所述承擔數(shù)量計算單元,具體用于若存在小數(shù)位,則取大于該獲得值的最小整數(shù),則所述資源消耗單位分配單元,包括:取整計算子單元、多余數(shù)計算子單元、第一資源消耗單位分配子單元以及第二資源消耗單位分配子單元;

所述取整計算子單元,用于從資源消耗單位中提取數(shù)量為N或者(N-1)的資源消耗單位,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

所述多余數(shù)計算子單元,用于將取整資源消耗單位數(shù)量減去資源消耗單位數(shù)量獲取多余資源消耗單位數(shù)量Y;

所述第一資源消耗單位分配子單元,用于對于資源提供單位順序號M的數(shù)值小于等于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為(N-1)的資源消耗單位;

所述第二資源消耗單位分配子單元,用于為資源提供單位順序號M的數(shù)值大于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

此外,本申請還提供了一種電子設備,所述電子設備包括:

顯示器;

處理器;

存儲器,用于存儲分布式系統(tǒng)的調(diào)度程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

此外,本申請還提供了另一種用于分布式系統(tǒng)的調(diào)度方法,所述用于分布式系統(tǒng)的調(diào)度方法包括:

讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求;

按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量;

將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

可選的,所述控制信息還包括:在zookeeper系統(tǒng)中注冊的線程組,以及待處理的任務項;

在所述為服務器配置相應的線程組的步驟之后,包括:

按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述待處理的任務項,計算各個線程組需要分配的任務項數(shù)量;

將所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量作為資源提供單位,將所述需 要處理的任務項作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為各個線程組配置相應的任務項,包括對已經(jīng)分配的任務項重新分配、為進程組分配新的任務項以及消除需要停止的任務項。

可選的,所述zookeeper系統(tǒng)中存儲的控制信息被存儲在服務器本地,并以服務器本地存儲的控制信息作為該服務器執(zhí)行分布式任務調(diào)度的依據(jù);若zookeeper系統(tǒng)出現(xiàn)異常,則直接以服務器本地存儲的控制信息執(zhí)行分布式任務調(diào)度。

可選的,在所述讀取zookeeper系統(tǒng)中存儲的控制信息之前,包括:

各個服務器具有重新加載字段Reload;

各個服務器具有間隔固定時間就讀取所述重新加載字段Reload的值的守護線程;

若所述守護線程讀取到的所述重新加載字段Reload的值為true,則進入所述讀取zookeeper系統(tǒng)中存儲的控制信息的步驟;并將所述重新加載字段Reload的值設置為false。

可選的,對所述zookeeper系統(tǒng)持續(xù)監(jiān)聽;若出現(xiàn)以下任意事項則設置所述重新加載字段Reload為true:zookeeper系統(tǒng)重啟、zookeeper系統(tǒng)配置變化、zookeeper系統(tǒng)存儲的控制信息變化、服務器初始化。

可選的,所述分布式系統(tǒng)的各個線程組分別設置有對應該線程組的加載判斷字段Needload;

所述各個線程組分別具有間隔固定時間就讀取所述加載判斷字段Needload的值的線程組守護進程;

若所述線程組守護進程讀取到的所述重新加載字段Needload的值為true,則進入所述按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述需要處理的任務項,計算各個線程組需要分配的任務項數(shù)量的步驟;并將所述加載判斷字段Needload的值設置為false。

可選的,在所述為各個線程組配置相應的任務項的步驟之后,包括:

讀取zookeeper的控制信息版本號;

獲取服務器的控制信息版本號;

判斷服務器的版本號是否與zookeeper的版本號相同;

若否,則讀取存儲在服務器本地的重新加載字段Reload,并將所述重新加載字段的取值修改為true。

可選的,各個服務器設置有服務器運行標志字段isRunning;該服務器運行標志字段在服務器正常運行的情況下為true;當所述服務器需要退出系統(tǒng)時,則設置服務器運行標志字段isRunning設置為false,并停止服務器初始化線程、停止系統(tǒng)守護線程、停止服務器的所有線程組、注銷服務器與zookeeper的連接。

相應的,本申請還提供了另一種用于分布式系統(tǒng)的調(diào)度裝置,所述用于分布式系統(tǒng)的調(diào)度裝置包括:

控制信息讀取單元,用于讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求;

重新計算單元,用于按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量;

線程組分配單元,用于將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

可選的,所述控制信息讀取單元,讀取的所述控制信息還包括:在zookeeper系統(tǒng)中注冊的線程組,以及待處理的任務項;

所述用于分布式系統(tǒng)的調(diào)度裝置,還包括:

任務項計算單元,用于在所述為服務器配置相應的線程組之后,按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述待處理的任務項,計算各個線程組需要分配的任務項數(shù)量;

任務項分配單元,用于將所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量作為資源提供單位,將所述需要處理的任務項作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為各個線程組配置相應的任務項,包括對已經(jīng)分配的任務項重新分配、為進程組分配新的任務項以及消除需要停止的任務項。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,還包括:

控制信息存儲單元,用于將所述zookeeper系統(tǒng)中存儲的控制信息存儲在服務器本地,并以服務器本地存儲的控制信息作為該服務器執(zhí)行分布式任務調(diào)度的依據(jù);若zookeeper系統(tǒng)出現(xiàn)異常,則直接以服務器本地存儲的控制信息執(zhí)行分布式任務調(diào)度。

此外,本申請還提供了一種電子設備,包括:

顯示器;

處理器;

存儲器,用于存儲分布式系統(tǒng)的調(diào)度程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求;按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量;將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

與現(xiàn)有技術相比,本申請具有以下優(yōu)點:

本申請?zhí)峁┑囊环N用于分布式系統(tǒng)的調(diào)度方法、裝置以及一種電子設備。通過分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。所述技術方案解決了分布式系統(tǒng)中通過分布式鎖分配任務產(chǎn)生的處理任務時效率較低、會能造成死鎖以及循環(huán)搶占導致任務分配收斂較慢分配時 間長的問題。

本申請還提供一種具體用于zookeeper系統(tǒng)環(huán)境的分布式系統(tǒng)調(diào)度方法,這種方法在zookeeper系統(tǒng)中具體實現(xiàn)了上述調(diào)度方式。

附圖說明

為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。

圖1示出了根據(jù)本申請的第一實施例提供的用于分布式任務的調(diào)度方法的流程圖;

圖2示出了根據(jù)本申請的第一實施例提供的從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位的流程圖;

圖3示出了根據(jù)本申請的第一實施例提供的另一種從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位的流程圖;

圖4示出了根據(jù)本申請的第二實施例提供的用于分布式任務的調(diào)度裝置的示意圖;

圖5示出了根據(jù)本申請的第三實施例提供的電子設備的示意圖;

圖6示出了根據(jù)本申請的第四實施例提供的用于分布式系統(tǒng)的調(diào)度方法的流程圖;

圖7示出了根據(jù)本申請的第四實施例提供的用于分布式系統(tǒng)的調(diào)度方法中為各個線程組配置相應的任務項的流程圖;

圖8示出了根據(jù)本申請的第五實施例提供的另一種用于分布式任務的調(diào)度裝置的示意圖;

圖9示出了根據(jù)本申請的第六實施例提供的電子設備的示意圖。

具體實施方式

為了能夠更清楚地理解本申請的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式對本申請進行進一步的詳細描述。需要說明的是,在不沖突的情況 下,本申請的實施例及實施例中的特征可以相互組合。

在下面的描述中闡述了很多具體細節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實施,本領域技術人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實施的限制。

在詳細描述本實施例的具體步驟之前,先對本技術方案涉及的分布式調(diào)度作簡要說明。

分布式調(diào)度是指:當需要調(diào)度的任務量非常大時,若只用一臺機器處理任務,則任務的處理速度會比較緩慢,因此往往選用分布式系統(tǒng)用多臺機器來處理任務,在處理時需要將大量的任務劃分為多個任務塊,通過協(xié)調(diào)如何更快的執(zhí)行這些任務塊,使分布式系統(tǒng)中的機器負擔的任務塊更加均衡、迅速、容災性強的調(diào)度方案,叫做分布式調(diào)度,實現(xiàn)分布式調(diào)度需要使用分布式調(diào)度組件。

在分布式系統(tǒng)中,目前常利用zookeeper對系統(tǒng)中的多臺服務器中的所有進程配置信息進行集中管理。zookeeper顧名思義動物園管理員,在計算機技術領域中zookeeper是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護、名字服務、分布式同步、組服務等?,F(xiàn)有的基于zookeeper的信息配置方案是:每個服務器中每個進程都要建立與zookeeper之間的強依賴,每個進程通過調(diào)用zookeeper的接口監(jiān)控自身進程的配置信息,當某一個進程的配置信息需要修改時,操作人員只需要修改zookeeper上相應的配置信息,一旦發(fā)現(xiàn)zookeeper配置信息發(fā)生變動,對應的服務器進程及時更新自身進程的配置信息。

本申請的第一實施例提供了一種用于分布式系統(tǒng)的調(diào)度方法。該調(diào)度方法對于分布式系統(tǒng)的資源調(diào)配具有普適性,不限于采用zookeeper系統(tǒng)的分布式系統(tǒng)。所述用于分布式系統(tǒng)的調(diào)度方法實施例如下:

請參考圖1,其示出了根據(jù)本申請的第一實施例提供的用于分布式系統(tǒng)的調(diào)度方法的流程圖。以下結(jié)合圖1對第一實施例進行詳細說明。

步驟S101,分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M。

首先需要說明,分布式系統(tǒng)中有各種類型的資源提供單位,在本實施例中, 以分布式系統(tǒng)中的機器(計算機系統(tǒng)中一般可以稱為主機或者服務器,考慮到其它分布式系統(tǒng)存在的可能性,這里使用機器一詞概括)作為所述分布式系統(tǒng)的資源提供單位的例子。

根據(jù)本步驟,在該分布式系統(tǒng)中的每個資源提供單位,即每個機器通過與分布式系統(tǒng)的管理中心進行連接后,獲取在該分布式系統(tǒng)中已注冊的機器的數(shù)量,以及該機器本身在所有機器中的順序號M。所述機器是在該分布式系統(tǒng)中運行的物理機器,所述機器的順序號是按照每個機器在該分布式系統(tǒng)中注冊時的順序為區(qū)分每個機器而產(chǎn)生的編號。

此處的物理機器,在計算機系統(tǒng)中可以表現(xiàn)為Java虛擬機(縮寫為JVM)Java虛擬機)的縮寫,JVM是一種用于計算設備的規(guī)范,使用JVM可以實現(xiàn)與平臺的無關性,一般的語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼;使用JVM后,在不同平臺上運行時不需要重新編譯,只需生成在JVM上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行。

例如:在分布式系統(tǒng)中運行的某一具體的機器通過與分布式系統(tǒng)的管理中心進行連接后,獲取到在該分布式系統(tǒng)中已注冊了10臺機器,且該機器本身在分布式系統(tǒng)中是第三個注冊的,則獲取到該機器在所有機器中的順序號為3。

步驟S103,通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號。

在本實施例中,所述資源消耗單位是在分布式系統(tǒng)中的機器內(nèi),用于處理待分配的任務項的線程組,在本步驟中,在該分布式系統(tǒng)中的每個機器通過與分布式系統(tǒng)的管理中心進行連接后,從所述管理中心中獲取在本次調(diào)度時用于處理待分配的任務項的線程組的數(shù)量,所述線程組被順序編號。

例如:在分布式系統(tǒng)中運行的某一具體的機器通過與分布式系統(tǒng)的管理中心進行連接后,該機器從所述管理中心中獲取到在本次調(diào)度時有30個用于處理待分配的任務項的線程組,所述線程組具有從1-30的編號,且每個線程組按照順序?qū)粋€具體的編號。

步驟S105,將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值。

在本實施例中,本步驟接收步驟S101和步驟S103中已獲取的該分布式系統(tǒng)中的已注冊的機器的數(shù)量和本次調(diào)度時用于處理待分配的任務項的線程組的數(shù)量,并將所述線程組的數(shù)量除以所述機器的數(shù)量,獲得每個機器中應當平均承擔的線程組的數(shù)量N,所述每個機器中應當平均承擔的線程組的數(shù)量N就是在本次調(diào)度時,在每個機器中分配的用于處理待分配的任務項的線程組的數(shù)量N,N為取整后的數(shù)值。

例如:在分布式系統(tǒng)中運行的某一具體的機器在步驟S101中獲取的該分布式系統(tǒng)中的已注冊的機器的數(shù)量為10臺,在步驟S103中獲取到在本次調(diào)度時有30個用于處理待分配的任務項的線程組,則將所述線程組的數(shù)量30除以所述機器的數(shù)量10,獲得每個機器中應當平均承擔的線程組的數(shù)量3,即:在本次調(diào)度時在該機器中分配3個線程組用于處理待分配的任務項。

需要說明的是,在將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量時,由于所述資源消耗單位數(shù)量可能無法整除所述資源提供單位數(shù)量,所以每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N是取整后的數(shù)值。在步驟S105中對每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N的取整方式包括以下兩種方式:

第一種方式是:去除所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值的小數(shù)位;

第二種方式是:所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值,若存在小數(shù)位,則取大于該獲得值的最小整數(shù)。

當然,也不排除使用四舍五入或者其他方式進行取證,不論采取何種取整方式,最終的取整效果必然與上述兩種方式中的一種相同。

例如:在第一種方式下,在分布式系統(tǒng)中運行的某一具體的機器在步驟S101中獲取的該分布式系統(tǒng)中的已注冊的機器的數(shù)量為10臺,在步驟S103中獲取到在本次調(diào)度時有33個用于處理待分配的任務項的線程組,則將所述線程組的數(shù)量33除以所述機器的數(shù)量10,獲得每個機器中應當平均承擔的線程組的數(shù)量3;在第二種方式下,在分布式系統(tǒng)中運行的某一具體的機器在步驟S101中獲取的該分布式系統(tǒng)中的已注冊的機器的數(shù)量為10臺,在步驟S103中獲取到在本次調(diào)度時有33個用于處理待分配的任務項的線程組,則將所述線程組的數(shù)量33除以所述機器的數(shù)量10,獲得每個機器中應當平均承擔的線程組的數(shù)量4。

步驟S107,所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

在本實施例中,根據(jù)已獲取的該機器本身在所有機器中的順序號M,從所述用于處理待分配的任務項的線程組中按照該線程組的編號的順序,提取出數(shù)量為N或者(N-1)或者(N+1)的線程組分配給該機器。

例如:在分布式系統(tǒng)中運行的某一具體的機器在所有機器中的順序號為3,根據(jù)平均分配原則,等待順序號為1和2的機器從用于處理待分配的任務項的線程組中提取線程組完畢后,從所述用于處理待分配的任務項的線程組中提取3個線程組,且提取的線程組的編號為7-9。

在步驟S105將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量時,由于所述資源消耗單位數(shù)量可能無法整除所述資源提供單位數(shù)量,所以每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N是取整后的數(shù)值,所以本實施例的技術方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,若所述資源消耗單位平均承擔數(shù)量N的取整方式為第一種取整方式,即去除所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值的小數(shù)位,則所述從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,是從資源消耗單位中提取數(shù)量為N或者(N+1)的資源消耗單位,具體包括步驟S107-1至S107-4,下面結(jié)合附圖2作進一步說明。

請參考圖2,其示出了根據(jù)本申請的實施例提供的從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位的流程圖。

步驟S107-1,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量。

在本實施例中,所述將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量是,將在每個機器中分配的用于處理待分配的任務項的線程組的數(shù)量N乘以在分布式系統(tǒng)中已注冊的機器的數(shù)量,獲取取整后的在機器中分配的用于處理待分配的任務項的線程組的取整線程組數(shù)量。

例如:在每個機器中應當平均承擔的線程組的數(shù)量為3,在該分布式系統(tǒng)中的已注冊的機器的數(shù)量為10臺,則將每個機器中應當平均承擔的線程組的數(shù)量3乘以在該分布式系統(tǒng)中已注冊的機器的數(shù)量10,獲取取整后的在機器中分配 的用于處理待分配的任務項的線程組的取整線程組數(shù)量30。

步驟S107-2,將資源消耗單位數(shù)量減去取整資源消耗單位數(shù)量獲取剩余資源消耗單位數(shù)量X。

在本實施例中,所述將資源消耗單位數(shù)量減去取整資源消耗單位數(shù)量獲取剩余資源消耗單位數(shù)量X是,將從所述管理中心中獲取在本次調(diào)度時用于處理待分配的任務項的線程組的數(shù)量減去所述取整線程組數(shù)量,獲取剩余線程組數(shù)量X。

例如:從所述管理中心中獲取到在本次調(diào)度時有33個用于處理待分配的任務項的線程組,將所述用于處理待分配的任務項的線程組的數(shù)量33減去取整線程組數(shù)量30,獲取剩余線程組數(shù)量3。

步驟S107-3,對于資源提供單位順序號M的數(shù)值小于等于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N+1的資源消耗單位。

在本實施例中,所述對于資源提供單位順序號M的數(shù)值小于等于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N+1的資源消耗單位是,對順序號的數(shù)值小于等于剩余線程組數(shù)量X的數(shù)值的在該分布式系統(tǒng)中已注冊的機器,按照該機器本身在所有機器中的順序號M的順序,從所述用于處理待分配的任務項的線程組中按照該線程組的編號的順序,提取出數(shù)量為(N+1)的線程組分配給該機器。

例如:已獲取剩余線程組數(shù)量為3,每個機器中應當平均承擔的線程組的數(shù)量為3,則順序號小于等于剩余線程組數(shù)量的在該分布式系統(tǒng)中已注冊的機器包括:順序號為1的機器、順序號為2的機器和順序號為3的機器,則從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為1的機器且提取的線程組的編號為1-4;從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為2的機器且提取的線程組的編號為5-8;從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為3的機器且提取的線程組的編號為9-12。

步驟S107-4,為資源提供單位順序號M的數(shù)值大于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位 中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

在本實施例中,所述為資源提供單位順序號M的數(shù)值大于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位是,對順序號的數(shù)值大于剩余線程組數(shù)量X的數(shù)值的在該分布式系統(tǒng)中已注冊的機器,按照該機器本身在所有機器中的順序號M的順序,從所述用于處理待分配的任務項的線程組中按照該線程組的編號的順序,提取出數(shù)量為N的線程組分配給該機器。

例如:已獲取剩余線程組數(shù)量為3,每個機器中應當平均承擔的線程組的數(shù)量為3,則順序號大于剩余線程組數(shù)量的在該分布式系統(tǒng)中已注冊的機器包括:順序號為4-10的機器,若在分布式系統(tǒng)中運行的某一具體的機器的順序號為4,則從所述用于處理待分配的任務項的線程組中提取3個線程組且提取的線程組的編號為13-15,順序號為5-10的機器則按照順序號從線程組的編號為16的線程組開始按照線程組的編號的順序依次提取出3個線程組分配給機器,直至將線程組分配完畢。

以上對本實施例中提供的一種取整方式進行了說明,在本技術方案中還提供了另一種取整方式的優(yōu)選實施方式,在優(yōu)選方式下,若所述資源消耗單位承擔數(shù)量N的取整方式為第二種方式,即所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值,若存在小數(shù)位,則取大于該獲得值的最小整數(shù),則所述從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,是從資源消耗單位中提取數(shù)量為N或者(N-1)的資源消耗單位,具體包括步驟S107-5至S107-8,下面結(jié)合附圖3作進一步說明。

請參考圖3,其示出了根據(jù)本申請的實施例提供的另一種從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位的流程圖。

步驟S107-5,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量。

在本實施例中,所述將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量是,將在每個機器中分配的用于處理待分配的任務項的線程組的數(shù)量N乘以在分布式系統(tǒng)中已注冊的機器的數(shù)量,獲取取整后的在機器中分配的用于處理待分配的任務項的線程組的取整線程組數(shù)量。

例如:在每個機器中應當平均承擔的線程組的數(shù)量為4,在該分布式系統(tǒng)中的已注冊的機器的數(shù)量為10臺,則將每個機器中應當平均承擔的線程組的數(shù)量4乘以在該分布式系統(tǒng)中已注冊的機器的數(shù)量10,獲取取整后的在機器中分配的用于處理待分配的任務項的線程組的取整線程組數(shù)量40。

步驟S107-6,將取整資源消耗單位數(shù)量減去資源消耗單位數(shù)量獲取多余資源消耗單位數(shù)量Y。

在本實施例中,所述將取整資源消耗單位數(shù)量減去資源消耗單位數(shù)量獲取多余資源消耗單位數(shù)量Y是,將所述取整線程組數(shù)量減去從所述管理中心中獲取在本次調(diào)度時用于處理待分配的任務項的線程組的數(shù)量,獲取多余線程組數(shù)量Y。

例如:從所述管理中心中獲取到在本次調(diào)度時有33個用于處理待分配的任務項的線程組,將所述取整線程組數(shù)量40減去所述用于處理待分配的任務項的線程組的數(shù)量33,獲取多余線程組數(shù)量7。

步驟S107-7,對于資源提供單位順序號M的數(shù)值小于等于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為(N-1)的資源消耗單位。

在本實施例中,所述對于資源提供單位順序號M的數(shù)值小于等于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為(N-1)的資源消耗單位是,對順序號的數(shù)值小于多余線程組數(shù)量Y的數(shù)值的在該分布式系統(tǒng)中已注冊的機器,按照該機器本身在所有機器中的順序號M的順序,從所述用于處理待分配的任務項的線程組中按照該線程組的編號的順序,提取出數(shù)量為(N-1)的線程組分配給該機器。

例如:已獲取多余線程組數(shù)量為7,每個機器中應當平均承擔的線程組的數(shù)量為4,則順序號小于等于多余線程組數(shù)量的在該分布式系統(tǒng)中已注冊的機器包括:順序號為1-7的機器,則從線程組的編號為1的線程組開始按照線程組的編號的順序依次提取出3個線程組分配給機器,直至在順序號為7的機器中按照線程組的編號的順序分配完3個線程組。

步驟S107-8,為資源提供單位順序號M的數(shù)值大于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位 中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

在本實施例中,所述為資源提供單位順序號M的數(shù)值大于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位是,對順序號的數(shù)值大于多余線程組數(shù)量Y的數(shù)值的在該分布式系統(tǒng)中已注冊的機器,按照該機器本身在所有機器中的順序號M的順序,從所述用于處理待分配的任務項的線程組中按照該線程組的編號的順序,提取出數(shù)量為N的線程組分配給該機器。

例如:已獲取多余線程組數(shù)量為7,每個機器中應當平均承擔的線程組的數(shù)量為4,則順序號大于多余線程組數(shù)量的在該分布式系統(tǒng)中已注冊的機器包括:順序號為8的機器、順序號為9的機器和順序號為10的機器,則從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為8的機器且提取的線程組的編號為22-25;從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為9的機器且提取的線程組的編號為26-29;從所述用于處理待分配的任務項的線程組中提取4個線程組分配給順序號為10的機器且提取的線程組的編號為30-33。

以上對所述資源提供單位為在分布式系統(tǒng)中的機器,所述資源消耗單位為處理待分配的任務項的線程組時,所述用于分布式系統(tǒng)的調(diào)度方法進行了詳細說明,需要說明的是,本技術方案中所述資源提供單位還可以為處理待分配的任務項的線程組,所述資源消耗單位還可以為待分配的任務項。

具體說,在所述資源提供單位為處理待分配的任務項的線程組,所述資源消耗單位為待分配的任務項時,所述用于分布式系統(tǒng)的調(diào)度方法,包括:

通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的用于處理待分配的任務項的線程組的數(shù)量,以及該線程組本身在所有線程組中的順序號M;

通過分布式系統(tǒng)的管理中心獲取待分配的任務項的數(shù)量,所述待分配的任務項被順序編號;

將所述待分配的任務項的數(shù)量除以所述分布式系統(tǒng)中的用于處理待分配的任務項的線程組的數(shù)量,獲得每個線程組應當承擔的待分配的任務項平均承擔數(shù)量N,N為取整后的數(shù)值;

所述用于處理待分配的任務項的線程組根據(jù)自己在所有線程組中的順序號 M以及平均分配的原則,按照待分配的任務項編號的順序,從待分配的任務項中提取數(shù)量為N或者(N-1)或者(N+1)的待分配的任務項,作為分配給自己的任務項。

由于主要區(qū)別只是在于所述資源提供單位和所述資源消耗單位的具體內(nèi)容不同,而后續(xù)的計算和分配等處理過程是基本相同的,由于在前面實施例中已經(jīng)對此進行了比較詳細的描述,此處不再贅述。

在上述的實施例中,提供了一種用于分布式系統(tǒng)的調(diào)度方法,與上述用于分布式系統(tǒng)的調(diào)度方法相對應的,本申請第二實施例提供了一種用于分布式系統(tǒng)的調(diào)度裝置。由于裝置的實施例基本相似于方法的實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。所述用于分布式系統(tǒng)的調(diào)度裝置實施例如下:

請參考圖4,其示出了本申請第二實施例提供的用于分布式系統(tǒng)的調(diào)度裝置的示意圖。

所述用于分布式系統(tǒng)的調(diào)度裝置,包括:資源提供單位獲取單元401、編號單元403、承擔數(shù)量計算單元405以及資源消耗單位分配單元407;

所述資源提供單位獲取單元401,用于分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;

所述編號單元403,用于通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;

所述承擔數(shù)量計算單元405,用于將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;

所述資源消耗單位分配單元407,用于所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

可選的,若所述承擔數(shù)量計算單元405,具體用于去除所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量所獲得值的小數(shù)位,則所述資源消耗單位分配單元407,包括:取整計算子單元、剩余數(shù)計算子單元、第一資源 消耗單位分配子單元以及第二資源消耗單位分配子單元;

所述取整計算子單元,用于從資源消耗單位中提取數(shù)量為N或者(N+1)的資源消耗單位,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

所述剩余數(shù)計算子單元,用于將資源消耗單位數(shù)量減去取整資源消耗單位數(shù)量獲取剩余資源消耗單位數(shù)量X;

所述第一資源消耗單位分配子單元,用于對于資源提供單位順序號M的數(shù)值小于等于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N+1的資源消耗單位;

所述第二資源消耗單位分配子單元,用于為資源提供單位順序號M的數(shù)值大于剩余資源消耗單位數(shù)量X的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源消耗單位。

可選的,若所述承擔數(shù)量計算單元405,具體用于若存在小數(shù)位,則取大于該獲得值的最小整數(shù),則所述資源消耗單位分配單元407,包括:取整計算子單元、多余數(shù)計算子單元、第一資源消耗單位分配子單元以及第二資源消耗單位分配子單元;

所述取整計算子單元,用于從資源消耗單位中提取數(shù)量為N或者(N-1)的資源消耗單位,將資源消耗單位承擔數(shù)量N乘以資源提供單位數(shù)量獲取取整資源消耗單位數(shù)量;

所述多余數(shù)計算子單元,用于將取整資源消耗單位數(shù)量減去資源消耗單位數(shù)量獲取多余資源消耗單位數(shù)量Y;

所述第一資源消耗單位分配子單元,用于對于資源提供單位順序號M的數(shù)值小于等于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為(N-1)的資源消耗單位;

所述第二資源消耗單位分配子單元,用于為資源提供單位順序號M的數(shù)值大于多余資源消耗單位數(shù)量Y的數(shù)值的資源提供單位,按照資源提供單位順序號M的順序,從資源消耗單位中按照資源消耗單位編號的順序提取數(shù)量為N的資源 消耗單位。

在上述的實施例中,提供了一種用于分布式系統(tǒng)的調(diào)度方法以及一種用于分布式系統(tǒng)的調(diào)度裝置,以下本申請第三實施例提供了一種電子設備;所述電子設備實施例如下:

請參考圖5,其示出了根據(jù)本申請的實施例提供的電子設備的示意圖。

所述電子設備,包括:顯示器501;處理器503;存儲器505;

所述存儲器505,用于存儲分布式系統(tǒng)的調(diào)度程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:分布式系統(tǒng)的資源提供單位通過分布式系統(tǒng)的管理中心獲取該分布式系統(tǒng)中的資源提供單位數(shù)量,以及該資源提供單位本身在所有資源提供單位中的資源提供單位順序號M;通過分布式系統(tǒng)的管理中心獲取資源消耗單位數(shù)量,所述資源消耗單位被順序編號;將所述資源消耗單位數(shù)量除以所述分布式系統(tǒng)中的資源提供單位數(shù)量,獲得每個資源提供單位應當承擔的資源消耗單位平均承擔數(shù)量N,N為取整后的數(shù)值;所述資源提供單位根據(jù)自己在所有資源提供單位中的順序號M以及平均分配的原則,按照資源消耗單位編號的順序,從資源消耗單位中提取數(shù)量為N或者(N-1)或者(N+1)的資源消耗單位,作為分配給自己的資源消耗單位。

在上述的第一到第三實施例中,提供了一種用于分布式系統(tǒng)的調(diào)度方法、一種用于分布式系統(tǒng)的調(diào)度裝置以及一種電子設備,此外,本申請還提供了另一種具體用于采用zookeeper的分布式系統(tǒng)的調(diào)度方法。該用于分布式系統(tǒng)的調(diào)度方法由調(diào)度組件完成,調(diào)度組件根據(jù)在zookeeper系統(tǒng)中存儲的控制信息計算各個服務器需要分配的線程組數(shù)量和計算各個線程組需要分配的任務項數(shù)量,并為各個服務器分配線程組,為各個線程組分配任務項。

需要說明的是,在本實施例中,調(diào)度組件采用開源的分布式并發(fā)異步調(diào)度組件TBSchedule 4,TBSchedule 4能夠使批量任務或者不斷產(chǎn)生和變化的任務,被動態(tài)的分配到多個機器的不同的線程組中并行執(zhí)行,所有的任務能夠被不重復,不遺漏的快速處理。所述調(diào)度組件的運行層次,分為如下的3層:由多個物理服務器(JVM)組成的factory層,在該層中每個運行的服務器被稱為factory;在每個服務器中運行的線程組組成的server層,在該層中每個運行的線程組被稱為server,線程組在factory上的分配策略,被稱為strategy,strategy可以被動態(tài)的增加或停止,在本實施例中稱所述strategy為具體策略; 以及在每個線程組中處理的任務項組成的taskI tem層,在該層中每個任務項被稱為taskItem。上述用于采用zookeeper的分布式系統(tǒng)的調(diào)度方法在以下第四實施例中予以說明。

請參考圖6,其示出了根據(jù)本申請的第四實施例提供的用于分布式系統(tǒng)的調(diào)度方法的流程圖。

所述用于分布式系統(tǒng)的調(diào)度方法,包括:

步驟S601,讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求。

在本實施例中,所述讀取zookeeper系統(tǒng)中存儲的控制信息,可以采用如下方式實現(xiàn):調(diào)度組件與zookeeper建立連接后,調(diào)度組件讀取zookeeper系統(tǒng)中存儲在目錄節(jié)點下的控制信息。所述控制信息包括:在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略包含的內(nèi)容包括該具體策略所表達的具體執(zhí)行方式,例如重復執(zhí)行、間隔一段時間執(zhí)行、按照優(yōu)先級執(zhí)行等不同的具體執(zhí)行方式,以及各個具體執(zhí)行方式對線程組數(shù)量的要求。

需要說明的是,在zookeeper系統(tǒng)中是以目錄節(jié)點的形式存儲信息,相同類型的信息存儲在同一目錄節(jié)點下??梢岳斫獾模鲈趜ookeeper系統(tǒng)中注冊的服務器的信息,是存儲在zookeeper中的/factory目錄節(jié)點下的機器列表factorylist中,在讀取zookeeper系統(tǒng)中注冊的服務器的信息時,調(diào)度組件訪問存儲在zookeeper中的/factory目錄節(jié)點下的機器列表factorylist獲取已注冊的服務器;所述分布式系統(tǒng)中需要執(zhí)行的具體策略,存儲在zookeeper中的/strategy目錄節(jié)點中,在讀取分布式系統(tǒng)中需要執(zhí)行的具體策略時,調(diào)度組件訪問存儲在zookeeper中的/strategy目錄節(jié)點獲取分布式系統(tǒng)中需要執(zhí)行的具體策略。

例如:在zookeeper中的/factory目錄節(jié)點下的機器列表factorylist中有服務器A、服務器B和服務器C,在factorylist中服務器按照各個服務器在該分布式系統(tǒng)中注冊時的順序為各個服務器生成表征注冊順序的順序號;在zookeeper中的/strategy目錄節(jié)點中的分布式系統(tǒng)中需要執(zhí)行的具體策略有4 條,每條具體策略對線程組數(shù)量各有要求。

在本實施例中,在步驟S601讀取zookeeper系統(tǒng)中存儲的控制信息中,所述調(diào)度組件讀取到的控制信息還包括:在zookeeper系統(tǒng)中注冊的線程組,以及待處理的任務項??梢岳斫獾?,所述在zookeeper系統(tǒng)中注冊的線程組,是存儲在zookeeper中的/server目錄節(jié)點中,在讀取zookeeper系統(tǒng)中注冊的線程組時,調(diào)度組件訪問存儲在zookeeper中的/server目錄節(jié)點下的線程組列表獲取在zookeeper系統(tǒng)中注冊的線程組;所述待處理的任務項,是存儲在zookeeper中的/taskItem目錄節(jié)點中,在讀取所述待處理的任務項時,調(diào)度組件訪問存儲在zookeeper中的/taskItem目錄節(jié)點下的待處理的任務項,獲取所述待處理的任務項的數(shù)量和編號。

由于在每次執(zhí)行分布式調(diào)度時,在分布式系統(tǒng)中執(zhí)行處理任務的服務器的數(shù)量不固定或者每次調(diào)度時任務項的數(shù)量不固定,在每次執(zhí)行分布式調(diào)度時,需要執(zhí)行的具體策略的數(shù)量會發(fā)生變化,所以本實施例的技術方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,在zookeeper中的/strategy目錄節(jié)點中存儲的各個具體策略包括:策略狀態(tài)。所述策略狀態(tài)包括開啟狀態(tài)以及關閉狀態(tài)。所述開啟狀態(tài)是指:在本次調(diào)度中會執(zhí)行該策略;與之相對的,所述關閉狀態(tài)是指:剔除該策略,在本次調(diào)度中不執(zhí)行該策略。

需要說明的是,策略的狀態(tài)可以通過外部控制臺進行修改或者在重新計算服務器需要分配的線程組為服務器配置相應的線程組時,修改對應該服務器的具體策略的狀態(tài)。若策略的狀態(tài)為關閉狀態(tài)時,剔除該策略是指:在本次調(diào)度時不執(zhí)行該策略,不基于該策略為服務器分配線程組,而不是從zookeeper上刪除該策略,也就是說狀態(tài)為關閉狀態(tài)的策略,可以通過重新計算服務器需要分配的線程組為服務器配置相應的線程組或者外部控制臺修改策略的狀態(tài)。

為了使新的服務器在該分布式系統(tǒng)中注冊后,能在該分布式系統(tǒng)中處理任務或者調(diào)度組件與zookeeper的連接關系發(fā)生變化時,調(diào)度組件能夠根據(jù)變化對各個服務器中的線程組進行重新分配并加載線程組,本實施例的技術方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,在zookeeper系統(tǒng)中注冊的各個服務器具有重新加載字段Reload,且各個服務器具有間隔固定時間就讀取所述重新加載字段Reload的值的守護線程。

在本實施例中,所述守護線程每5秒進行一次掃描,讀取該服務器中布爾類 型的Reload字段的取值,若掃描到的Reload字段的取值為true,就觸發(fā)重新加載線程組,進入所述讀取zookeeper系統(tǒng)中存儲的控制信息的步驟,并將所述重新加載字段Reload的值設置為false;若掃描到的Reload字段的取值為false,則不進行任何操作,待5秒之后進行下一次掃描。

在本實施例中,在執(zhí)行步驟S601讀取zookeeper系統(tǒng)中存儲的控制信息的步驟之前,調(diào)度組件還需與zookeeper之間建立連接,所述調(diào)度組件與zookeeper之間建立連接,可以采用如下方式實現(xiàn):啟動初始化線程組,與zookeeper之間建立連接,當zookeeper連接上時,進入所述讀取zookeeper系統(tǒng)中存儲的控制信息的步驟并觸發(fā)調(diào)度組件的初始化。

在本實施例中,在所述啟動初始化線程組,與zookeeper之間建立連接的步驟之后,在所述調(diào)度組件中啟動對zookeeper系統(tǒng)的持續(xù)監(jiān)聽;實現(xiàn)持續(xù)監(jiān)聽的方式,例如可以是根據(jù)需要監(jiān)聽的事項建立相應的監(jiān)聽器,例如:連接狀態(tài)監(jiān)聽器、子節(jié)點變化監(jiān)聽器以及配置變化監(jiān)聽器。以下說明采用這種方式如何實現(xiàn)持續(xù)監(jiān)聽。

所述連接狀態(tài)監(jiān)聽器用于監(jiān)聽調(diào)度組件與zookeeper之間的連接狀態(tài),當調(diào)度組件與zookeeper之間的連接狀態(tài)發(fā)生變化時,例如:斷開或者重新連接時,將在各個服務器中的所述重新加載字段Reload的值設置為true;所述子節(jié)點變化監(jiān)聽器用于監(jiān)聽zookeeper中的/factory目錄節(jié)點下的機器列表factorylist,服務器在分布式系統(tǒng)中注冊時會在/factory目錄節(jié)點下的機器列表factorylist中創(chuàng)建該服務器的目錄節(jié)點,同樣的道理,服務器與zookeeper之間斷開連接時會刪除在/factory目錄節(jié)點下的機器列表factorylist中創(chuàng)建的該服務器的目錄節(jié)點,所述子節(jié)點變化監(jiān)聽器在監(jiān)聽到目錄節(jié)點發(fā)生變化時,將在各個服務器中的所述重新加載字段Reload的值設置為true;所述配置變化監(jiān)聽器用于監(jiān)聽zookeeper中的/strategy目錄節(jié)點中分布式系統(tǒng)中需要執(zhí)行的具體策略,所述配置變化監(jiān)聽器在監(jiān)聽到具體策略或者具體策略所需要的線程發(fā)生變化時,將在各個服務器中的所述重新加載字段Reload的值設置為true。

所述監(jiān)聽器是指一種事件監(jiān)視程序,當一個事件產(chǎn)生的時候,事件源將發(fā)出通知消息并提供一個事件對象作為參數(shù),該消息被事件監(jiān)視程序接收,并進行相關處理,事件源是基于curator和zookeeper的watcher機制實現(xiàn)的。

在具體實施時,當監(jiān)聽到zookeeper系統(tǒng)(事件源)上發(fā)生變化時,會發(fā)出 一個事件(event),這個事件會被上述連接狀態(tài)監(jiān)聽器、子節(jié)點變化監(jiān)聽器或配置變化監(jiān)聽器中的一種監(jiān)聽器程序收到,并且進行相應處理。這個監(jiān)聽器程序時刻不停的運行,一旦zookeeper系統(tǒng)發(fā)出事件,就會及時接收到,以保證服務器邏輯與zookeeper系統(tǒng)一致。

步驟S603,按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量。

在本實施例中,所述按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量,可以采用如下方式實現(xiàn):根據(jù)所述具體策略所表達的具體執(zhí)行方式,以及各個具體執(zhí)行方式對線程組數(shù)量的要求,計算在各個服務器中需要分配的線程組數(shù)量。

例如:一條描述服務器A的具體策略中對該服務器A中要求的線程組數(shù)量為3。

需要說明的是,按照第一實施例提供的方法進行配置也可以視為一種策略,稱為基礎策略。

步驟S605,將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

具體的,在使用第一實施例所述的用于分布式系統(tǒng)的調(diào)度方法時,所述按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量,包括:

調(diào)度組件獲取在zookeeper系統(tǒng)中注冊的服務器數(shù)量以及在zookeeper系統(tǒng)中注冊的服務器的順序號;

通過所述需要執(zhí)行的具體策略獲取在本次調(diào)度時需要分配的線程組數(shù)目;所述線程組被順序編號;

將所述需要分配的線程組數(shù)目除以所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,獲得各個服務器應當被分配的線程組數(shù)目N,N為取整后的數(shù)值;

所述在zookeeper系統(tǒng)中注冊的服務器根據(jù)在zookeeper系統(tǒng)中注冊的服務器的順序號M以及平均分配的原則,按照所述線程組被編號的順序,從所述線程組中提取數(shù)量為N或者(N-1)或者(N+1)的所述線程組,作為分配給在zookeeper 系統(tǒng)中注冊的各個服務器的線程組。

為了使在該分布式系統(tǒng)中任務項或線程組發(fā)生變化時,調(diào)度組件能夠根據(jù)變化對各個任務項進行重新分配并重新加載任務項,本實施例的技術方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,所述分布式系統(tǒng)的各個線程組分別設置有對應該線程組的加載判斷字段Needload,且所述各個線程組分別具有間隔固定時間就讀取所述加載判斷字段Needload的值的線程組守護進程。

在本實施例中,所述守護進程每5秒進行一次掃描,讀取該服務器中布爾類型的Needload字段的取值,若掃描到的Needload字段的取值為true,則進入所述按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述需要處理的任務項,計算各個線程組需要分配的任務項數(shù)量的步驟;并將所述加載判斷字段Needload的值設置為false;若掃描到的Needload字段的取值為false,則不進行任何操作,待5秒之后進行下一次掃描。

需要說明的是,在線程組之間分配任務項時,與線程組在服務器上進行分配的策略類似,區(qū)別在于,這里的守護進程是針對每個線程組中的Needload進行掃描的,在此不作贅述。

在本實施例中,在所述為服務器配置相應的線程組的步驟之后,具體包括步驟S606至S607,下面結(jié)合附圖7作進一步說明。

請參考圖7,其示出了根據(jù)本申請的實施例提供的為各個線程組配置相應的任務項的流程圖。

步驟S606,按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述待處理的任務項,計算各個線程組需要分配的任務項數(shù)量;

步驟S607,將所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量作為資源提供單位,將所述需要處理的任務項作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為各個線程組配置相應的任務項,包括對已經(jīng)分配的任務項重新分配、為進程組分配新的任務項以及消除需要停止的任務項。

具體的,在使用第一實施例所述的用于分布式系統(tǒng)的調(diào)度方法時,所述按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述待處理的任務項,計算各個線程組需要分配的任務項數(shù)量,包括:

調(diào)度組件獲取在zookeeper系統(tǒng)中注冊的線程組數(shù)量以及在zookeeper系統(tǒng) 中注冊的線程組的順序號;

所述待處理的任務項的數(shù)目;所述待處理的任務項被順序編號;

將所述待處理的任務項的數(shù)目除以所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,獲得各個線程組應當被分配的任務項數(shù)目N,N為取整后的數(shù)值;

所述在zookeeper系統(tǒng)中注冊的線程組根據(jù)在zookeeper系統(tǒng)中注冊的線程組的順序號M以及平均分配的原則,按照所述待處理的任務項被編號的順序,從所述待處理的任務項中提取數(shù)量為N或者(N-1)或者(N+1)的所述任務項,作為分配給在zookeeper系統(tǒng)中注冊的各個線程組的任務項。

為了保證在zookeeper系統(tǒng)中注冊的各個服務器與zookeeper之間斷開連接后能夠正常的繼續(xù)執(zhí)行調(diào)度任務,在本技術方案中提供了一種優(yōu)選實施方式,在優(yōu)選方式下,所述zookeeper系統(tǒng)中存儲的控制信息被存儲在服務器本地,并以服務器本地存儲的控制信息作為該服務器執(zhí)行分布式任務調(diào)度的依據(jù);若zookeeper系統(tǒng)出現(xiàn)異常,則直接以服務器本地存儲的控制信息執(zhí)行分布式任務調(diào)度。

可以理解的,如果遇到與zookeeper斷連,或者zookeeper宕機等異常情況,通過緩存在服務器本地的控制信息繼續(xù)執(zhí)行當前的調(diào)度任務,可以不停止調(diào)度組件從而繼續(xù)執(zhí)行,直到與zookeeper進行連接之后,再重新執(zhí)行步驟S601讀取zookeeper系統(tǒng)中存儲的控制信息的步驟。

在本實施例中,由于在分布式系統(tǒng)中某一已注冊的服務器與zookeeper斷開連接時,有可能有新的服務器注冊到該分布式系統(tǒng)中,所以在本技術方案中提供了一種優(yōu)選實施方式,在優(yōu)選方式下,在所述為各個線程組配置相應的任務項的步驟之后,具體包括:

讀取zookeeper的控制信息版本號;

獲取服務器的控制信息版本號;

判斷服務器的版本號是否與zookeeper的版本號相同;

若否,則讀取存儲在服務器本地的重新加載字段Reload,并將所述重新加載字段的取值修改為true。

在本實施例中,當服務器向分布式系統(tǒng)中進行注冊時會在zookeeper的/factory目錄節(jié)點下的機器列表factorylist中創(chuàng)建該服務器的目錄節(jié)點,同樣的道理,服務器與zookeeper之間斷開連接時會刪除在/factory目錄節(jié)點下 的機器列表factorylist中創(chuàng)建的該服務器的目錄節(jié)點,在每次/factory目錄節(jié)點發(fā)生變化時會更新zookeeper的控制信息的版本號,zookeeper更新控制信息版本號的版本號之后會向與zookeeper保持連接的服務器發(fā)送更新后的控制信息版本號,使與zookeeper保持連接的各個服務器同步該控制信息的版本號,使zookeeper與各個服務器的版本保持一致。例如:使zookeeper的控制信息的版本號的數(shù)值+1。

為了使各個服務器能夠在調(diào)度完成之后退出該分布式系統(tǒng),在本技術方案中提供了一種優(yōu)選實施方式,在優(yōu)選方式下,各個服務器設置有服務器運行標志字段isRunning;該服務器運行標志字段在服務器正常運行的情況下為true;當所述服務器需要退出系統(tǒng)時,則設置服務器運行標志字段isRunning設置為false,并停止服務器初始化線程、停止系統(tǒng)守護線程、停止服務器的所有線程組、注銷服務器與zookeeper的連接。

在上述的實施例中,提供了另一種用于分布式系統(tǒng)的調(diào)度方法,與上述用于分布式系統(tǒng)的調(diào)度方法相對應的,本申請第五實施提供了一種用于分布式系統(tǒng)的調(diào)度裝置。由于裝置的實施例基本相似于方法的實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。所述用于分布式系統(tǒng)的調(diào)度裝置實施例如下:

請參考圖8,其示出了根據(jù)本申請第五實施例提供的用于分布式系統(tǒng)的調(diào)度裝置的示意圖。

所述用于分布式系統(tǒng)的調(diào)度裝置,包括:控制信息讀取單元801、重新計算單元803以及線程組分配單元805;

所述控制信息讀取單元801,用于讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求;

所述重新計算單元803,用于按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量;

所述線程組分配單元805,用于將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要 求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

可選的,所述控制信息讀取單元801,讀取的所述控制信息還包括:在zookeeper系統(tǒng)中注冊的線程組,以及待處理的任務項;

所述用于分布式系統(tǒng)的調(diào)度裝置,還包括:

任務項計算單元,用于在所述為服務器配置相應的線程組之后,按照所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量,以及所述待處理的任務項,計算各個線程組需要分配的任務項數(shù)量;

任務項分配單元,用于將所述在zookeeper系統(tǒng)中注冊的線程組數(shù)量作為資源提供單位,將所述需要處理的任務項作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào)度方法,為各個線程組配置相應的任務項,包括對已經(jīng)分配的任務項重新分配、為進程組分配新的任務項以及消除需要停止的任務項。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:控制信息存儲單元;

所述控制信息存儲單元,用于將所述zookeeper系統(tǒng)中存儲的控制信息存儲在服務器本地,并以服務器本地存儲的控制信息作為該服務器執(zhí)行分布式任務調(diào)度的依據(jù);若zookeeper系統(tǒng)出現(xiàn)異常,則直接以服務器本地存儲的控制信息執(zhí)行分布式任務調(diào)度。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:控制信息讀取觸發(fā)單元;

所述控制信息讀取觸發(fā)單元,用于在所述讀取zookeeper系統(tǒng)中存儲的控制信息之前,若具有間隔固定時間就讀取所述重新加載字段Reload的值的守護線程讀取到的所述重新加載字段Reload的值為true,則觸發(fā)所述控制信息讀取單元;并將所述重新加載字段Reload的值設置為false。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:監(jiān)聽單元;

所述監(jiān)聽單元,用于對所述zookeeper系統(tǒng)持續(xù)監(jiān)聽;若出現(xiàn)以下任意事項則設置所述重新加載字段Reload為true:zookeeper系統(tǒng)重啟、zookeeper系統(tǒng)配置變化、zookeeper系統(tǒng)存儲的控制信息變化、服務器初始化。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:任務項計算觸發(fā)單元;

所述任務項計算觸發(fā)單元,用于若所述線程組守護進程讀取到的所述重新加載字段Needload的值為true,則進入觸發(fā)所述任務項計算單元;并將所述加載 判斷字段Needload的值設置為false。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:版本號讀取單元、版本號獲取單元、版本號判斷單元以及重新加載字段修改單元;

所述版本號讀取單元,用于在所述為各個線程組配置相應的任務項之后,讀取zookeeper的控制信息版本號;

所述版本號獲取單元,用于獲取服務器的控制信息版本號;

所述版本號判斷單元,用于判斷服務器的版本號是否與zookeeper的版本號相同;

所述重新加載字段修改單元,用于接收所述版本號判斷單元的判斷結(jié)果,若否,則讀取存儲在服務器本地的重新加載字段Reload,并將所述重新加載字段的取值修改為true。

可選的,所述用于分布式系統(tǒng)的調(diào)度裝置,包括:服務器停止單元;

所述服務器停止單元,用于當服務器需要退出系統(tǒng)時,則設置服務器運行標志字段isRunning設置為false,并停止服務器初始化線程、停止系統(tǒng)守護線程、停止服務器的所有線程組、注銷服務器與zookeeper的連接。

在上述的實施例中,提供了一種用于分布式系統(tǒng)的調(diào)度方法、一種用于分布式系統(tǒng)的調(diào)度裝置、一種電子設備、另一種用于分布式系統(tǒng)的調(diào)度方法以及另一種用于分布式系統(tǒng)的調(diào)度裝置,此外,本申請還提供了另一種電子設備;所述電子設備實施例如下:

請參考圖9,其示出了根據(jù)本申請第六實施例提供的另一種電子設備的流程圖。

所述電子設備,包括:顯示器901;處理器903;存儲器905;

所述存儲器905,用于存儲分布式系統(tǒng)的調(diào)度程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:讀取zookeeper系統(tǒng)中存儲的控制信息;所述控制信息包括在zookeeper系統(tǒng)中注冊的服務器,以及分布式系統(tǒng)中需要執(zhí)行的具體策略,所述具體策略描述不同的具體執(zhí)行方式以及各個具體執(zhí)行方式對線程組數(shù)量的要求;按照所述在zookeeper系統(tǒng)中注冊的服務器數(shù)量,以及所述需要執(zhí)行的具體策略,重新計算各個服務器需要分配的線程組數(shù)量;將所述在zookeeper系統(tǒng)中注冊的服務器作為資源提供單位,將所述需要分配的線程組作為資源消耗單位,并使用權利要求1-5任意一項所述的用于分布式系統(tǒng)的調(diào) 度方法,為服務器配置相應的線程組,包括分配新的線程組,以及停止已經(jīng)啟動的線程組。

在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。

內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。

1、計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。

2、本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領域技術人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護范圍應當以本申請權利要求所界定的范圍為準。

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