一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法
【專利摘要】本發(fā)明公開了一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,包括以下步驟,1)分布式任務(wù)管理系統(tǒng)節(jié)點(diǎn)狀態(tài)的維護(hù);2)分布式任務(wù)管理系統(tǒng)的任務(wù)初始化;3)分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變;4)節(jié)點(diǎn)故障和恢復(fù)的處理。本發(fā)明的適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,自動化程度高、可靠性高、魯棒性高、通信效率高、占用帶寬小、可移植性好,任務(wù)部署簡單,具有良好的應(yīng)用前景。
【專利說明】一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,屬于分布式處理【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]在分布式處理系統(tǒng)中,每個節(jié)點(diǎn)處理全局任務(wù)的子集,但一般需要協(xié)同工作和進(jìn)行狀態(tài)同步,在所有節(jié)點(diǎn)處理完成后匯總結(jié)果,再進(jìn)行下一輪處理,系統(tǒng)運(yùn)行過程中隨時可能改變?nèi)蝿?wù)的運(yùn)行狀態(tài),如需要在某幾個節(jié)點(diǎn)增加一些任務(wù)、需要進(jìn)行任務(wù)負(fù)載均衡的調(diào)整或者某個節(jié)點(diǎn)的任務(wù)發(fā)生故障等,系統(tǒng)中每個節(jié)點(diǎn)都必須準(zhǔn)確及時的知道其他節(jié)點(diǎn)的存在和運(yùn)行了哪些子任務(wù),否則可能會出現(xiàn)任務(wù)遺漏、任務(wù)重復(fù)、任務(wù)遲延等情況,從而如何保證分布式任務(wù)系統(tǒng)在全局范圍內(nèi)的運(yùn)行狀態(tài)一致性是保證分布式任務(wù)系統(tǒng)正常運(yùn)行的關(guān)鍵點(diǎn)。
[0003]現(xiàn)有的分布式管理系統(tǒng)解決上述問題一般有如下三種方法,但分別存在不同的缺點(diǎn),具體如下,
(I)人工配置和干預(yù)法,分布式管理系統(tǒng)初始是由人工配置好節(jié)點(diǎn)上運(yùn)行的任務(wù),當(dāng)節(jié)點(diǎn)故障或恢復(fù)時再人工調(diào)整任務(wù)部署的情況,或者是正常運(yùn)行時人工的調(diào)整任務(wù)部署,其的缺陷是不夠靈活,系統(tǒng)的維護(hù)成本高。
[0004](2)全局協(xié)調(diào)器法,分布式管理系統(tǒng)中有一個全局管理節(jié)點(diǎn),其上運(yùn)行管理程序?qū)ο到y(tǒng)的運(yùn)行狀態(tài)進(jìn)行監(jiān)視,系統(tǒng)的狀態(tài)變換都有此節(jié)點(diǎn)發(fā)出指令,這種方法可以保證系統(tǒng)在同一時刻只執(zhí)行一條指令,其的缺陷是全局協(xié)調(diào)器成為系統(tǒng)的單點(diǎn)故障瓶頸。
[0005](3)定期同步法,分布式管理系統(tǒng)的每個節(jié)點(diǎn)定期向系統(tǒng)中廣播自己的狀態(tài),此方法缺陷是通信量大,且各個節(jié)點(diǎn)只能知曉其他節(jié)點(diǎn)的運(yùn)行狀態(tài),但是對故障的處理還是各自執(zhí)行,很容易在廣播報文丟失或延遲的情況下產(chǎn)生不一致性。
[0006]總之,上述的狀態(tài)一致性管理方法在有可能出現(xiàn)的節(jié)點(diǎn)故障和網(wǎng)絡(luò)通信故障條件下都有不完善的地方。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是克服現(xiàn)有的分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,不夠靈活、維護(hù)成本高、同一時刻只執(zhí)行一條指令、通信量大時廣播報文容易丟失或延遲的問題。本發(fā)明的適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,自動化程度高、可靠性高、通信效率高、占用帶寬小、可移植性好,具有良好的應(yīng)用前景。
[0008]為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:
一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:包括以下步驟,步驟(I ),分布式任務(wù)管理系統(tǒng)統(tǒng)節(jié)點(diǎn)狀態(tài)的維護(hù),分布式任務(wù)管理系統(tǒng)的所有節(jié)點(diǎn)定期廣播發(fā)送心跳報文,通知其他節(jié)點(diǎn)本機(jī)的生存狀態(tài);
步驟(2),分布式任務(wù)管理系統(tǒng)的任務(wù)初始化,在分布式任務(wù)管理系統(tǒng)的每個節(jié)點(diǎn)上運(yùn)行任務(wù)管理程序,在任意一個節(jié)點(diǎn)上輸入所有的待部署任務(wù),任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況,并與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,分布式任務(wù)管理系統(tǒng)到達(dá)一致的初始化狀態(tài);
步驟(3),分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變,當(dāng)分布式任務(wù)管理系統(tǒng)的任意一個節(jié)點(diǎn)上的任務(wù)運(yùn)行狀態(tài)發(fā)生改變時,任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài);
步驟(4),節(jié)點(diǎn)故障和恢復(fù)的處理,當(dāng)分布式任務(wù)管理系統(tǒng)中的一個節(jié)點(diǎn)故障退出或者恢復(fù)加入后,分布式任務(wù)管理系統(tǒng)的節(jié)點(diǎn)集合發(fā)生改變,分布式任務(wù)管理系統(tǒng)保持維持一致的狀態(tài)。
[0009]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(I)所述分布式任務(wù)管理系統(tǒng)的所有節(jié)點(diǎn)定期廣播發(fā)送的心跳報文包括節(jié)點(diǎn)名、節(jié)點(diǎn)編號、本機(jī)狀態(tài)編號,當(dāng)3秒的時間間隔后,分布式任務(wù)管理系統(tǒng)接收不到某個節(jié)點(diǎn)的心跳,判斷該節(jié)點(diǎn)為故障,能正常收到心跳的節(jié)點(diǎn)判斷為活躍節(jié)點(diǎn),節(jié)點(diǎn)編號為節(jié)點(diǎn)的優(yōu)先級,編號越小的優(yōu)先級越大。
[0010]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(2)所述任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況的過程為,
(1)任務(wù)管理程序查看所有活躍的節(jié)點(diǎn);
(2)將任務(wù)負(fù)載均衡的部署到每個活躍的節(jié)點(diǎn)上,并將部署計劃通知到每個活躍節(jié)點(diǎn)。
[0011]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)所述任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,將需要進(jìn)行的改變發(fā)出給所有節(jié)點(diǎn),得到半數(shù)以上節(jié)點(diǎn)確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài)。
[0012]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)分布式任務(wù)管理系統(tǒng)的每一次狀態(tài)改變,都會在各節(jié)點(diǎn)心跳報文的本機(jī)狀態(tài)編號的當(dāng)前狀態(tài)編號加1,各節(jié)點(diǎn)的初始化的本機(jī)狀態(tài)編號為O。
[0013]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)需要狀態(tài)改變的節(jié)點(diǎn)將狀態(tài)改變作為提案請求發(fā)出,并進(jìn)行提案接收,發(fā)出提案請求時,當(dāng)前狀態(tài)編號加I,若接收的提案的狀態(tài)編號大于本機(jī)的狀態(tài)編號,則給出確認(rèn)回復(fù),否貝U,給出否定回復(fù)反對接收到的提案,需要狀態(tài)改變的節(jié)點(diǎn)接收到半數(shù)以上的活躍節(jié)點(diǎn)確認(rèn)回復(fù)后,表示此提案請求被批準(zhǔn),則該節(jié)點(diǎn)發(fā)送提交報文讓分布式任務(wù)管理系統(tǒng)所有活躍節(jié)點(diǎn)改變?nèi)蝿?wù)狀態(tài),所有活躍節(jié)點(diǎn)更新本機(jī)狀態(tài)編號,并且回復(fù)完成給發(fā)送提交報文的節(jié)點(diǎn)。
[0014]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:若接收到多個節(jié)點(diǎn)的提案請求,且每個提案請求的本機(jī)狀態(tài)編號一致,則只確認(rèn)回復(fù)節(jié)點(diǎn)編號最小的提案請求。
[0015]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(4)分布式任務(wù)管理系統(tǒng)出現(xiàn)一個故障節(jié)點(diǎn),則總節(jié)點(diǎn)數(shù)減一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)降低;故障恢復(fù)的節(jié)點(diǎn)首先向分布式任務(wù)管理系統(tǒng)中發(fā)出設(shè)置本機(jī)當(dāng)前任務(wù)狀態(tài)的提案請求,本機(jī)的任務(wù)由斷網(wǎng)改變?yōu)樵诰€的狀態(tài)改變提案,其他節(jié)點(diǎn)收到后發(fā)現(xiàn)編號過舊,則會發(fā)出否定回復(fù),并附加本機(jī)的任務(wù)狀態(tài)信息,故障恢復(fù)的節(jié)點(diǎn)接收到否定回復(fù),并選擇最大編號的節(jié)點(diǎn)進(jìn)行學(xué)習(xí),更新本地任務(wù)狀態(tài)后重新加入分布式任務(wù)管理系統(tǒng)運(yùn)行,總的節(jié)點(diǎn)數(shù)加一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)增加。
[0016]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:所述接收者若接收的提案的狀態(tài)編號比本地狀態(tài)編號小或者等于本地編號,則說明提案發(fā)送者的狀態(tài)比系統(tǒng)中全局的狀態(tài)要舊,存在狀態(tài)變化的提交報文丟失過,此時狀態(tài)舊的節(jié)點(diǎn)需要從狀態(tài)新的節(jié)點(diǎn)學(xué)習(xí)狀態(tài)信息,提案接收者在給出否定回復(fù)時,順帶捎上本節(jié)點(diǎn)最新的任務(wù)狀態(tài)信息。
[0017]前述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:所述接收者若在接收到比本機(jī)狀態(tài)編號大提案的狀態(tài)編號后,又接收到一個編號更大的提案的狀態(tài)編號,接收者給此更大編號的提案者發(fā)送確認(rèn)回復(fù)時要捎帶本節(jié)點(diǎn)需要先學(xué)習(xí)到最新狀態(tài)的請求,發(fā)送者在給此接收者發(fā)出提交報文時捎帶上一輪的狀態(tài),接收者學(xué)習(xí)完上一輪狀態(tài)后,在本地提交狀態(tài)改變。
[0018]本發(fā)明的有益效果是:本發(fā)明是適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,具有以下優(yōu)點(diǎn),1、不受單節(jié)點(diǎn)故障的影響,完全分布式運(yùn)行;2、自動化程度高,除部署任務(wù)外整個系統(tǒng)運(yùn)行過程不需要人工干預(yù);3、可靠性高,在各種運(yùn)行條件下均能在有限步驟后收斂,使分布式任務(wù)管理系統(tǒng)達(dá)到一致狀態(tài);4、占用帶寬小,采用發(fā)出改變信息,避免了同步時傳送所有狀態(tài)數(shù)據(jù);5、魯棒性高,在各種故障條件下,分布式任務(wù)管理系統(tǒng)均能通過一致性算法恢復(fù)正常運(yùn)行;6、可移植性好,所有功能完全是有計算機(jī)程序?qū)崿F(xiàn),可運(yùn)行在各種UNIX和LinuX、Wind0WS操作系統(tǒng)上,不需要借助任何操作系統(tǒng)自帶的軟件;7、部署簡單,只需部署一個服務(wù)程序、一個動態(tài)庫、一個配置文件即可運(yùn)行,綜上所述,自動化程度高、可靠性高、通信效率高、占用帶寬小、可移植性好,具有良好的應(yīng)用前景。
【專利附圖】
【附圖說明】
[0019]圖1是本發(fā)明的適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法的流程圖。
[0020]圖2是發(fā)明的分布式任務(wù)管理系統(tǒng)的任務(wù)初始化的流程圖。
[0021]圖3是本發(fā)明的分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變的第一示意圖。
[0022]圖4是本發(fā)明的分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變的第二示意圖。
[0023]圖5是本發(fā)明的分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變的第三示意圖。
[0024]圖6是本發(fā)明的分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變的第四示意圖。
[0025]圖7是本發(fā)明的接收節(jié)點(diǎn)一致性處理的流程圖。
[0026]圖8是本發(fā)明的發(fā)送節(jié)點(diǎn)一致性處理的流程圖。
【具體實(shí)施方式】
[0027]下面將結(jié)合說明書附圖,對本發(fā)明作進(jìn)一步說明。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護(hù)范圍。
[0028]本發(fā)明的適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,不受單節(jié)點(diǎn)故障的影響,自動化程度高、可靠性高、占用帶寬小、魯棒性高,可移植性好,所有功能完全是由計算機(jī)程序?qū)崿F(xiàn),可運(yùn)行在各種UNIX和Linux、Windows操作系統(tǒng)上,不需要借助任何操作系統(tǒng)自帶的軟件,部署簡單,只需部署一個服務(wù)程序、一個動態(tài)庫、一個配置文件即可運(yùn)行,如圖1所示,具體包括以下步驟,
步驟(I ),分布式任務(wù)管理系統(tǒng)節(jié)點(diǎn)狀態(tài)的維護(hù),分布式任務(wù)管理系統(tǒng)的所有節(jié)點(diǎn)定期廣播發(fā)送心跳報文,通知其他節(jié)點(diǎn)本機(jī)的生存狀態(tài),心跳報文包括節(jié)點(diǎn)名、節(jié)點(diǎn)編號、本機(jī)狀態(tài)編號,當(dāng)3秒的時間間隔后,分布式任務(wù)管理系統(tǒng)接收不到某個節(jié)點(diǎn)的心跳,判斷該節(jié)點(diǎn)為故障,能正常收到心跳的節(jié)點(diǎn)判斷為活躍節(jié)點(diǎn),節(jié)點(diǎn)編號為節(jié)點(diǎn)的優(yōu)先級,編號越小的優(yōu)先級越大。
[0029]步驟(2),分布式任務(wù)管理系統(tǒng)的任務(wù)初始化,如圖2所示,在分布式任務(wù)管理系統(tǒng)的每個節(jié)點(diǎn)上運(yùn)行任務(wù)管理程序,在任意一個節(jié)點(diǎn)上輸入所有的待部署任務(wù),任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況,并與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,分布式任務(wù)管理系統(tǒng)到達(dá)一致的初始化狀態(tài),任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況的過程為:
(1)任務(wù)管理程序查看所有活躍的節(jié)點(diǎn);
(2)將任務(wù)負(fù)載均衡的部署到每個活躍的節(jié)點(diǎn)上,并將部署計劃通知到每個活躍節(jié)占.步驟(3),分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變,當(dāng)分布式任務(wù)管理系統(tǒng)的任意一個節(jié)點(diǎn)上的任務(wù)運(yùn)行狀態(tài)發(fā)生改變時,任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài);
所述任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,將需要進(jìn)行的改變發(fā)出給所有節(jié)點(diǎn),得到半數(shù)以上節(jié)點(diǎn)確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài),分布式任務(wù)管理系統(tǒng)的每一次狀態(tài)改變,都會在各節(jié)點(diǎn)心跳報文的本機(jī)狀態(tài)編號的當(dāng)前狀態(tài)編號加1,各節(jié)點(diǎn)的初始化的本機(jī)狀態(tài)編號為0,需要狀態(tài)改變的節(jié)點(diǎn)將狀態(tài)改變作為提案請求發(fā)出,并進(jìn)行提案接收,發(fā)出提案請求時,當(dāng)前狀態(tài)編號加1,若接收的提案的狀態(tài)編號大于本機(jī)的狀態(tài)編號,則給出確認(rèn)回復(fù),否則,給出否定回復(fù)反對接收到的提案,需要狀態(tài)改變的節(jié)點(diǎn)接收到半數(shù)以上的活躍節(jié)點(diǎn)確認(rèn)回復(fù)后,表示此提案請求被批準(zhǔn),則該節(jié)點(diǎn)發(fā)送提交報文讓分布式任務(wù)管理系統(tǒng)所有活躍節(jié)點(diǎn)改變?nèi)蝿?wù)狀態(tài),所有活躍節(jié)點(diǎn)更新本機(jī)狀態(tài)編號,并且回復(fù)完成給發(fā)送提交報文的節(jié)點(diǎn);
步驟(4),節(jié)點(diǎn)故障和恢復(fù)的處理,當(dāng)分布式任務(wù)管理系統(tǒng)中的一個節(jié)點(diǎn)故障退出或者恢復(fù)加入后,分布式任務(wù)管理系統(tǒng)的節(jié)點(diǎn)集合發(fā)生改變,分布式任務(wù)管理系統(tǒng)保持維持一致的狀態(tài),分布式任務(wù)管理系統(tǒng)出現(xiàn)一個故障節(jié)點(diǎn),則總節(jié)點(diǎn)數(shù)減一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)降低;故障恢復(fù)的節(jié)點(diǎn)首先向分布式任務(wù)管理系統(tǒng)中發(fā)出設(shè)置本機(jī)當(dāng)前任務(wù)狀態(tài)的提案請求,本機(jī)的任務(wù)由斷網(wǎng)改變?yōu)樵诰€的狀態(tài)改變提案,其他節(jié)點(diǎn)收到后發(fā)現(xiàn)編號過舊,則會發(fā)出否定回復(fù),并附加本機(jī)的任務(wù)狀態(tài)信息,故障恢復(fù)的節(jié)點(diǎn)接收到否定回復(fù),并選擇最大編號的節(jié)點(diǎn)進(jìn)行學(xué)習(xí),更新本地任務(wù)狀態(tài)后重新加入分布式任務(wù)管理系統(tǒng)運(yùn)行,總的節(jié)點(diǎn)數(shù)加一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)增加。
[0030]分布式任務(wù)管理系統(tǒng)中每個節(jié)點(diǎn)都賦予一個唯一的節(jié)點(diǎn)編號,提案請求、提案報文中包含節(jié)點(diǎn)編號,可有效解決每一輪選舉中可能產(chǎn)生的死鎖問題,如果接收到多個節(jié)點(diǎn)編號的提案請求,且每個提案請求的本機(jī)狀態(tài)編號一致,則只回復(fù)節(jié)點(diǎn)編號最小的提案,表示支持,不會發(fā)生每個提案各自獲得一部分節(jié)點(diǎn)的支持而產(chǎn)生死鎖。對其后到達(dá)的節(jié)點(diǎn)編號較大的提案給出否定回復(fù),但是不捎帶本地狀態(tài)信息,發(fā)送者不需要學(xué)習(xí),此時發(fā)送節(jié)點(diǎn)可以等當(dāng)前提案形成決議后再用新編號加I提出新的提案請求。
[0031]接收者若接收的提案的狀態(tài)編號比本地狀態(tài)編號小或者等于本地編號,則說明提案發(fā)送者的狀態(tài)比系統(tǒng)中全局的狀態(tài)要舊,存在狀態(tài)變化的提交報文丟失過,此時狀態(tài)舊的節(jié)點(diǎn)需要從狀態(tài)新的節(jié)點(diǎn)學(xué)習(xí)狀態(tài)信息,提案接收者在給出否定回復(fù)時,順帶捎上本節(jié)點(diǎn)最新的任務(wù)狀態(tài)息。
[0032]接收者若在接收到比本機(jī)狀態(tài)編號大提案的狀態(tài)編號后,又接收到一個編號更大的提案的狀態(tài)編號,接收者給此更大編號的提案者發(fā)送確認(rèn)回復(fù)時要捎帶本節(jié)點(diǎn)需要先學(xué)習(xí)到最新狀態(tài)的請求,發(fā)送者在給此接收者發(fā)出提交報文時捎帶上一輪的狀態(tài),接收者學(xué)習(xí)完上一輪狀態(tài)后,在本地提交狀態(tài)改變。
[0033]根據(jù)圖3-6,介紹本發(fā)明的步驟(3)分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變的具體流程,
圖3中所示的4個分布式任務(wù)管理系統(tǒng)的節(jié)點(diǎn)上,各自運(yùn)行了一些任務(wù),它們的本機(jī)狀態(tài)編號都為N,在某一時刻I號節(jié)點(diǎn)和4號節(jié)點(diǎn)都判斷出自身的負(fù)載比較輕,同時都想增加一個任務(wù),為了避免增加的是同一個任務(wù),假設(shè)I號節(jié)點(diǎn)和4號節(jié)點(diǎn)同時提出提案請求,由于發(fā)出提案的時間和消息傳遞速度的不確定性,這個過程中還存在以下情況,
(1)1號節(jié)點(diǎn)提案請求先于4號節(jié)點(diǎn)的到達(dá)2、3號節(jié)點(diǎn),則這個提案請求被2號節(jié)點(diǎn)和3號節(jié)點(diǎn)接收并給出確認(rèn)回復(fù),這樣I號節(jié)點(diǎn)的提案肯定獲得半數(shù)以上確認(rèn),本機(jī)必然同意I號節(jié)點(diǎn)的提案請求,而且I號節(jié)點(diǎn)的節(jié)點(diǎn)編號是最小的,當(dāng)I號節(jié)點(diǎn)的提案到達(dá)4號節(jié)點(diǎn)后也會讓4號節(jié)點(diǎn)放棄本機(jī)的提案請求并確認(rèn)回復(fù)I號節(jié)點(diǎn)的提案請求,隨后I號節(jié)點(diǎn)發(fā)出提交報文,2、3、4號節(jié)點(diǎn)最后會回復(fù)完成,這樣1-4號節(jié)點(diǎn)的本機(jī)狀態(tài)編號都為N+1,但是,4號節(jié)點(diǎn)發(fā)出的提案請求到達(dá)2、3號節(jié)點(diǎn)時,提案請求的本機(jī)狀態(tài)編號還為N,且4號節(jié)點(diǎn)的節(jié)點(diǎn)編號大,所以該提案請求會被否決。
[0034](2)4號節(jié)點(diǎn)的提案請求先于I號節(jié)點(diǎn)的到達(dá)2、3號節(jié)點(diǎn),則2、3號節(jié)點(diǎn)對4號節(jié)點(diǎn)給出確認(rèn)回復(fù),但是4號節(jié)點(diǎn)的提案請求晚于I號節(jié)點(diǎn)產(chǎn)生提案請求的時刻到達(dá)I號節(jié)點(diǎn),則I號節(jié)點(diǎn)的提案請求還是會發(fā)出并到達(dá)2、3號節(jié)點(diǎn),因?yàn)楣?jié)點(diǎn)編號小也會收到2號和3號節(jié)點(diǎn)的確認(rèn)回復(fù),這樣I號節(jié)點(diǎn)的提案就得到了多數(shù)票,最終會得以形成決議,但是4號節(jié)點(diǎn)的報文到達(dá)I號節(jié)點(diǎn)的時刻因?yàn)镮號節(jié)點(diǎn)已經(jīng)有自身的提案,所以不會確認(rèn)回復(fù)4號節(jié)點(diǎn)的,在4號機(jī)的角度觀察,它會先收到2、3號機(jī)的確認(rèn)報文形成多數(shù)票,但是緊接著會收到I號機(jī)的提案,由于節(jié)點(diǎn)編號的優(yōu)先級4號節(jié)點(diǎn)低,隨即放棄自己的提案請求;
(3)與(I)的前期步驟一樣,但是最終I號節(jié)點(diǎn)發(fā)往4號節(jié)點(diǎn)的提案請求報文丟了或者延遲到很晚到達(dá),這種情況在廣域網(wǎng)中有可能發(fā)生,這樣4號及節(jié)點(diǎn)不會放棄自己的提案請求,則發(fā)出提交報文,但是此提交報文會被1、2、3號機(jī)拒絕,因?yàn)樗鼈兌际盏搅艘粋€優(yōu)先級更高的I號節(jié)點(diǎn)的提案報文;
(4)4號節(jié)點(diǎn)的提案請求先于I號節(jié)點(diǎn)的到達(dá)2、3號節(jié)點(diǎn),并且也先于I號節(jié)點(diǎn)產(chǎn)自己生提案請求的時刻到達(dá)I號節(jié)點(diǎn),這樣1、2、3號節(jié)點(diǎn)都會給出確認(rèn)回復(fù),最終會形成決議,I號節(jié)點(diǎn)就暫時不再產(chǎn)生自己的提案請求,一直等到4號節(jié)點(diǎn)的提案實(shí)施完成后,用新的提案編號再次發(fā)出自己的提案請求。
[0035]圖4所示,4號節(jié)點(diǎn)是一個斷網(wǎng)恢復(fù)的節(jié)點(diǎn),它的任務(wù)狀態(tài)比較舊,假設(shè)本機(jī)狀態(tài)編號為N-1,其他正常節(jié)點(diǎn)的設(shè)本機(jī)狀態(tài)編號為N,當(dāng)4號節(jié)點(diǎn)以N編號發(fā)出一個提案請求時,其他節(jié)點(diǎn)會發(fā)現(xiàn)這個提案編號(發(fā)送節(jié)點(diǎn)的本機(jī)狀態(tài)編號)等于本機(jī)狀態(tài)編號(其他節(jié)點(diǎn)的),然后發(fā)出否定回復(fù)給4號節(jié)點(diǎn)并捎帶了編號為N的狀態(tài)信息,4號節(jié)點(diǎn)這個提案就被否決了,同時開始學(xué)習(xí)最新的狀態(tài)。
[0036]圖5所示,4、5、6號節(jié)點(diǎn)均是斷網(wǎng)恢復(fù)的節(jié)點(diǎn),6號節(jié)點(diǎn)的狀態(tài)最舊,此時若4號節(jié)點(diǎn)以編號N發(fā)出一個提案,則會被6號節(jié)點(diǎn)確認(rèn),隨后3號節(jié)點(diǎn)的提案N+1也會被6號節(jié)點(diǎn)確認(rèn),至此6號節(jié)點(diǎn)會停止接受所有編號小于N+1的提案,所以5號節(jié)點(diǎn)的最后的提案N會被給予否定回復(fù)。
[0037]圖6所示,四個節(jié)點(diǎn)的狀態(tài)的編號均是N,在同一時刻1、2、3號節(jié)點(diǎn)均提出一個提案請求,因?yàn)楣?jié)點(diǎn)I的節(jié)點(diǎn)編號最小,則如果4號節(jié)點(diǎn)先收到I號節(jié)點(diǎn)的提案請求則會否定2號和3號節(jié)點(diǎn)的提案請求,如果先收到2號節(jié)點(diǎn)的提案請求,則會確認(rèn)2號節(jié)點(diǎn)和I號節(jié)點(diǎn)的提案請求,否定3號節(jié)點(diǎn)的提案請求,這時即使2號節(jié)點(diǎn)能發(fā)出提交報文(如I號節(jié)點(diǎn)的提案請求未能到達(dá)2號節(jié)點(diǎn)),也會被4號節(jié)點(diǎn)拒絕,2號節(jié)點(diǎn)只能夠在I號節(jié)點(diǎn)的提案N+1形成決議實(shí)施完成后,使用本機(jī)狀態(tài)編號N+2再次發(fā)出提案請求。
[0038]如圖7所示,本發(fā)明的接收節(jié)點(diǎn)一致性處理流程圖,首先接收者處于準(zhǔn)備狀態(tài),此時如果收到一個本機(jī)狀態(tài)編號(提案編號)為N大于本機(jī)狀態(tài)編號的提案請求,則發(fā)出確認(rèn)回復(fù),并進(jìn)入等待狀態(tài),如果收到的提案編號小于或者等于本地狀態(tài)編號,則發(fā)出否定回復(fù)并捎帶本地狀態(tài)提供給對方學(xué)習(xí),然后重新進(jìn)入準(zhǔn)備狀態(tài);
處于等待狀態(tài)時如果超時未收到剛剛回應(yīng)的提案N的提交報文,此時則需要與其他接收者聯(lián)系,如果發(fā)現(xiàn)另一個接收者是提交狀態(tài),則本節(jié)點(diǎn)也提交。如果沒有一個其他接收者是提交狀態(tài),說明發(fā)送者在發(fā)出提交之前就崩潰了,則發(fā)出“拒絕”報文,返回初始的準(zhǔn)備狀態(tài)。如果收到另一個編號更大的提案請求N’,則發(fā)出確認(rèn)回復(fù)并要求學(xué)習(xí)到這個新提案發(fā)送者的當(dāng)前狀態(tài),然后再次回到等待狀態(tài),此時如果收到編號小于剛剛回應(yīng)的提案請求,將發(fā)出否定回復(fù),如果收到的不是剛剛回應(yīng)的提案的提交報文,則都發(fā)出拒絕回,即此時僅能接受編號更大的請求報文和編號等于剛剛回應(yīng)的提案的提交報文,此時提案N’發(fā)送者在發(fā)出提交報文時捎帶本地最新的狀態(tài),接收者收到報文后先學(xué)習(xí)后提交修改,進(jìn)入提交狀態(tài),如果中途不存在N’的插入,則提案N的發(fā)送者僅發(fā)出提交報文即可,接收者最后發(fā)出完成報文,一個提案的實(shí)施過程完畢。
[0039]如圖8所示,本發(fā)明的發(fā)送節(jié)點(diǎn)一致性處理流程圖,首先提案發(fā)送節(jié)點(diǎn)發(fā)出本地狀態(tài)編號N加I的提案請求,如果收到否定回復(fù)則說明本地狀態(tài)較舊,進(jìn)行學(xué)習(xí)后調(diào)整本機(jī)狀態(tài)編號,然后重新進(jìn)入準(zhǔn)備狀態(tài),如果超時未收到半數(shù)以上節(jié)點(diǎn)的回復(fù)也重新進(jìn)入準(zhǔn)備狀態(tài),如果收到半數(shù)以上節(jié)點(diǎn)對提案N+1的確認(rèn)回復(fù),則發(fā)出提交報文(如果有節(jié)點(diǎn)需要學(xué)習(xí)則捎帶本地信息),進(jìn)入提交狀態(tài),如果此時收到一個提案N+1的拒絕提交報文,則發(fā)送回滾報文到所有節(jié)點(diǎn),然后重新進(jìn)入準(zhǔn)備狀態(tài),否則如果收到一個完成報文則提交完成能進(jìn)入實(shí)施完成狀態(tài)。
[0040]以上顯示和描述了本發(fā)明的基本原理、主要特征及優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。
【權(quán)利要求】
1.一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:包括以下步驟, 步驟(I ),分布式任務(wù)管理系統(tǒng)節(jié)點(diǎn)狀態(tài)的維護(hù),分布式任務(wù)管理系統(tǒng)的所有節(jié)點(diǎn)定期廣播發(fā)送心跳報文,通知其他節(jié)點(diǎn)本機(jī)的生存狀態(tài); 步驟(2),分布式任務(wù)管理系統(tǒng)的任務(wù)初始化,在分布式任務(wù)管理系統(tǒng)的每個節(jié)點(diǎn)上運(yùn)行任務(wù)管理程序,在任意一個節(jié)點(diǎn)上輸入所有的待部署任務(wù),任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況,并與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,分布式任務(wù)管理系統(tǒng)到達(dá)一致的初始化狀態(tài); 步驟(3),分布式任務(wù)管理系統(tǒng)的任務(wù)狀態(tài)改變,當(dāng)分布式任務(wù)管理系統(tǒng)的任意一個節(jié)點(diǎn)上的任務(wù)運(yùn)行狀態(tài)發(fā)生改變時,任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,得到確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài); 步驟(4),節(jié)點(diǎn)故障和恢復(fù)的處理,當(dāng)分布式任務(wù)管理系統(tǒng)中的一個節(jié)點(diǎn)故障退出或者恢復(fù)加入后,分布式任務(wù)管理系統(tǒng)的節(jié)點(diǎn)集合發(fā)生改變,分布式任務(wù)管理系統(tǒng)保持維持一致的狀態(tài)。
2.根據(jù)權(quán)利要求1所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(1)所述分布式任務(wù)管理系統(tǒng)的所有節(jié)點(diǎn)定期廣播發(fā)送的心跳報文包括節(jié)點(diǎn)名、節(jié)點(diǎn)編號、本機(jī)狀態(tài)編號,當(dāng)3秒的時間間隔后,分布式任務(wù)管理系統(tǒng)接收不到某個節(jié)點(diǎn)的心跳,判斷該 節(jié)點(diǎn)為故障,能正常收到心跳的節(jié)點(diǎn)判斷為活躍節(jié)點(diǎn),節(jié)點(diǎn)編號為節(jié)點(diǎn)的優(yōu)先級,編號越小的優(yōu)先級越大。
3.根據(jù)權(quán)利要求1所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(2)所述任務(wù)管理程序根據(jù)活躍節(jié)點(diǎn)數(shù)量決定部署情況的過程為, (1)任務(wù)管理程序查看所有活躍的節(jié)點(diǎn); (2)將任務(wù)負(fù)載均衡的部署到每個活躍的節(jié)點(diǎn)上,并將部署計劃通知到每個活躍節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)所述任務(wù)管理程序都會與分布式任務(wù)管理系統(tǒng)中所有節(jié)點(diǎn)進(jìn)行通信,將需要進(jìn)行的改變發(fā)出給所有節(jié)點(diǎn),得到半數(shù)以上節(jié)點(diǎn)確認(rèn)回復(fù)后,每個節(jié)點(diǎn)同時實(shí)施改動,分布式任務(wù)管理系統(tǒng)進(jìn)入另一個一致的狀態(tài)。
5.根據(jù)權(quán)利要求1或2所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)分布式任務(wù)管理系統(tǒng)的每一次狀態(tài)改變,都會在各節(jié)點(diǎn)心跳報文的本機(jī)狀態(tài)編號的當(dāng)前狀態(tài)編號加1,各節(jié)點(diǎn)的初始化的本機(jī)狀態(tài)編號為O。
6.根據(jù)權(quán)利要求1所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(3)需要狀態(tài)改變的節(jié)點(diǎn)將狀態(tài)改變作為提案請求發(fā)出,并進(jìn)行提案接收,發(fā)出提案請求時,當(dāng)前狀態(tài)編號加1,若接收的提案的狀態(tài)編號大于本機(jī)的狀態(tài)編號,則給出確認(rèn)回復(fù),否則,給出否定回復(fù)反對接收到的提案,需要狀態(tài)改變的節(jié)點(diǎn)接收到半數(shù)以上的活躍節(jié)點(diǎn)確認(rèn)回復(fù)后,表示此提案請求被批準(zhǔn),則該節(jié)點(diǎn)發(fā)送提交報文,讓分布式任務(wù)管理系統(tǒng)所有活躍節(jié)點(diǎn)改變?nèi)蝿?wù)狀態(tài),所有活躍節(jié)點(diǎn)更新本機(jī)狀態(tài)編號,并且回復(fù)完成給發(fā)送提交報文的節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求1或6所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:若接收到多個節(jié)點(diǎn)的提案請求,且每個提案請求的本機(jī)狀態(tài)編號一致,則只確認(rèn)回復(fù)節(jié)點(diǎn)編號最小的提案請求。
8.根據(jù)權(quán)利要求1所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:步驟(4)分布式任務(wù)管理系統(tǒng)出現(xiàn)一個故障節(jié)點(diǎn),則總節(jié)點(diǎn)數(shù)減一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)降低;故障恢復(fù)的節(jié)點(diǎn)首先向分布式任務(wù)管理系統(tǒng)中發(fā)出設(shè)置本機(jī)當(dāng)前任務(wù)狀態(tài)的 提案請求,本機(jī)的任務(wù)由斷網(wǎng)改變?yōu)樵诰€的狀態(tài)改變提案,其他節(jié)點(diǎn)收到后發(fā)現(xiàn)編號過舊,則會發(fā)出否定回復(fù),并附加本機(jī)的任務(wù)狀態(tài)信息,故障恢復(fù)的節(jié)點(diǎn)接收到否定回復(fù),并選擇最大編號的節(jié)點(diǎn)進(jìn)行學(xué)習(xí),更新本地任務(wù)狀態(tài)后重新加入分布式任務(wù)管理系統(tǒng)運(yùn)行,總的節(jié)點(diǎn)數(shù)加一,提案獲得半數(shù)以上通過的數(shù)量閾值相應(yīng)增加。
9.根據(jù)權(quán)利要求6所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:所述接收者若接收的提案的狀態(tài)編號比本地狀態(tài)編號小或者等于本地編號,則說明提案發(fā)送者的狀態(tài)比系統(tǒng)中全局的狀態(tài)要舊,存在狀態(tài)變化的提交報文丟失過,此時狀態(tài)舊的節(jié)點(diǎn)需要從狀態(tài)新的節(jié)點(diǎn)學(xué)習(xí)狀態(tài)信息,提案接收者在給出否定回復(fù)時,順帶捎上本節(jié)點(diǎn)最新的任務(wù)狀態(tài)信息。
10.根據(jù)權(quán)利要求6所述的一種適用于分布式任務(wù)管理系統(tǒng)的狀態(tài)一致性維護(hù)方法,其特征在于:所述接收者若在接收到比本機(jī)狀態(tài)編號大提案的狀態(tài)編號后,又接收到一個編號更大的提案的狀態(tài)編號,接收者給此更大編號的提案者發(fā)送確認(rèn)回復(fù)時要捎帶本節(jié)點(diǎn)需要先學(xué)習(xí)到最新狀態(tài)的請求,發(fā)送者在給此接收者發(fā)出提交報文時捎帶上一輪的狀態(tài),接收者學(xué)習(xí)完上一輪狀態(tài)后,在本地提交狀態(tài)改變。
【文檔編號】G06F9/46GK104077181SQ201410292893
【公開日】2014年10月1日 申請日期:2014年6月26日 優(yōu)先權(quán)日:2014年6月26日
【發(fā)明者】高原, 顧文杰, 任升, 盧建剛, 沙一川, 方華建 申請人:國電南瑞科技股份有限公司