本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及任務(wù)調(diào)度實(shí)例的主從切換方法和裝置。
背景技術(shù):
在需要分布式處理基于時(shí)間序列的高并發(fā)任務(wù)的系統(tǒng)中,如果執(zhí)行任務(wù)調(diào)度工作的程序?qū)嵗霈F(xiàn)故障,可能會(huì)導(dǎo)致任務(wù)遺漏,甚至整個(gè)系統(tǒng)的不可用。因此,為了確保每個(gè)任務(wù)都不遺漏的按時(shí)執(zhí)行,需要考慮使用至少兩個(gè)負(fù)責(zé)任務(wù)調(diào)度的程序?qū)嵗.?dāng)處于工作狀態(tài)的程序?qū)嵗l(fā)生故障時(shí),其他程序?qū)嵗械囊粋€(gè)能夠自動(dòng)接替它的工作,使系統(tǒng)正常運(yùn)行。同時(shí),為了保證同一時(shí)間周期的任務(wù)不重復(fù)執(zhí)行,則需要滿足同一時(shí)間點(diǎn)僅有上述至少兩個(gè)負(fù)責(zé)任務(wù)調(diào)度的程序?qū)嵗械囊粋€(gè)處于工作狀態(tài)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的在于提出一種改進(jìn)的任務(wù)調(diào)度實(shí)例的主從切換方法和裝置,來(lái)解決以上背景技術(shù)部分提到的技術(shù)問(wèn)題。
第一方面,本申請(qǐng)?zhí)峁┝艘环N任務(wù)調(diào)度實(shí)例的主從切換方法,所述方法包括:預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間,其中,各個(gè)實(shí)例的屬性信息包括實(shí)例標(biāo)識(shí)、選舉周期、是否參加主實(shí)例選舉和主從狀態(tài);如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息;如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài);主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
在一些實(shí)施例中,實(shí)例的屬性信息還包括用于標(biāo)識(shí)實(shí)例所執(zhí)行工 作的類別的類別名;以及所述如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息,包括:如果到達(dá)選舉時(shí)間,則參加主實(shí)例選舉的實(shí)例判斷所述主實(shí)例信息表中是否包含與該實(shí)例屬性信息中類別名相同的記錄;如果所述主實(shí)例信息表中不包含與該實(shí)例屬性信息中類別名相同的記錄,則該實(shí)例在所述主實(shí)例信息表中插入一條包括類別名、實(shí)例標(biāo)識(shí)和鎖定時(shí)間的任務(wù)記錄,并鎖定所述任務(wù)記錄,其中,所述任務(wù)記錄的類別名和實(shí)例標(biāo)識(shí)與插入所述任務(wù)記錄的實(shí)例的類別名和實(shí)例標(biāo)識(shí)相同,鎖定時(shí)間為所述任務(wù)記錄的插入時(shí)間。
在一些實(shí)施例中,所述如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息,還包括:如果所述主實(shí)例信息表中包含與參加主實(shí)例選舉的實(shí)例的屬性信息中類別名相同的記錄,則參加主實(shí)例選舉的實(shí)例判斷是否滿足預(yù)先設(shè)定的更新條件;如果滿足更新條件則更新所述主實(shí)例信息表中記錄的信息。
在一些實(shí)施例中,實(shí)例的屬性信息還包括主實(shí)例心跳超時(shí)時(shí)間,其中,主實(shí)例心跳超時(shí)時(shí)間為主從狀態(tài)為主狀態(tài)的實(shí)例工作異常的判斷條件;以及所述更新條件為以下任意一種:所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空;所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同;所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間。
在一些實(shí)施例中,所述如果滿足更新條件則更新所述主實(shí)例信息表中記錄的信息,包括:如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為所述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間;如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的 實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同,則更新當(dāng)前時(shí)間為鎖定時(shí)間;如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為所述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間。
在一些實(shí)施例中,所述方法還包括:實(shí)例的屬性信息中的是否參加主實(shí)例選舉默認(rèn)為參加主實(shí)例選舉,當(dāng)主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作的過(guò)程中出現(xiàn)異常時(shí),將該實(shí)例的屬性信息更改為不參加主實(shí)例選舉,當(dāng)該實(shí)例的異常排除后,更改為參加主實(shí)例選舉。
第二方面,本申請(qǐng)?zhí)峁┝艘环N任務(wù)調(diào)度實(shí)例的主從切換裝置,所述裝置包括:判斷單元,用于預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間,其中,各個(gè)實(shí)例的屬性信息包括實(shí)例標(biāo)識(shí)、選舉周期、是否參加主實(shí)例選舉和主從狀態(tài);更新單元,用于如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息;切換單元,用于如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài);執(zhí)行單元,用于主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
在一些實(shí)施例中,實(shí)例的屬性信息還包括用于標(biāo)識(shí)實(shí)例所執(zhí)行工作的類別的類別名;以及所述更新單元包括:第一判斷子單元,用于如果到達(dá)選舉時(shí)間,則參加主實(shí)例選舉的實(shí)例判斷所述主實(shí)例信息表中是否包含與該實(shí)例屬性信息中類別名相同的記錄;插入子單元,用于如果所述主實(shí)例信息表中不包含與該實(shí)例屬性信息中類別名相同的記錄,則該實(shí)例在所述主實(shí)例信息表中插入一條包括類別名、實(shí)例標(biāo)識(shí)和鎖定時(shí)間的任務(wù)記錄,并鎖定所述任務(wù)記錄,其中,所述任務(wù)記錄的類別名和實(shí)例標(biāo)識(shí)與插入所述任務(wù)記錄的實(shí)例的類別名和實(shí)例標(biāo)識(shí)相同,鎖定時(shí)間為所述任務(wù)記錄的插入時(shí)間。
在一些實(shí)施例中,所述更新單元還包括:第二判斷子單元,用于如果所述主實(shí)例信息表中包含與參加主實(shí)例選舉的實(shí)例的屬性信息中 類別名相同的記錄,則參加主實(shí)例選舉的實(shí)例判斷是否滿足預(yù)先設(shè)定的更新條件;更新子單元,用于如果滿足更新條件則更新所述主實(shí)例信息表中記錄的信息。
在一些實(shí)施例中,實(shí)例的屬性信息還包括主實(shí)例心跳超時(shí)時(shí)間,其中,主實(shí)例心跳超時(shí)時(shí)間為主從狀態(tài)為主狀態(tài)的實(shí)例工作異常的判斷條件;以及所述更新條件為以下任意一種:所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空;所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同;所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間。
在一些實(shí)施例中,所述更新子單元進(jìn)一步用于:如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為所述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間;如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同,則更新當(dāng)前時(shí)間為鎖定時(shí)間;如果所述更新條件為所述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為所述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間。
在一些實(shí)施例中,所述裝置還包括異常處理單元,用于實(shí)例的屬性信息中的是否參加主實(shí)例選舉默認(rèn)為參加主實(shí)例選舉,當(dāng)主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作的過(guò)程中出現(xiàn)異常時(shí),將該實(shí)例的屬性信息更改為不參加主實(shí)例選舉,當(dāng)該實(shí)例的異常排除后,更改為參加主實(shí)例選舉。
本申請(qǐng)?zhí)峁┑娜蝿?wù)調(diào)度實(shí)例的主從切換方法和裝置,通過(guò)實(shí)例的 選舉周期和開(kāi)啟時(shí)間判斷是否到達(dá)選舉時(shí)間,如果某實(shí)例到達(dá)選舉時(shí)間且該實(shí)例參加主實(shí)例選舉,則該實(shí)例嘗試去更新主實(shí)例信息表中記錄的信息,如果更新成功,則該實(shí)例的主從狀態(tài)為主狀態(tài),如果該實(shí)例之前的主從狀態(tài)為從狀態(tài),則簡(jiǎn)單、高效的實(shí)現(xiàn)了任務(wù)調(diào)度實(shí)例的主從切換,保證了分布式處理基于時(shí)間序列的高并發(fā)任務(wù)的系統(tǒng)的正常運(yùn)行,同時(shí)任何時(shí)刻只有一個(gè)實(shí)例的主從狀態(tài)為主狀態(tài),滿足同一時(shí)間點(diǎn)僅有一個(gè)實(shí)例處于工作狀態(tài),保證了同一時(shí)間周期的任務(wù)不重復(fù)執(zhí)行。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本申請(qǐng)可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請(qǐng)的任務(wù)調(diào)度實(shí)例的主從切換方法的一個(gè)實(shí)施例的流程圖;
圖3是根據(jù)本申請(qǐng)的任務(wù)調(diào)度實(shí)例的主從切換方法的又一個(gè)實(shí)施例的流程圖;
圖4是根據(jù)本申請(qǐng)的任務(wù)調(diào)度實(shí)例的主從切換裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖5是適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的執(zhí)行設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對(duì)該發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)。
圖1示出了可以應(yīng)用本申請(qǐng)的任務(wù)調(diào)度實(shí)例的主從切換方法或任務(wù)調(diào)度實(shí)例的主從切換裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例運(yùn)行于其上的執(zhí)行設(shè)備101、102、103,網(wǎng)絡(luò)104和數(shù)據(jù)庫(kù)服務(wù)器105。網(wǎng)絡(luò)104用以在執(zhí)行設(shè)備101、102、103和數(shù)據(jù)庫(kù)服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無(wú)線通信鏈路或者光纖電纜等等。
執(zhí)行設(shè)備101、102、103可以是能夠運(yùn)行用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例的各種電子設(shè)備,包括但不限于服務(wù)器、智能手機(jī)、平板電腦、電子書(shū)閱讀器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)、mp4(movingpictureexpertsgroupaudiolayeriv,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面4)播放器、膝上型便攜計(jì)算機(jī)和臺(tái)式計(jì)算機(jī)等等。
數(shù)據(jù)庫(kù)服務(wù)器105可以是用于創(chuàng)建主實(shí)例信息表的數(shù)據(jù)庫(kù)所在的服務(wù)器,執(zhí)行設(shè)備101、102、103中運(yùn)行的實(shí)例可以更新主實(shí)例信息表中記錄的信息。
需要說(shuō)明的是,如果用于創(chuàng)建主實(shí)例信息表的數(shù)據(jù)庫(kù)安裝在執(zhí)行設(shè)備101、102、103中,則系統(tǒng)架構(gòu)100可以不包括網(wǎng)絡(luò)104和數(shù)據(jù)庫(kù)服務(wù)器105。本申請(qǐng)實(shí)施例所提供的任務(wù)調(diào)度實(shí)例的主從切換方法一般由執(zhí)行設(shè)備101、102、103執(zhí)行,相應(yīng)的任務(wù)調(diào)度實(shí)例的主從切換裝置一般設(shè)置于執(zhí)行設(shè)備101、102、103中。
應(yīng)該理解,圖1中的執(zhí)行設(shè)備、網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)服務(wù)器的數(shù)目?jī)H僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的執(zhí)行設(shè)備、網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)服務(wù)器。
繼續(xù)參考圖2,示出了根據(jù)本申請(qǐng)的任務(wù)調(diào)度實(shí)例的主從切換方法的一個(gè)實(shí)施例的流程200。所述的任務(wù)調(diào)度實(shí)例的主從切換方法,包括以下步驟:
步驟201,預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間。
在本實(shí)施例中,任務(wù)調(diào)度實(shí)例的主從切換方法運(yùn)行于其上的電子 設(shè)備(例如圖1所示的執(zhí)行設(shè)備101、102、103)中可以預(yù)先設(shè)定有至少兩個(gè)能夠用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例,預(yù)先設(shè)定的至少兩個(gè)實(shí)例所能夠執(zhí)行的任務(wù)調(diào)度工作可以相同。此處,實(shí)例可以是實(shí)現(xiàn)任務(wù)調(diào)度工作的應(yīng)用程序的實(shí)例。各個(gè)實(shí)例運(yùn)行后,在同一時(shí)刻下上述至少兩個(gè)實(shí)例中僅有一個(gè)實(shí)例處于執(zhí)行任務(wù)調(diào)度工作的工作狀態(tài),該實(shí)例可以定義為主實(shí)例。上述至少兩個(gè)實(shí)例中除主實(shí)例外的其他實(shí)例可以定義為從實(shí)例,從實(shí)例作為主實(shí)例的備份不執(zhí)行任務(wù)調(diào)度工作,但可以進(jìn)行主實(shí)例選舉,選舉成功則可以成為主實(shí)例,實(shí)現(xiàn)主從切換。上述至少兩個(gè)實(shí)例中的各個(gè)實(shí)例可以根據(jù)自身的開(kāi)啟時(shí)間和預(yù)先設(shè)定的選舉周期判斷是否到達(dá)選舉時(shí)間。在本實(shí)施例中,上述至少兩個(gè)實(shí)例中的各個(gè)實(shí)例均可以預(yù)先定義屬性信息,屬性信息可以包括實(shí)例標(biāo)識(shí)、選舉周期、是否參加主實(shí)例選舉和主從狀態(tài)。其中,實(shí)例標(biāo)識(shí)可以用于唯一標(biāo)識(shí)一個(gè)實(shí)例,因此,上述至少兩個(gè)實(shí)例中的各個(gè)實(shí)例均具有不同的實(shí)例標(biāo)識(shí),實(shí)例標(biāo)識(shí)可以通過(guò)各種方式進(jìn)行定義,例如,當(dāng)上述至少兩個(gè)實(shí)例中的各個(gè)實(shí)例分別在不同的計(jì)算機(jī)上運(yùn)行時(shí),可以使用實(shí)例所在計(jì)算機(jī)的主機(jī)名或ip地址定義實(shí)例標(biāo)識(shí);又例如,當(dāng)上述至少兩個(gè)實(shí)例運(yùn)行在相同的計(jì)算機(jī)上時(shí),可以人為設(shè)定不同的實(shí)例標(biāo)識(shí),以區(qū)分各個(gè)實(shí)例。選舉周期可以用于標(biāo)識(shí)實(shí)例進(jìn)行主實(shí)例選舉的周期頻率,該選舉周期可以根據(jù)需要認(rèn)為進(jìn)行設(shè)定,可以將上述至少兩個(gè)實(shí)例的選舉周期設(shè)定為相同的時(shí)間,例如,都設(shè)置為20秒,即上述至少兩個(gè)實(shí)例中的各個(gè)實(shí)例從開(kāi)啟時(shí)間計(jì)算,每隔20秒?yún)⒓右淮沃鲗?shí)例選舉。是否參加主實(shí)例選舉可以用于標(biāo)識(shí)實(shí)例是否參加主實(shí)例的選舉,它可以包括參加主實(shí)例選舉和不參加主實(shí)例選舉兩種情況,一個(gè)實(shí)例可以默認(rèn)為參加主實(shí)例選舉。主從狀態(tài)可以用于標(biāo)識(shí)實(shí)例當(dāng)前所處的狀態(tài),它可以包括主狀態(tài)和從狀態(tài),一個(gè)實(shí)例可以默認(rèn)為從狀態(tài)。
步驟202,如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息。
在本實(shí)施例中,基于步驟201中的判斷結(jié)果,到達(dá)選舉時(shí)間且屬性信息中的是否參加主實(shí)例選舉為參加主實(shí)例選舉的實(shí)例可以嘗試更 新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息,即進(jìn)行主實(shí)例選舉,其中,上述數(shù)據(jù)庫(kù)可以是各種類型的數(shù)據(jù)庫(kù),例如關(guān)系數(shù)據(jù)庫(kù)。上述主實(shí)例信息表可以是數(shù)據(jù)庫(kù)中的用于記錄主實(shí)例信息的表,該表中可以記錄主實(shí)例的各種信息,且可以將記錄的主實(shí)例的信息進(jìn)行鎖定,例如,可以在主實(shí)例信息表中的某行記錄主實(shí)例的實(shí)例標(biāo)識(shí)、鎖定時(shí)間等信息,并可以通過(guò)數(shù)據(jù)庫(kù)行鎖將該行進(jìn)行鎖定。
步驟203,如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài)。
在本實(shí)施例中,如果到達(dá)選舉時(shí)間且屬性信息中的是否參加主實(shí)例選舉為參加主實(shí)例選舉的實(shí)例成功的更新了主實(shí)例信息表中記錄的信息,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),上述至少兩個(gè)實(shí)例中的除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài),即在同一時(shí)刻下,只有一個(gè)實(shí)例為主實(shí)例。
步驟204,主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
在本實(shí)施例中,上述至少兩個(gè)實(shí)例中主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作,由于在同一時(shí)刻下只有一個(gè)實(shí)例為主實(shí)例,因此,在同一時(shí)刻下只有一個(gè)實(shí)例處于下發(fā)任務(wù)的工作狀態(tài)(即執(zhí)行任務(wù)調(diào)度工作的工作狀態(tài)),避免了同一時(shí)間周期的任務(wù)重復(fù)執(zhí)行。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,實(shí)例的屬性信息中的是否參加主實(shí)例選舉默認(rèn)為參加主實(shí)例選舉,當(dāng)主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作的過(guò)程中出現(xiàn)異常時(shí),將該實(shí)例的屬性信息更改為不參加主實(shí)例選舉,當(dāng)該實(shí)例的異常排除后,更改為參加主實(shí)例選舉。
本申請(qǐng)的上述實(shí)施例提供的方法中的實(shí)例根據(jù)選舉周期和開(kāi)啟時(shí)間判斷是否到達(dá)選舉時(shí)間,如果到達(dá)選舉時(shí)間且屬性信息中的是否參加主實(shí)例選舉為參加主實(shí)例選舉,則該實(shí)例嘗試更新主實(shí)例信息表中記錄的信息,如果更新成功則該實(shí)例的主從狀態(tài)為主狀態(tài),如果該實(shí)例之前的主從狀態(tài)為從狀態(tài),則簡(jiǎn)單、高效的實(shí)現(xiàn)了任務(wù)調(diào)度實(shí)例的主從切換。
進(jìn)一步參考圖3,其示出了任務(wù)調(diào)度實(shí)例的主從切換方法的又一個(gè)實(shí)施例的流程300。該任務(wù)調(diào)度實(shí)例的主從切換方法的流程300,包括以下步驟:
步驟301,預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間。
在本實(shí)施例中,步驟301可以參考圖2對(duì)應(yīng)實(shí)施例的步驟201,這里不再贅述。
步驟302,如果到達(dá)選舉時(shí)間,則參加主實(shí)例選舉的實(shí)例判斷主實(shí)例信息表中是否包含與該實(shí)例屬性信息中類別名相同的記錄。
在本實(shí)施例中,實(shí)例的屬性信息還包括用于標(biāo)識(shí)實(shí)例所執(zhí)行工作的類別的類別名。實(shí)例的類別名可以是人工設(shè)定的,例如,研發(fā)人員可以根據(jù)需要調(diào)度的實(shí)際業(yè)務(wù)任務(wù)進(jìn)行設(shè)定。不同的實(shí)例可以具有相同的類別名,例如,由于上述至少兩個(gè)實(shí)例所能夠執(zhí)行的任務(wù)調(diào)度工作可以相同,因此上述至少兩個(gè)實(shí)例可以具有相同的類別名。基于步驟301中的判斷結(jié)果,到達(dá)選舉時(shí)間且屬性信息中的是否參加主實(shí)例選舉為參加主實(shí)例選舉的實(shí)例可以判斷數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中是否包含與該實(shí)例屬性信息中類別名相同的記錄,即到達(dá)選舉時(shí)間且參加主實(shí)例選舉的實(shí)例可以判斷上述主實(shí)例信息表中是否包含與其類別名相同的記錄。其中,上述數(shù)據(jù)庫(kù)可以是各種類型的數(shù)據(jù)庫(kù),例如關(guān)系數(shù)據(jù)庫(kù)。上述主實(shí)例信息表可以是數(shù)據(jù)庫(kù)中的用于記錄主實(shí)例信息的表,該表中可以記錄主實(shí)例的各種信息,且可以將記錄的主實(shí)例的信息進(jìn)行鎖定,例如,可以在主實(shí)例信息表中的某行記錄主實(shí)例的實(shí)例標(biāo)識(shí)、鎖定時(shí)間等信息,并可以通過(guò)數(shù)據(jù)庫(kù)行鎖將該行進(jìn)行鎖定。
步驟303,如果主實(shí)例信息表中不包含與該實(shí)例屬性信息中類別名相同的記錄,則該實(shí)例在主實(shí)例信息表中插入一條包括類別名、實(shí)例標(biāo)識(shí)和鎖定時(shí)間的任務(wù)記錄,并鎖定任務(wù)記錄。
在本實(shí)施例中,如果到達(dá)選舉時(shí)間且屬性信息中的是否參加主實(shí)例選舉為參加主實(shí)例選舉的實(shí)例判斷上述主實(shí)例信息表中不包含與該實(shí)例屬性信息中類別名相同的記錄,則該實(shí)例在上述主實(shí)例信息表中 插入一條包括類別名、實(shí)例標(biāo)識(shí)和鎖定時(shí)間的任務(wù)記錄,并鎖定上述任務(wù)記錄,其中,上述任務(wù)記錄的類別名和實(shí)例標(biāo)識(shí)與插入上述任務(wù)記錄的實(shí)例的類別名和實(shí)例標(biāo)識(shí)相同,鎖定時(shí)間為上述任務(wù)記錄的插入時(shí)間。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,如果上述主實(shí)例信息表中包含與參加主實(shí)例選舉的實(shí)例的屬性信息中類別名相同的記錄,即到達(dá)選舉時(shí)間且參加主實(shí)例選舉的實(shí)例判斷上述主實(shí)例信息表中不包含與其類別名相同的記錄,則參加主實(shí)例選舉的實(shí)例判斷是否滿足預(yù)先設(shè)定的更新條件;如果滿足更新條件則更新所述主實(shí)例信息表中記錄的信息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,實(shí)例的屬性信息還可以包括主實(shí)例心跳超時(shí)時(shí)間,其中,主實(shí)例心跳超時(shí)時(shí)間為主從狀態(tài)為主狀態(tài)的實(shí)例工作異常的判斷條件,例如,當(dāng)主實(shí)例信息表中記錄的主實(shí)例的信息的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間時(shí),可以認(rèn)為主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作時(shí)出現(xiàn)異常。主實(shí)例心跳超時(shí)時(shí)間可以根據(jù)實(shí)際需要進(jìn)行人工設(shè)定,例如,在實(shí)際應(yīng)用中,考慮到各個(gè)實(shí)例所在的服務(wù)器時(shí)間和數(shù)據(jù)庫(kù)服務(wù)器時(shí)間的微小時(shí)間差異、以及網(wǎng)絡(luò)耗時(shí)等因素,可以將主實(shí)例心跳超時(shí)時(shí)間設(shè)置為略大于一個(gè)選舉周期的時(shí)長(zhǎng)(例如,當(dāng)選舉周期為20秒時(shí)可以將主實(shí)例心跳超時(shí)時(shí)間設(shè)置為25秒),這樣可以保證當(dāng)主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作中出現(xiàn)異常時(shí),進(jìn)行主實(shí)例選舉的實(shí)例可以及時(shí)接替主實(shí)例執(zhí)行任務(wù)調(diào)度工作,即進(jìn)行主從切換,同時(shí)避免了由于服務(wù)器之間的時(shí)間差異、以及網(wǎng)絡(luò)耗時(shí)等因素導(dǎo)致正常執(zhí)行任務(wù)調(diào)度工作的主實(shí)例被輕易切換。上述更新條件可以為以下任意一種:上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空;上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同;上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,如果上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為上述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間;如果上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同,則更新當(dāng)前時(shí)間為鎖定時(shí)間;如果上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為上述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間。
步驟304,如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài)。
在本實(shí)施例中,步驟304可以參考圖2對(duì)應(yīng)實(shí)施例的步驟203,這里不再贅述。
步驟305,主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
在本實(shí)施例中,步驟305可以參考圖2對(duì)應(yīng)實(shí)施例的步驟204,這里不再贅述。
從圖3中可以看出,與圖2對(duì)應(yīng)的實(shí)施例相比,本實(shí)施例中的任務(wù)調(diào)度實(shí)例的主從切換方法的流程300突出了對(duì)主實(shí)例信息表中記錄的信息的判斷,如果主實(shí)例信息表中不包含與進(jìn)行主實(shí)例選舉的實(shí)例(即到達(dá)選舉時(shí)間且參加主實(shí)例選舉的實(shí)例)的類別名相同記錄,則進(jìn)行主實(shí)例選舉的實(shí)例在主實(shí)例信息表中插入一條任務(wù)記錄,并鎖定該任務(wù)記錄,此時(shí)該實(shí)例的主從狀態(tài)為主狀態(tài),且該實(shí)例可以執(zhí)行任務(wù)調(diào)度工作。由此,本實(shí)施例描述的方法可以簡(jiǎn)單、快速的實(shí)現(xiàn)主實(shí)例的選舉,從而使任務(wù)調(diào)度工作能夠順利進(jìn)行。
進(jìn)一步參考圖4,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N任務(wù)調(diào)度實(shí)例的主從切換裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與 圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖4所示,本實(shí)施例所述的任務(wù)調(diào)度實(shí)例的主從切換裝置400包括:判斷單元401、更新單元402、切換單元403和執(zhí)行單元404。其中,判斷單元401用于預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間,其中,各個(gè)實(shí)例的屬性信息包括實(shí)例標(biāo)識(shí)、選舉周期、是否參加主實(shí)例選舉和主從狀態(tài);更新單元402用于如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息;切換單元403用于如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài);執(zhí)行單元404用于主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
在本實(shí)施例中,判斷單元401、更新單元402、切換單元403和執(zhí)行單元404的具體處理可以參考圖2對(duì)應(yīng)實(shí)施例步驟201、步驟202、步驟203和步驟204的詳細(xì)描述,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,實(shí)例的屬性信息還包括用于標(biāo)識(shí)實(shí)例所執(zhí)行工作的類別的類別名;以及上述更新單元402包括:第一判斷子單元(未示出),用于如果到達(dá)選舉時(shí)間,則參加主實(shí)例選舉的實(shí)例判斷上述主實(shí)例信息表中是否包含與該實(shí)例屬性信息中類別名相同的記錄;插入子單元(未示出),用于如果上述主實(shí)例信息表中不包含與該實(shí)例屬性信息中類別名相同的記錄,則該實(shí)例在上述主實(shí)例信息表中插入一條包括類別名、實(shí)例標(biāo)識(shí)和鎖定時(shí)間的任務(wù)記錄,并鎖定上述任務(wù)記錄,其中,上述任務(wù)記錄的類別名和實(shí)例標(biāo)識(shí)與插入上述任務(wù)記錄的實(shí)例的類別名和實(shí)例標(biāo)識(shí)相同,鎖定時(shí)間為上述任務(wù)記錄的插入時(shí)間。該實(shí)現(xiàn)方式可以參考圖3對(duì)應(yīng)實(shí)施例步驟302、303的詳細(xì)描述,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,上述更新單元402還包括:第二判斷子單元(未示出),用于如果上述主實(shí)例信息表中包含與參加主實(shí)例選舉的實(shí)例的屬性信息中類別名相同的記錄,則參加主實(shí)例選舉的實(shí)例判斷是否滿足預(yù)先設(shè)定的更新條件;更新子單元(未示出), 用于如果滿足更新條件則更新上述主實(shí)例信息表中記錄的信息。該實(shí)現(xiàn)方式可參考上述圖3對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的詳細(xì)描述,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,實(shí)例的屬性信息還包括主實(shí)例心跳超時(shí)時(shí)間,其中,主實(shí)例心跳超時(shí)時(shí)間為主從狀態(tài)為主狀態(tài)的實(shí)例工作異常的判斷條件;以及上述更新條件為以下任意一種:上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空;上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同;上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間。該實(shí)現(xiàn)方式可參考上述圖3對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的詳細(xì)描述,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,上述更新子單元進(jìn)一步用于:如果上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄的實(shí)例標(biāo)識(shí)和鎖定時(shí)間為空,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為上述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間;如果上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)相同,則更新當(dāng)前時(shí)間為鎖定時(shí)間;上述更新條件為上述主實(shí)例信息表中與參加主實(shí)例選舉的實(shí)例的類別名相同的記錄中的實(shí)例標(biāo)識(shí)與參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)不同且記錄中的鎖定時(shí)間與當(dāng)前時(shí)間的差值大于主實(shí)例心跳超時(shí)時(shí)間,則更新參加主實(shí)例選舉的實(shí)例的實(shí)例標(biāo)識(shí)為上述主實(shí)例信息表中記錄的實(shí)例標(biāo)識(shí),更新當(dāng)前時(shí)間為鎖定時(shí)間。該實(shí)現(xiàn)方式可參考上述圖3對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的詳細(xì)描述,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,上述裝置還包括異常處理單元(未示出),用于實(shí)例的屬性信息中的是否參加主實(shí)例選舉默認(rèn)為參加主機(jī)選舉,當(dāng)主從狀態(tài)為主狀態(tài)的實(shí)例在執(zhí)行任務(wù)調(diào)度工作的過(guò)程中出現(xiàn)異常時(shí),將該實(shí)例的屬性信息更改為不參加主機(jī)選舉,當(dāng)該實(shí) 例的異常排除后,更改為參加主機(jī)選舉。該實(shí)現(xiàn)方式可參考上述圖2對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的詳細(xì)描述,在此不再贅述。
下面參考圖5,其示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)500的結(jié)構(gòu)示意圖。
如圖5所示,計(jì)算機(jī)系統(tǒng)500包括中央處理單元(cpu)501,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)502中的程序或者從存儲(chǔ)部分508加載到隨機(jī)訪問(wèn)存儲(chǔ)器(ram)503中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram503中,還存儲(chǔ)有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。cpu501、rom502以及ram503通過(guò)總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括鍵盤、鼠標(biāo)等的輸入部分506;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分507;包括硬盤等的存儲(chǔ)部分508;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器510也根據(jù)需要連接至i/o接口505。可拆卸介質(zhì)511,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器510上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分508。
特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開(kāi)的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過(guò)通信部分509從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)511被安裝。在該計(jì)算機(jī)程序被中央處理單元(cpu)501執(zhí)行時(shí),執(zhí)行本申請(qǐng)的方法中限定的上述功能。
附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于 實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
描述于本申請(qǐng)實(shí)施例中所涉及到的單元可以通過(guò)軟件的方式實(shí)現(xiàn),也可以通過(guò)硬件的方式來(lái)實(shí)現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括判斷單元、更新單元、切換單元和執(zhí)行單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對(duì)該單元本身的限定,例如,判斷單元還可以被描述為“預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間的單元”。
作為另一方面,本申請(qǐng)還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:預(yù)先設(shè)定的至少兩個(gè)用于執(zhí)行任務(wù)調(diào)度工作的實(shí)例根據(jù)各自的選舉周期和開(kāi)啟時(shí)間判斷是否達(dá)到選舉時(shí)間,其中,各個(gè)實(shí)例的屬性信息包括實(shí)例標(biāo)識(shí)、選舉周期、是否參加主實(shí)例選舉和主從狀態(tài);如果到達(dá)選舉時(shí)間,則屬性信息為參加主實(shí)例選舉的實(shí)例更新數(shù)據(jù)庫(kù)中預(yù)先創(chuàng)建的主實(shí)例信息表中記錄的信息;如果更新成功,則更新成功的實(shí)例的主從狀態(tài)為主狀態(tài),除更新成功的實(shí)例之外的其他實(shí)例的主從狀態(tài)為從狀態(tài);主從狀態(tài)為主狀態(tài)的實(shí)例執(zhí)行任務(wù)調(diào)度工作。
以上描述僅為本申請(qǐng)的較佳實(shí)施例以及對(duì)所運(yùn)用技術(shù)原理的說(shuō)明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請(qǐng)中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合 而形成的其它技術(shù)方案。例如上述特征與本申請(qǐng)中公開(kāi)的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。