本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種心跳信息發(fā)送方法、裝置及心跳發(fā)送節(jié)點(diǎn)。
背景技術(shù):
目前,提高分布式數(shù)據(jù)庫系統(tǒng)的可用性的一般方法為數(shù)據(jù)備份。為了保證數(shù)據(jù)庫的一致性,數(shù)據(jù)備份必須是一致性備份。一致性備份需要采用一致性算法。常見的一致性算法包括paxos算法,raft算法等。進(jìn)一步,在分布式數(shù)據(jù)庫系統(tǒng)中,為了提高一致性備份過程中數(shù)據(jù)復(fù)制的速度和吞吐量,在進(jìn)行數(shù)據(jù)備份時,通常將數(shù)據(jù)分成若干個數(shù)據(jù)塊進(jìn)行復(fù)制。
在數(shù)據(jù)塊采用一致性算法進(jìn)行復(fù)制備份的過程中,為了實(shí)現(xiàn)故障的自動恢復(fù)與容錯,參與一致性算法的各個節(jié)點(diǎn)需要知道彼此數(shù)據(jù)塊的狀態(tài)信息。為此,節(jié)點(diǎn)之間需要發(fā)送心跳信息來通知自己的數(shù)據(jù)塊的狀態(tài)信息。
如圖1所示,現(xiàn)有技術(shù)中,主數(shù)據(jù)塊leader會向主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊發(fā)送心跳信息,當(dāng)節(jié)點(diǎn)中的存在主數(shù)據(jù)塊時,該節(jié)點(diǎn)會將節(jié)點(diǎn)內(nèi)各個數(shù)據(jù)塊的心跳信息合并,發(fā)送給所有與節(jié)點(diǎn)內(nèi)的數(shù)據(jù)塊位于同一數(shù)據(jù)塊組的數(shù)據(jù)塊所在的其他節(jié)點(diǎn),具有相同數(shù)據(jù)塊類型的節(jié)點(diǎn)是指存儲有相同數(shù)據(jù)的數(shù)據(jù)塊所在的節(jié)點(diǎn)。
然而,在系統(tǒng)中,節(jié)點(diǎn)會向所有包含相同數(shù)據(jù)塊的其他節(jié)點(diǎn)發(fā)送心跳信息,由于節(jié)點(diǎn)中除了主數(shù)據(jù)塊leader外,還包括不是leader的數(shù)據(jù)塊,因此,對心跳信息進(jìn)行合并,會導(dǎo)致節(jié)點(diǎn)發(fā)送大量無用的心跳信息。如圖2所示,節(jié)點(diǎn)1中的數(shù)據(jù)塊1為leader,數(shù)據(jù)塊2不是leader,由于節(jié)點(diǎn)1和節(jié)點(diǎn)3都包括數(shù)據(jù)塊2,則節(jié)點(diǎn)1會向節(jié)點(diǎn)3發(fā)送心跳信息,但由于節(jié)點(diǎn)1中的數(shù)據(jù)塊2并不是leader, 因此這個心跳信息就是無用的心跳信息,無用的心跳信息會導(dǎo)致心跳信息的數(shù)量增加,影響系統(tǒng)性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種心跳信息發(fā)送方法、裝置及心跳發(fā)送節(jié)點(diǎn),用于避免節(jié)點(diǎn)發(fā)送無用的心跳信息,從而減少心跳信息數(shù)量,防止網(wǎng)絡(luò)擁塞。
本發(fā)明實(shí)施例第一方面提供了一種心跳信息發(fā)送方法,所述方法由心跳發(fā)送節(jié)點(diǎn)執(zhí)行,所述方法包括:
確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn);
在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
本發(fā)明實(shí)施例中,通過確定心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收點(diǎn),然后,在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向心跳接收節(jié)點(diǎn)發(fā)送至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息,避免了心跳發(fā)送節(jié)點(diǎn)將節(jié)點(diǎn)內(nèi)各個數(shù)據(jù)塊(包括主數(shù)據(jù)塊和從數(shù)據(jù)塊)的心跳信息合并,并發(fā)送給所有與節(jié)點(diǎn)內(nèi)的數(shù)據(jù)塊位于同一數(shù)據(jù)塊組的數(shù)據(jù)塊所在的其他節(jié)點(diǎn),從而減少心跳信息數(shù)量,防止網(wǎng)絡(luò)擁塞。
結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組各自的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
本發(fā)明實(shí)施例第二方面提供了一種心跳信息發(fā)送方法,所述方法由心跳發(fā)送節(jié)點(diǎn)執(zhí)行,所述方法包括:確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從 數(shù)據(jù)塊;向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
現(xiàn)有技術(shù)中,心跳發(fā)送節(jié)點(diǎn)發(fā)送的心跳信息攜帶有心跳發(fā)送節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,心跳接收節(jié)點(diǎn)中具有心跳接收節(jié)點(diǎn)中的從數(shù)據(jù)塊對應(yīng)的主數(shù)據(jù)塊所在節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識。在心跳接收節(jié)點(diǎn)接收到的心跳信息時,如果心跳信息攜帶的節(jié)點(diǎn)標(biāo)識與從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識相同,則從數(shù)據(jù)塊接收該心跳信息,并對心跳信息進(jìn)行響應(yīng)。如果從數(shù)據(jù)塊所在的數(shù)據(jù)塊組中的主數(shù)據(jù)塊發(fā)生改變,即,另一心跳發(fā)送節(jié)點(diǎn)中的位于數(shù)據(jù)塊組內(nèi)的數(shù)據(jù)塊成為該數(shù)據(jù)塊組的主數(shù)據(jù)塊,但是,心跳接收節(jié)點(diǎn)中的從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識沒有改變,則在另一心跳發(fā)送節(jié)點(diǎn)向心跳接收節(jié)點(diǎn)發(fā)送心跳信息時,由于心跳信息中攜帶的另一心跳發(fā)送節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識與從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識不同,則從數(shù)據(jù)塊會忽略該心跳信息,導(dǎo)致從數(shù)據(jù)塊相對于另一心跳發(fā)送節(jié)點(diǎn)處于孤立狀態(tài)。
本申請實(shí)施例中,通過在心跳發(fā)送節(jié)點(diǎn)的心跳信息中攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,使得心跳接收節(jié)點(diǎn)在接收到攜帶有數(shù)據(jù)塊組標(biāo)識的心跳信息后,將從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,從而防止從數(shù)據(jù)塊相對于心跳發(fā)送節(jié)點(diǎn)處于孤立狀態(tài)。
結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,包括:在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。本發(fā)明實(shí)施例中,在心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向心跳接收節(jié)點(diǎn)發(fā)送心跳信息,減少了心跳信息的數(shù)量。
本發(fā)明實(shí)施例第三方面提供了一種心跳信息處理方法,所述方法由心跳接收節(jié)點(diǎn)執(zhí)行,所述方法包括:接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā) 送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識;確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊;將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
本發(fā)明實(shí)施例中,心跳接收節(jié)點(diǎn)在接收到攜帶有用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識的心跳信息后,確定心跳接收節(jié)點(diǎn)中位于數(shù)據(jù)塊組中的從數(shù)據(jù)塊,然后,將從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,從而防止從數(shù)據(jù)塊相對于心跳發(fā)送節(jié)點(diǎn)處于孤立狀態(tài)。
本發(fā)明實(shí)施例第四方面提供了一種心跳信息發(fā)送裝置,包括:
確定單元,用于確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn);
發(fā)送單元,用于在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組各自的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
本發(fā)明實(shí)施例第五方面提供了一種心跳信息發(fā)送裝置,包括:
確定單元,用于確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從數(shù)據(jù)塊;
發(fā)送單元,用于向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
結(jié)合第五方面,在第五方面的第一種可能的實(shí)現(xiàn)方式中,所述發(fā)送單元用 于:
在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。
本發(fā)明實(shí)施例第六方面提供了一種心跳信息處理裝置,包括:
接收單元,用于接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識;
確定單元,用于確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊;
更新單元,用于將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
本發(fā)明實(shí)施例第七方面提供了一種心跳發(fā)送節(jié)點(diǎn),包括:處理器,發(fā)送器和通信總線;其中,所述處理器和所述發(fā)送器通過所述通信總線完成相互間的通信;
所述處理器用于:確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn);
所述發(fā)送器用于:在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
結(jié)合第七方面,在第七方面的第一種可能的實(shí)現(xiàn)方式中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組各自的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
本發(fā)明實(shí)施例第八方面提供了一種心跳發(fā)送節(jié)點(diǎn),包括:處理器,發(fā)送器和通信總線;其中,所述處理器和所述發(fā)送器通過所述通信總線完成相互間的通信;
所述處理器用于:確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù) 塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從數(shù)據(jù)塊;
所述發(fā)送器用于:向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
結(jié)合第八方面,在第八方面的第一種可能的實(shí)現(xiàn)方式中,所述發(fā)送器用于:
在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。
本發(fā)明實(shí)施例第九方面提供了一種心跳發(fā)送節(jié)點(diǎn),包括:處理器,接收器和通信總線;其中,所述處理器和所述接收器通過所述通信總線完成相互間的通信;
所述接收器用于:接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識;
所述處理器用于:確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊;將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
本發(fā)明實(shí)施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,通過確定心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收點(diǎn),然后,在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向心跳接收節(jié)點(diǎn)發(fā)送至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息,避免了心跳發(fā)送節(jié)點(diǎn)將節(jié)點(diǎn)內(nèi)各個數(shù)據(jù)塊(包括主數(shù)據(jù)塊和從數(shù)據(jù)塊)的心跳信息合并,并發(fā)送給所有與節(jié)點(diǎn)內(nèi)的數(shù)據(jù)塊位于同一數(shù)據(jù)塊組的數(shù)據(jù)塊所在的其他節(jié)點(diǎn),從而減少心跳信息數(shù)量,防止網(wǎng)絡(luò)擁塞。
附圖說明
圖1為心跳信息合并的示意圖;
圖2為節(jié)點(diǎn)發(fā)送的無用的心跳信息的示意圖;
圖3為本發(fā)明實(shí)施例適用的分布式數(shù)據(jù)庫系統(tǒng)的示意圖;
圖4為本發(fā)明實(shí)施例中的一種心跳信息發(fā)送方法的流程圖;
圖5為分布式數(shù)據(jù)庫系統(tǒng)中主數(shù)據(jù)模塊發(fā)生改變的示意圖;
圖6為本發(fā)明實(shí)施例中的另一心跳信息發(fā)送方法的流程圖;
圖7為本發(fā)明實(shí)施例中的一種心跳信息處理方法的流程圖;
圖8為本發(fā)明實(shí)施例中心跳發(fā)送裝置的功能模塊示意圖;
圖9為本發(fā)明實(shí)施例中心跳發(fā)送節(jié)點(diǎn)的硬件結(jié)構(gòu)示意圖;
圖10為本發(fā)明實(shí)施例中另一心跳發(fā)送裝置的功能模塊示意圖;
圖11為本發(fā)明實(shí)施例中另一心跳發(fā)送節(jié)點(diǎn)的硬件結(jié)構(gòu)示意圖;
圖12為本發(fā)明實(shí)施例中心跳接收裝置的功能模塊示意圖;
圖13為本發(fā)明實(shí)施例中心跳接收節(jié)點(diǎn)的硬件結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供一種心跳信息發(fā)送方法、裝置及心跳發(fā)送節(jié)點(diǎn),用以解決分布式數(shù)據(jù)庫系統(tǒng)中,節(jié)點(diǎn)發(fā)送無用的心跳信息的技術(shù)問題。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。
本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:單獨(dú)存在a,同時存在a和b,單獨(dú)存在b這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
請參考圖3,為本發(fā)明實(shí)施例適用的分布式數(shù)據(jù)庫系統(tǒng)的示意圖,分布式數(shù)據(jù)庫系統(tǒng)包含多個節(jié)點(diǎn),每個節(jié)點(diǎn)包括至少一個數(shù)據(jù)塊。在背景技術(shù)中已經(jīng)提 及將數(shù)據(jù)分成若干個數(shù)據(jù)塊進(jìn)行復(fù)制,如:將節(jié)點(diǎn)1中的數(shù)據(jù)分為數(shù)據(jù)塊1和數(shù)據(jù)塊2,然后,對數(shù)據(jù)塊1進(jìn)行復(fù)制,并對數(shù)據(jù)塊2進(jìn)行復(fù)制。分布式數(shù)據(jù)庫系統(tǒng)可以具有多個數(shù)據(jù)塊組,每個數(shù)據(jù)快組具有唯一的數(shù)據(jù)塊組標(biāo)識,和唯一的主數(shù)據(jù)塊leader,不同數(shù)據(jù)塊組的主數(shù)據(jù)塊可能位于分布式數(shù)據(jù)庫系統(tǒng)中的同一節(jié)點(diǎn),也可能位于不同節(jié)點(diǎn)。
一致性備份需要采用一致性算法,以raft算法為例,raft算法會從一個數(shù)據(jù)塊組中選舉出一個唯一的主數(shù)據(jù)塊,該數(shù)據(jù)塊組中的其他數(shù)據(jù)塊為從數(shù)據(jù)塊。主數(shù)據(jù)塊負(fù)責(zé)管理日志,所有對日志的添加和狀態(tài)變化操作都通過主數(shù)據(jù)塊完成。在分布式數(shù)據(jù)庫系統(tǒng)中,參與一致性算法的各個節(jié)點(diǎn)需要知道彼此數(shù)據(jù)塊的狀態(tài)信息,為此,主數(shù)據(jù)塊需要向從數(shù)據(jù)塊發(fā)送心跳信息來通知自己所在節(jié)點(diǎn)的狀態(tài)信息。
下面對本發(fā)明實(shí)施例提供的心跳信息發(fā)送方法進(jìn)行詳細(xì)說明。
請參考圖4,為本發(fā)明實(shí)施例提供的一種心跳信息發(fā)送方法的流程圖。該方法包括以下內(nèi)容:
步驟40:確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn)。
在分布式數(shù)據(jù)庫系統(tǒng)中,心跳發(fā)送節(jié)點(diǎn)中維護(hù)有至少兩個主數(shù)據(jù)塊的集合leaderraftnode,和心跳接收節(jié)點(diǎn)的集合
則在步驟40中,心跳發(fā)送節(jié)點(diǎn)可以通過查詢集合sheartbeatnode中包括的節(jié)點(diǎn)來確定心跳接收節(jié)點(diǎn),即,心跳發(fā)送節(jié)點(diǎn)將集合sheartbeatnode中包括的節(jié)點(diǎn)確定為所述心跳接收節(jié)點(diǎn)。
步驟41:在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送 所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
在分布式數(shù)據(jù)庫系統(tǒng)中,在心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,也就是說,在至少兩個從數(shù)據(jù)塊位于同一個節(jié)點(diǎn)上時,心跳發(fā)送節(jié)點(diǎn)將至少兩個主數(shù)據(jù)塊各自的心跳信息進(jìn)行合并,得到合并后的心跳信息,并將合并后的心跳信息發(fā)送至心跳信息節(jié)點(diǎn),以減少心跳信息的數(shù)量。
需要說明的是,心跳發(fā)送節(jié)點(diǎn)上除主數(shù)據(jù)塊外,還可以包括位于其他數(shù)據(jù)塊組的從數(shù)據(jù)塊。在分布式數(shù)據(jù)庫系統(tǒng)中,由于節(jié)點(diǎn)發(fā)生故障等原因,心跳發(fā)送節(jié)點(diǎn)中的數(shù)據(jù)塊的狀態(tài)會發(fā)生改變,一種可能的情況為:心跳發(fā)送節(jié)點(diǎn)中的主數(shù)據(jù)塊變成從數(shù)據(jù)塊,另一種可能的情況為:心跳發(fā)送節(jié)點(diǎn)中的從數(shù)據(jù)塊變成主數(shù)據(jù)塊。在心跳發(fā)送節(jié)點(diǎn)中的數(shù)據(jù)塊狀態(tài)發(fā)生改變后,心跳發(fā)送節(jié)點(diǎn)會對節(jié)點(diǎn)上集合sheartbeatnode進(jìn)行更新。更新的步驟如下:
第一步,確定心跳發(fā)送節(jié)點(diǎn)上的所有主數(shù)據(jù)塊。
第二步:確定所有主數(shù)據(jù)塊的所有從數(shù)據(jù)塊。
第三步:確定所有從數(shù)據(jù)塊所在的節(jié)點(diǎn);
第四步:根據(jù)所有從數(shù)據(jù)塊所在的節(jié)點(diǎn),對集合sheartbeatnode的心跳接收節(jié)點(diǎn)進(jìn)行更新。
現(xiàn)有技術(shù)中,對心跳信息進(jìn)行合并后,可能會導(dǎo)致節(jié)點(diǎn)中的從數(shù)據(jù)塊被主數(shù)據(jù)塊孤立。舉例來講:如圖5中的a所示,節(jié)點(diǎn)1中的數(shù)據(jù)塊1和數(shù)據(jù)塊2都為主數(shù)據(jù)塊,節(jié)點(diǎn)2中包括數(shù)據(jù)塊1和數(shù)據(jù)塊2,通過合并數(shù)據(jù)塊1和主數(shù)據(jù)塊2心跳信息,節(jié)點(diǎn)1只需要向節(jié)點(diǎn)2發(fā)送一個心跳信息,該心跳信息中攜帶節(jié)點(diǎn)1的節(jié)點(diǎn)標(biāo)識,節(jié)點(diǎn)2中的數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識為節(jié)點(diǎn)1的節(jié)點(diǎn)標(biāo)識。如果節(jié)點(diǎn)2接收到節(jié)點(diǎn)1發(fā)送的心跳信息,則從數(shù)據(jù)塊1會接收該心跳信息,并對心跳信息進(jìn)行響應(yīng)。
如圖5中的b所示,在節(jié)點(diǎn)1中的數(shù)據(jù)塊1的狀態(tài)從主數(shù)據(jù)塊變成從數(shù)據(jù)塊,節(jié)點(diǎn)3中的數(shù)據(jù)塊1變?yōu)樗跀?shù)據(jù)塊組的主數(shù)據(jù)塊后,如果節(jié)點(diǎn)1繼續(xù)向 節(jié)點(diǎn)2發(fā)送心跳信息,由于節(jié)點(diǎn)2中的數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識仍然為節(jié)點(diǎn)1的節(jié)點(diǎn)標(biāo)識,則節(jié)點(diǎn)2接到節(jié)點(diǎn)1發(fā)送的心跳信息時,節(jié)點(diǎn)2中的數(shù)據(jù)塊1會繼續(xù)將節(jié)點(diǎn)1作為主數(shù)據(jù)塊所在的節(jié)點(diǎn);而節(jié)點(diǎn)2接收到節(jié)點(diǎn)3發(fā)送的心跳信息(心跳信息中攜帶節(jié)點(diǎn)3的節(jié)點(diǎn)標(biāo)識)時,由于節(jié)點(diǎn)3的節(jié)點(diǎn)標(biāo)識與節(jié)點(diǎn)2中的數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識不同,則節(jié)點(diǎn)2中的數(shù)據(jù)塊1會忽略節(jié)點(diǎn)3發(fā)送的心跳信息,使得節(jié)點(diǎn)2中的數(shù)據(jù)塊1相對于節(jié)點(diǎn)3中的主數(shù)據(jù)塊處于孤立狀態(tài)。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種心跳信息發(fā)送方法,如圖6所示,該方法包括以下內(nèi)容:
步驟60:確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從數(shù)據(jù)塊。
在分布式數(shù)據(jù)庫系統(tǒng)中,對于參與raft算法的每個數(shù)據(jù)塊,維護(hù)一個組節(jié)點(diǎn)集合noderaftnode,noderaftnode中包括系統(tǒng)中具有相同數(shù)據(jù)塊組標(biāo)識的所有數(shù)據(jù)塊所在的節(jié)點(diǎn),noderaftnode中每個元素的格式為元組(raftgroupid,nodeid),其中,raftgroupid為數(shù)據(jù)塊組標(biāo)識,nodeid為數(shù)據(jù)塊所在的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識。
如果某個數(shù)據(jù)塊被選舉為當(dāng)前主數(shù)據(jù)塊,在確定心跳接收節(jié)點(diǎn)時,可以根據(jù)當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,查詢對應(yīng)的noderaftnode,并將noderaftnode中的節(jié)點(diǎn)確定為當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn)。
步驟61:向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
對于noderaftnode中的每個節(jié)點(diǎn),心跳發(fā)送節(jié)點(diǎn)會維護(hù)一個leadermsgr集合,leadermsgr集合中元素的格式為元組(raftgroupid,leaderid),其中,raftgroupid為數(shù)據(jù)塊組標(biāo)識,leaderid為主數(shù)據(jù)塊所在節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識。當(dāng)心跳發(fā)送節(jié)點(diǎn)向noderaftnode中的節(jié)點(diǎn)發(fā)送心跳信息時,心跳信息中添加leadermsgr中的數(shù)據(jù)塊主標(biāo) 識。
請參考圖7,在心跳發(fā)送節(jié)點(diǎn)向心跳接收節(jié)點(diǎn)發(fā)送攜帶有數(shù)據(jù)塊組標(biāo)識的心跳信息后,心跳接收節(jié)點(diǎn)執(zhí)行以下步驟:
步驟70:接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識。
步驟71:確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊。
對于參與raft算法的每個數(shù)據(jù)塊,具有所在數(shù)據(jù)塊組的唯一的數(shù)據(jù)塊組標(biāo)識,因此,心跳接收節(jié)點(diǎn)根據(jù)心跳信息中攜帶的數(shù)據(jù)塊組標(biāo)識,確定出位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊,該從數(shù)據(jù)塊的數(shù)據(jù)塊組標(biāo)識與心跳信息中攜帶的數(shù)據(jù)塊組標(biāo)識相同。
步驟72:將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
在步驟72中,如果所述從數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)標(biāo)識與所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識不同,心跳接收節(jié)點(diǎn)將從數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,則接下來,在心跳接收節(jié)點(diǎn)接收到心跳發(fā)送節(jié)點(diǎn)發(fā)送的心跳信息時,由于更新后的從數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)標(biāo)識與心跳信息中攜帶的節(jié)點(diǎn)標(biāo)識相同,則從數(shù)據(jù)塊能夠接收該心跳信息,并對該心跳信息進(jìn)行響應(yīng),從而反之心跳接收節(jié)點(diǎn)中的從數(shù)據(jù)塊相對于主數(shù)據(jù)塊處于孤立狀態(tài)。
舉例來講,請繼續(xù)參考圖5中的b,在節(jié)點(diǎn)1中的數(shù)據(jù)塊1的狀態(tài)從主數(shù)據(jù)塊變?yōu)閺臄?shù)據(jù)塊,節(jié)點(diǎn)3中的數(shù)據(jù)塊1變?yōu)樗跀?shù)據(jù)塊組的主數(shù)據(jù)塊后,節(jié)點(diǎn)2中的數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識為節(jié)點(diǎn)1的節(jié)點(diǎn)標(biāo)識。節(jié)點(diǎn)3在發(fā)送至節(jié)點(diǎn)2的心跳信息中攜帶用于標(biāo)識數(shù)據(jù)塊1所在數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,節(jié)點(diǎn)2接收到節(jié)點(diǎn)3發(fā)送的心跳信息后,確定出節(jié)點(diǎn)2中位于所述數(shù)據(jù)塊組的從數(shù)據(jù)塊為數(shù)據(jù)塊1,并將數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為節(jié)點(diǎn)3的節(jié)點(diǎn)標(biāo)識。
如果節(jié)點(diǎn)1繼續(xù)向節(jié)點(diǎn)2發(fā)送心跳信息,由于節(jié)點(diǎn)2中數(shù)據(jù)塊1對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為節(jié)點(diǎn)3的節(jié)點(diǎn)標(biāo)識,則節(jié)點(diǎn)2接到節(jié)點(diǎn)1發(fā)送的心跳信息時,節(jié) 點(diǎn)2中的數(shù)據(jù)塊1會忽略節(jié)點(diǎn)2發(fā)送的心跳信息,而節(jié)點(diǎn)2接收到節(jié)點(diǎn)3發(fā)送的心跳信息時,節(jié)點(diǎn)2中的數(shù)據(jù)塊1會接收節(jié)點(diǎn)3發(fā)送的心跳信息,并對節(jié)點(diǎn)2發(fā)送的心跳信息進(jìn)行響應(yīng),使得節(jié)點(diǎn)3中的數(shù)據(jù)塊1的狀態(tài)發(fā)生改變后,節(jié)點(diǎn)2中的數(shù)據(jù)塊1相對于節(jié)點(diǎn)3不會處于孤立狀態(tài)。
可選的,在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。
首先,對raft算法中主數(shù)據(jù)塊的選舉進(jìn)行說明。
raft算法中,任何一個數(shù)據(jù)塊在任何一個時刻都處于三種狀態(tài)之一:主數(shù)據(jù)塊(leader),從數(shù)據(jù)塊(follower),候選數(shù)據(jù)塊(candidate)。raft算法把時間分為連續(xù)的任期,每個任期開始時進(jìn)行主數(shù)據(jù)塊選舉。選舉時,候選數(shù)據(jù)塊所在節(jié)點(diǎn)啟動一個新的計(jì)時器,并向與候選數(shù)據(jù)塊位于同一數(shù)據(jù)塊組中的所有其它數(shù)據(jù)塊所在節(jié)點(diǎn)發(fā)送requestvoterpc請求(選舉請求),并等待節(jié)點(diǎn)響應(yīng),如果在計(jì)時器超時前,候選數(shù)據(jù)塊所在節(jié)點(diǎn)接收到系統(tǒng)中多數(shù)節(jié)點(diǎn)返回的同意投票,則該數(shù)據(jù)塊候選數(shù)據(jù)塊成為主數(shù)據(jù)塊。
在主數(shù)據(jù)塊選舉結(jié)束后,假設(shè)候選數(shù)據(jù)塊成為當(dāng)前主數(shù)據(jù)塊,如果在選舉的過程中,當(dāng)前主數(shù)據(jù)塊所在的心跳發(fā)送節(jié)點(diǎn)沒有接收到心跳接收節(jié)點(diǎn)的同意投票,則心跳發(fā)送節(jié)點(diǎn)會向心跳接收節(jié)點(diǎn)發(fā)送攜帶有數(shù)據(jù)塊組標(biāo)識心跳信息;如果在選舉過程中,心跳發(fā)送節(jié)點(diǎn)接收到了心跳接收節(jié)點(diǎn)返回的同意投票,則心跳發(fā)送節(jié)點(diǎn)可以不向心跳接收節(jié)點(diǎn)發(fā)送攜帶有數(shù)據(jù)塊組標(biāo)識心跳信息。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳信息發(fā)送裝置,如圖8所示,包括:
確定單元80,用于確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn);
發(fā)送單元81,用于在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
可選的,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組各自的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
前述圖4實(shí)施例中的心跳信息發(fā)送方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息發(fā)送裝置,通過前述對心跳信息發(fā)送方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息發(fā)送裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳發(fā)送節(jié)點(diǎn),如圖9所示,包括:處理器402,發(fā)送器401和通信總線400;其中,所述處理器402和所述發(fā)送器401通過所述通信總線400完成相互間的通信;
所述處理器402用于:確定所述心跳發(fā)送節(jié)點(diǎn)中的至少兩個主數(shù)據(jù)塊對應(yīng)的至少兩個從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn);
所述發(fā)送器401用于:在所述心跳接收節(jié)點(diǎn)為同一個節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,其中,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息為將所述至少兩個主數(shù)據(jù)塊各自的心跳信息合并后得到的心跳信息。
可選的,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述至少兩個主數(shù)據(jù)塊各自所在的數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組各自的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
進(jìn)一步,在圖9中,通信總線400可以包括任意數(shù)量的互聯(lián)的總線和橋,通信總線400將包括由處理器402代表的一個或多個處理器和存儲器404代表的存儲器的各種電路連接在一起。通信總線400還可以將諸如外圍設(shè)備、穩(wěn)壓器和功率管理電路等之類的各種其他電路連接在一起,這些都是本領(lǐng)域所公知的,因此,本文不再對其進(jìn)行進(jìn)一步描述??偩€接口405在通信總線400和發(fā)送器401之間提供接口。發(fā)送器401可以是收發(fā)機(jī),提供用于在傳輸介質(zhì)上與各種其他裝置通信的單元。
處理器402負(fù)責(zé)管理通信總線400和通常的處理,而存儲器404可以被用 于存儲處理器402在執(zhí)行操作時所使用的數(shù)據(jù)。
前述圖4實(shí)施例中的心跳信息發(fā)送方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息發(fā)送裝置,通過前述對心跳信息發(fā)送方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息發(fā)送裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳信息發(fā)送裝置,如圖10所示,包括:
確定單元101,用于確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從數(shù)據(jù)塊;
發(fā)送單元102,用于向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
可選的,所述發(fā)送單元102用于:
在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。
前述圖6實(shí)施例中的心跳信息發(fā)送方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息發(fā)送裝置,通過前述對心跳信息發(fā)送方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息發(fā)送裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳發(fā)送節(jié)點(diǎn),如圖11所示,包括:處理器602,發(fā)送器601和通信總線600;其中,所述處理器602和所述發(fā)送器601通過所述通信總線600完成相互間的通信;
所述處理器602用于:確定所述心跳發(fā)送節(jié)點(diǎn)中的當(dāng)前主數(shù)據(jù)塊對應(yīng)的從數(shù)據(jù)塊所在的心跳接收節(jié)點(diǎn),所述當(dāng)前主數(shù)據(jù)塊所在的數(shù)據(jù)塊組包括所述從數(shù)據(jù)塊;
所述發(fā)送器601用于:向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶:用于標(biāo)識所述數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識,所述數(shù)據(jù)塊組標(biāo)識用于指示所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊位于所述心跳發(fā)送節(jié)點(diǎn)。
可選的,所述發(fā)送器601用于:
在所述心跳接收節(jié)點(diǎn)為沒有對所述當(dāng)前主數(shù)據(jù)塊的選舉請求進(jìn)行響應(yīng)的節(jié)點(diǎn)時,向所述心跳接收節(jié)點(diǎn)發(fā)送所述心跳發(fā)送節(jié)點(diǎn)的心跳信息。
進(jìn)一步,在圖11中,通信總線600可以包括任意數(shù)量的互聯(lián)的總線和橋,通信總線600將包括由處理器602代表的一個或多個處理器和存儲器604代表的存儲器的各種電路連接在一起。通信總線600還可以將諸如外圍設(shè)備、穩(wěn)壓器和功率管理電路等之類的各種其他電路連接在一起,這些都是本領(lǐng)域所公知的,因此,本文不再對其進(jìn)行進(jìn)一步描述。總線接口605在通信總線600和發(fā)送器601之間提供接口。發(fā)送器601可以是收發(fā)機(jī),提供用于在傳輸介質(zhì)上與各種其他裝置通信的單元。
處理器602負(fù)責(zé)管理通信總線600和通常的處理,而存儲器604可以被用于存儲處理器602在執(zhí)行操作時所使用的數(shù)據(jù)。
前述圖6實(shí)施例中的心跳信息發(fā)送方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息發(fā)送裝置,通過前述對心跳信息發(fā)送方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息發(fā)送裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳信息處理裝置,如圖12所示,包括:
接收單元121,用于接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識;
確定單元122,用于確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊;
更新單元123,用于將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
前述圖7實(shí)施例中的心跳信息處理方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息處理裝置,通過前述對心跳信息處理方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息處理裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種心跳接收節(jié)點(diǎn),如圖13所示,包括:處理器802,接收器801和通信總線800;其中,所述處理器802和所述接收器801通過所述通信總線800完成相互間的通信;
所述接收器801用于:接收來自心跳發(fā)送節(jié)點(diǎn)的心跳信息,所述心跳發(fā)送節(jié)點(diǎn)的心跳信息攜帶用于標(biāo)識數(shù)據(jù)塊組的數(shù)據(jù)塊組標(biāo)識;
所述處理器802用于:確定所述心跳接收節(jié)點(diǎn)中位于所述數(shù)據(jù)塊組中的從數(shù)據(jù)塊;將所述從數(shù)據(jù)塊對應(yīng)的節(jié)點(diǎn)標(biāo)識更新為用于標(biāo)識所述心跳發(fā)送節(jié)點(diǎn)的標(biāo)識,所述節(jié)點(diǎn)標(biāo)識用于標(biāo)識所述數(shù)據(jù)塊組中的主數(shù)據(jù)塊所在的節(jié)點(diǎn)。
進(jìn)一步,在圖13中,通信總線800可以包括任意數(shù)量的互聯(lián)的總線和橋,通信總線800將包括由處理器802代表的一個或多個處理器和存儲器804代表的存儲器的各種電路連接在一起。通信總線800還可以將諸如外圍設(shè)備、穩(wěn)壓器和功率管理電路等之類的各種其他電路連接在一起,這些都是本領(lǐng)域所公知的,因此,本文不再對其進(jìn)行進(jìn)一步描述??偩€接口805在通信總線800和接收器801之間提供接口。接收器801可以是收發(fā)機(jī),提供用于在傳輸介質(zhì)上與各種其他裝置通信的單元。
處理器802負(fù)責(zé)管理通信總線800和通常的處理,而存儲器804可以被用于存儲處理器802在執(zhí)行操作時所使用的數(shù)據(jù)。
前述圖7實(shí)施例中的心跳信息處理方法中的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的心跳信息處理裝置,通過前述對心跳信息處理方法的詳細(xì)描 述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中心跳信息處理裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。