欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法和裝置與流程

文檔序號(hào):12789624閱讀:856來源:國知局
分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法和裝置與流程

本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,特別涉及一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法和裝置。



背景技術(shù):

隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,分布式系統(tǒng)的應(yīng)用范圍越來越廣。由于分布式系統(tǒng)是由多個(gè)自治的計(jì)算機(jī)節(jié)點(diǎn)作為分布式節(jié)點(diǎn),通過通信網(wǎng)絡(luò)組成的機(jī)群系統(tǒng),且該分布式系統(tǒng)可以作為服務(wù)器側(cè)來為客戶端提供數(shù)據(jù),因此客戶端可以通過該分布式系統(tǒng)中的任意一個(gè)分布式節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問。而為了保證客戶端通過該分布式系統(tǒng)中的任意一個(gè)分布式節(jié)點(diǎn)訪問到的數(shù)據(jù)都是一致的,一般將該分布式系統(tǒng)中的分布式節(jié)點(diǎn)分為一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn),主節(jié)點(diǎn)不僅可以對自身存儲(chǔ)的數(shù)據(jù)進(jìn)行修改,還可以對該多個(gè)從節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改,從而保證該分布式系統(tǒng)中數(shù)據(jù)的一致性。而分布式系統(tǒng)中的主節(jié)點(diǎn)一般是通過選取得到,因此,亟需一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法。

現(xiàn)有技術(shù)中,當(dāng)該分布式系統(tǒng)創(chuàng)建完成之后,該分布式系統(tǒng)可以從包括的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)作為主節(jié)點(diǎn),并將該分布式系統(tǒng)中除該主節(jié)點(diǎn)之外的分布式節(jié)點(diǎn)作為從節(jié)點(diǎn)。之后,為了保證該主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)之間的正常通信,該主節(jié)點(diǎn)必須按照固定周期向該多個(gè)從節(jié)點(diǎn)發(fā)送心跳消息,該心跳消息用于確定該主節(jié)點(diǎn)是否正常運(yùn)行。對于該多個(gè)從節(jié)點(diǎn)中的任一從節(jié)點(diǎn),當(dāng)該從節(jié)點(diǎn)接收到該心跳消息時(shí),確定該主節(jié)點(diǎn)正常運(yùn)行。而當(dāng)該從節(jié)點(diǎn)未接收到該心跳消息時(shí),確定該主節(jié)點(diǎn)發(fā)生故障,該從節(jié)點(diǎn)可以向該分布式系統(tǒng)中除該從節(jié)點(diǎn)之外的其他分布式節(jié)點(diǎn)發(fā)送主節(jié)點(diǎn)選舉請求,該主節(jié)點(diǎn)選舉請求用于確定是否將用于發(fā)送該主節(jié)點(diǎn)選舉請求的分布式節(jié)點(diǎn)選舉為該分布式系統(tǒng)的主節(jié)點(diǎn),當(dāng)該從節(jié)點(diǎn)選舉成功時(shí),將該從節(jié)點(diǎn)確定為該分布式系統(tǒng)的主節(jié)點(diǎn),并將該分布式系統(tǒng)中該主節(jié)點(diǎn)之外的分布式節(jié)點(diǎn)作為從節(jié)點(diǎn),返回按照固定周期向該多個(gè)從節(jié)點(diǎn)發(fā)送心跳消息的步驟。

在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:由于現(xiàn)有技術(shù)中,該分布式系統(tǒng)中的主節(jié)點(diǎn)需要按照固定周期向該分布式系統(tǒng)中的所有從節(jié)點(diǎn)發(fā)送心跳信息,占用了大量的通信帶寬,浪費(fèi)資源。



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

為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法和裝置。所述技術(shù)方案如下:

第一方面,提供了一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法,所述方法包括:

第一分布式節(jié)點(diǎn)接收客戶端發(fā)送的第一數(shù)據(jù)訪問請求,所述第一數(shù)據(jù)訪問請求為通過分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求,所述第一分布式節(jié)點(diǎn)為所述分布式系統(tǒng)中任一分布式節(jié)點(diǎn);

當(dāng)所述第一分布式節(jié)點(diǎn)不為所述分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將所述第一數(shù)據(jù)訪問請求發(fā)送給所述分布式系統(tǒng)的主節(jié)點(diǎn);

當(dāng)確定所述第一數(shù)據(jù)訪問請求無法發(fā)送至所述分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求;

如果所述第一分布式節(jié)點(diǎn)選舉成功,則確定所述第一分布式節(jié)點(diǎn)為所述分布式系統(tǒng)的主節(jié)點(diǎn)。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

結(jié)合第一方面,在上述第一方面的第一種可能的實(shí)現(xiàn)方式中,所述確定所述第一分布式節(jié)點(diǎn)為所述分布式系統(tǒng)的主節(jié)點(diǎn)之后,還包括:

所述第一分布式節(jié)點(diǎn)向所述客戶端發(fā)送主節(jié)點(diǎn)更新消息,所述主節(jié)點(diǎn)更新消息中攜帶所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí),使所述客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

第一分布式節(jié)點(diǎn)可以向客戶端發(fā)送主節(jié)點(diǎn)更新消息,使該客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為第一分布式節(jié)點(diǎn)的標(biāo)識(shí),則該客戶端在下次需要訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),可以基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),直接向主節(jié)點(diǎn)發(fā)送數(shù)據(jù)訪問請求,提高了該分布式系統(tǒng)的工作效率。

結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在上述第一方面的第二種可能的實(shí)現(xiàn)方式中,所述確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求之后,還包括:

如果所述第一分布式節(jié)點(diǎn)選舉失敗,則向所述客戶端發(fā)送故障提示信息,所述故障提示信息用于提示所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障。

當(dāng)該第一分布式節(jié)點(diǎn)選舉失敗不能被確定為主節(jié)點(diǎn)時(shí),可以向客戶端發(fā)送故障提示信息,使客戶端可以確定該分布式系統(tǒng)主節(jié)點(diǎn)故障,不再向該主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,提高了該分布式系統(tǒng)的工作效率。

結(jié)合第一方面至第一方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第一方面的第三種可能的實(shí)現(xiàn)方式中,所述基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將所述第一數(shù)據(jù)訪問請求發(fā)送給所述分布式系統(tǒng)的主節(jié)點(diǎn)之前,還包括:

當(dāng)所述分布式系統(tǒng)創(chuàng)建完成時(shí),所述第一分布式節(jié)點(diǎn)選取所述分布式系統(tǒng)的主節(jié)點(diǎn);

當(dāng)所述分布式系統(tǒng)的主節(jié)點(diǎn)選取成功時(shí),存儲(chǔ)所述分布式系統(tǒng)的主節(jié)點(diǎn)標(biāo)識(shí)。

需要說明的是,該分布式系統(tǒng)創(chuàng)建完成時(shí)沒有主節(jié)點(diǎn),且此時(shí)該分布式系統(tǒng)中的所有的分布式節(jié)點(diǎn)都沒有存儲(chǔ)該分布式系統(tǒng)的數(shù)據(jù),因此第一分布式節(jié)點(diǎn)可以選取該分布式系統(tǒng)的主節(jié)點(diǎn)。

第二方面,提供了一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法,所述方法包括:

客戶端從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

所述客戶端將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn);

所述客戶端向所述第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,使所述第一分布式節(jié)點(diǎn)在確定不為所述分布式系統(tǒng)的主節(jié)點(diǎn)且基于所述第一數(shù)據(jù)訪問請求確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障時(shí)重新選取所述分布式系統(tǒng)的主節(jié)點(diǎn),所述第一數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求。

該客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)請求來訪問該分布式系統(tǒng)中的數(shù)據(jù),使該第一分布式節(jié)點(diǎn)在確定主節(jié)點(diǎn)故障時(shí)重新選取該分布式系統(tǒng)的主節(jié)點(diǎn),該分布式系統(tǒng)可以在主節(jié)點(diǎn)故障時(shí)迅速產(chǎn)生一個(gè)主節(jié)點(diǎn),無需通過心跳消息來確定主節(jié)點(diǎn)發(fā)生故障,提高了該分布式系統(tǒng)的工作效率。

結(jié)合第二方面,在上述第二方面的第一種可能的實(shí)現(xiàn)方式中,所述客戶端向所述第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求之后,還包括:

所述客戶端接收所述第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息,所述主節(jié)點(diǎn)更新消息中攜帶所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí);

所述客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

客戶端可以接收主節(jié)點(diǎn)更新消息,并基于該主節(jié)點(diǎn)更新消息,更新該客戶端存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),當(dāng)該客戶端在下次需要訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),可以直接向主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,提高了該分布式系統(tǒng)的工作效率。

結(jié)合第二方面,在上述第二方面的第二種可能的實(shí)現(xiàn)方式中,所述客戶端向所述第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求之后,還包括:

當(dāng)所述客戶端接收到所述第一分布式節(jié)點(diǎn)發(fā)送的故障提示信息時(shí),確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障;

所述客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并返回執(zhí)行所述從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)的步驟。

當(dāng)客戶端收到故障提示信息時(shí),說明該第一分布式節(jié)點(diǎn)無法向主節(jié)點(diǎn)發(fā)送該第一數(shù)據(jù)訪問請求且該第一分布式節(jié)點(diǎn)不能被確定為主節(jié)點(diǎn)時(shí),因此該客戶端還可以重新隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),并通過該分布式節(jié)點(diǎn)來訪問該分布式系統(tǒng)中的數(shù)據(jù),提高了該客戶端訪問該分布式系統(tǒng)中數(shù)據(jù)的成功率,也提高了該分布式系統(tǒng)的工作效率。

結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式,在上述第二方面的第三種可能的實(shí)現(xiàn)方式中,所述客戶端從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)之前,還包括:

所述客戶端基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)送所述第一數(shù)據(jù)訪問請求,使所述分布式系統(tǒng)的主節(jié)點(diǎn)返回?cái)?shù)據(jù)訪問響應(yīng);

當(dāng)所述客戶端未接收到所述分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng)時(shí), 執(zhí)行所述從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)的步驟。

當(dāng)該客戶端直接向主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,且未接收到該主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng),該客戶端可以從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),并通過該分布式節(jié)點(diǎn)來訪問該分布式系統(tǒng)中的數(shù)據(jù)。

結(jié)合第二方面至第二方面的第三種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第二方面的第四種可能的實(shí)現(xiàn)方式中,所述客戶端從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)之前,還包括:

當(dāng)所述分布式系統(tǒng)創(chuàng)建完成時(shí),所述客戶端從所述分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

所述客戶端將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn);

所述客戶端向所述第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,使所述第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求,所述第二數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求;

當(dāng)所述客戶端接收到所述第二分布式節(jié)點(diǎn)發(fā)送的第二數(shù)據(jù)訪問響應(yīng)時(shí),將所述第二分布式節(jié)點(diǎn)的標(biāo)識(shí)作為主節(jié)點(diǎn)標(biāo)識(shí)進(jìn)行存儲(chǔ)。

需要說明的是,當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí)沒有主節(jié)點(diǎn),且此時(shí)該分布式系統(tǒng)中的所有的分布式節(jié)點(diǎn)都沒有存儲(chǔ)該分布式系統(tǒng)的數(shù)據(jù),因此客戶端可以隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn),向該第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,使該第二分布式節(jié)點(diǎn)在確定主節(jié)點(diǎn)故障時(shí)選取該分布式系統(tǒng)的主節(jié)點(diǎn),提高了該分布式系統(tǒng)的工作效率。

第三方面,提供了一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置,所述裝置包括:接收模塊,用于接收客戶端發(fā)送的第一數(shù)據(jù)訪問請求,所述第一數(shù)據(jù)訪問請求為通過分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求;

第一發(fā)送模塊,用于當(dāng)不為所述分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將所述第一數(shù)據(jù)訪問請求發(fā)送給所述分布式系統(tǒng)的主節(jié)點(diǎn);

選舉模塊,用于當(dāng)確定所述第一數(shù)據(jù)訪問請求無法發(fā)送至所述分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求;

確定模塊,用于如果選舉成功,則確定所述第一分布式節(jié)點(diǎn)為所述分布式系統(tǒng)的主節(jié)點(diǎn),所述第一分布式節(jié)點(diǎn)為所述分布式系統(tǒng)中任一分布式節(jié)點(diǎn)。

結(jié)合第三方面,在上述第三方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

第二發(fā)送模塊,用于向所述客戶端發(fā)送主節(jié)點(diǎn)更新消息,所述主節(jié)點(diǎn)更新消息中攜帶所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí),使所述客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在上述第三方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

第三發(fā)送模塊,用于如果選舉失敗,則向所述客戶端發(fā)送故障提示信息,所述故障提示信息用于提示所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障。

結(jié)合第三方面至第三方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第三方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

選取模塊,用于當(dāng)所述分布式系統(tǒng)創(chuàng)建完成時(shí),選取所述分布式系統(tǒng)的主節(jié)點(diǎn);

存儲(chǔ)模塊,用于當(dāng)所述分布式系統(tǒng)的主節(jié)點(diǎn)選取成功時(shí),存儲(chǔ)所述分布式系統(tǒng)的主節(jié)點(diǎn)標(biāo)識(shí)。

第四方面,提供了一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置,所述裝置包括:

第一選擇模塊,用于從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

第一確定模塊,用于將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn);

第一發(fā)送模塊,用于向所述第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,使所述第一分布式節(jié)點(diǎn)在確定不為所述分布式系統(tǒng)的主節(jié)點(diǎn)且基于所述第一數(shù)據(jù)訪問請求確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障時(shí)重新選取所述分布式系統(tǒng)的主節(jié)點(diǎn),所述第一數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求。

結(jié)合第四方面,在上述第四方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

接收模塊,用于接收所述第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息,所述主節(jié)點(diǎn)更新消息中攜帶所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí);

替換模塊,用于將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為所述第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

結(jié)合第四方面,在上述第四方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

第二確定模塊,用于接收到所述第一分布式節(jié)點(diǎn)發(fā)送的故障提示信息時(shí),確定所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障;

刪除模塊,用于將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并返回從所述從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)。

結(jié)合第四方面至第四方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第四方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

第二發(fā)送模塊,用于基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向所述分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)送所述第一數(shù)據(jù)訪問請求,使所述分布式系統(tǒng)的主節(jié)點(diǎn)返回?cái)?shù)據(jù)訪問響應(yīng);

第二選擇模塊,用于當(dāng)未接收到所述分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng)時(shí),返回從所述從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)。

結(jié)合第四方面至第四方面的第三種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第四方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還用于:

第三選擇模塊,用于當(dāng)所述分布式系統(tǒng)創(chuàng)建完成時(shí),從所述分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

第三確定模塊,用于將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn);

第三發(fā)送模塊,用于向所述第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,使所述第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求,所述第二數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求;

存儲(chǔ)模塊,用于當(dāng)接收到所述第二分布式節(jié)點(diǎn)發(fā)送的第二數(shù)據(jù)訪問響應(yīng)時(shí),將所述第二分布式節(jié)點(diǎn)的標(biāo)識(shí)作為主節(jié)點(diǎn)標(biāo)識(shí)進(jìn)行存儲(chǔ)。

本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式 系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)架構(gòu)圖;

圖2是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法流程圖;

圖3是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖;

圖4是本發(fā)明實(shí)施例提供的另一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖;

圖5是本發(fā)明實(shí)施例提供的又一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖;

圖6是本發(fā)明實(shí)施例提供的又一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖;

圖7是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置示意圖;

圖8是本發(fā)明實(shí)施例提供的另一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置示意圖。

具體實(shí)施方式

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

在對本發(fā)明實(shí)施例進(jìn)行詳細(xì)地解釋說明之前,先對本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)進(jìn)行介紹。如圖1所示,該系統(tǒng)包括多個(gè)分布式節(jié)點(diǎn)和客戶端,該多個(gè)分布式節(jié)點(diǎn)之間通過網(wǎng)絡(luò)連接,該多個(gè)分布式節(jié)點(diǎn)可以是計(jì)算機(jī),且該多個(gè)分布式節(jié)點(diǎn)可以組成一個(gè)分布式系統(tǒng),該分布式系統(tǒng)可以作為服務(wù)器側(cè)來為該客戶端提供數(shù)據(jù),該客戶端可以安裝在該多個(gè)分布式節(jié)點(diǎn)中的任一個(gè)分布式節(jié)點(diǎn)上,也可以安裝于該多個(gè)分布式節(jié)點(diǎn)之外的計(jì)算機(jī)上,并且該計(jì)算機(jī)可以與該多個(gè)分布式節(jié)點(diǎn)通過網(wǎng)絡(luò)連接。其中,該多個(gè)分布式節(jié)點(diǎn)包括一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn),當(dāng)客戶端訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),該客戶端可以向主節(jié)點(diǎn)或者從節(jié)點(diǎn)發(fā)送數(shù)據(jù)訪問請求,而該客戶端發(fā)送的數(shù)據(jù)訪問請求有的可以直接通過從節(jié)點(diǎn)響應(yīng),而有的需要通過主節(jié)點(diǎn)才能響應(yīng),比如,讀請求可以直接通過從節(jié) 點(diǎn)響應(yīng),而寫請求需要通過主節(jié)點(diǎn)才能響應(yīng)。對于只有主節(jié)點(diǎn)才可以響應(yīng)的數(shù)據(jù)訪問請求,該客戶端可以直接基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向該主節(jié)點(diǎn)發(fā)送數(shù)據(jù)訪問請求,當(dāng)主節(jié)點(diǎn)接收到該數(shù)據(jù)訪問請求時(shí),該主節(jié)點(diǎn)響應(yīng)該數(shù)據(jù)訪問請求。當(dāng)然該客戶端也可以在該多個(gè)分布式節(jié)點(diǎn)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),并向該選取的分布式節(jié)點(diǎn)發(fā)送該數(shù)據(jù)訪問請求,當(dāng)該分布式節(jié)點(diǎn)接收到該數(shù)據(jù)訪問請求且該分布式節(jié)點(diǎn)不為主節(jié)點(diǎn)時(shí),該分布式節(jié)點(diǎn)將該數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),使主節(jié)點(diǎn)可以響應(yīng)該數(shù)據(jù)訪問請求。當(dāng)該分布式節(jié)點(diǎn)確定無法將該數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn)時(shí),該分布式節(jié)點(diǎn)確定該主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,當(dāng)該分布式節(jié)點(diǎn)選舉成功被確定為主節(jié)點(diǎn)時(shí),該分布式節(jié)點(diǎn)可以響應(yīng)該數(shù)據(jù)訪問請求。

圖2是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法流程圖,參見圖2,該方法包括:

步驟201:客戶端從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,該第一數(shù)據(jù)訪問請求為通過該分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求。

為了保持該分布式系統(tǒng)中數(shù)據(jù)的一致性,該分布式系統(tǒng)中只有主節(jié)點(diǎn)可以響應(yīng)該第一數(shù)據(jù)訪問請求,而當(dāng)從節(jié)點(diǎn)接收到該第一數(shù)據(jù)訪問請求時(shí),可以將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),因此,該客戶端可以從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),并將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求。

其中,客戶端為該分布式系統(tǒng)對應(yīng)的客戶端,也即是,該分布式系統(tǒng)作為服務(wù)器側(cè)來為該客戶端提供數(shù)據(jù),該客戶端可以向該分布式系統(tǒng)中的任一個(gè)分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,進(jìn)而訪問該分布式系統(tǒng)中的數(shù)據(jù)。

需要說明的是,該第一數(shù)據(jù)訪問請求可以是寫請求,也可以是只有主節(jié)點(diǎn)才能響應(yīng)的讀請求,當(dāng)然,也可以為只有主節(jié)點(diǎn)才能響應(yīng)的其他訪問請求,本發(fā)明實(shí)施例對此不作具體限定。

還需要說明的是,由于該第一分布式節(jié)點(diǎn)是該客戶端從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中隨機(jī)選取的,因此,該第一分布式節(jié)點(diǎn)可以是該分布式系統(tǒng)中 的任一個(gè)節(jié)點(diǎn)。

進(jìn)一步地,由于該分布式系統(tǒng)中只有主節(jié)點(diǎn)可以響應(yīng)該第一數(shù)據(jù)訪問請求,且該客戶端可以存儲(chǔ)該分布式系統(tǒng)中的主節(jié)點(diǎn)標(biāo)識(shí),因此當(dāng)該客戶端需要訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),可以基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)送該第一數(shù)據(jù)訪問請求,使該分布式系統(tǒng)的主節(jié)點(diǎn)返回?cái)?shù)據(jù)訪問響應(yīng),當(dāng)該客戶端在第一響應(yīng)時(shí)長內(nèi)未接收到該分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng)時(shí),該客戶端可以從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求。

其中,主節(jié)點(diǎn)標(biāo)識(shí)用于唯一標(biāo)識(shí)該分布式系統(tǒng)的主節(jié)點(diǎn),該主節(jié)點(diǎn)標(biāo)識(shí)是當(dāng)前作為該分布式系統(tǒng)主節(jié)點(diǎn)的分布式節(jié)點(diǎn)的標(biāo)識(shí),該分布式節(jié)點(diǎn)的標(biāo)識(shí)用于唯一標(biāo)識(shí)該分布式節(jié)點(diǎn),該分布式節(jié)點(diǎn)的標(biāo)識(shí)可以是該分布式節(jié)點(diǎn)的互聯(lián)網(wǎng)協(xié)議(英文:Internet Protocol;簡稱:IP)地址、物理地址等,本發(fā)明實(shí)施例對此不作具體限定。

需要說明的是,由于該主節(jié)點(diǎn)響應(yīng)該第一數(shù)據(jù)訪問請求時(shí),可能響應(yīng)成功,也可能響應(yīng)失敗,當(dāng)該主節(jié)點(diǎn)響應(yīng)該第一數(shù)據(jù)訪問請求成功時(shí),返回訪問成功響應(yīng),當(dāng)該主節(jié)點(diǎn)響應(yīng)該第一數(shù)據(jù)訪問請求失敗時(shí),返回訪問失敗響應(yīng),也即是,該數(shù)據(jù)訪問響應(yīng)可以包括訪問成功響應(yīng)或訪問失敗響應(yīng)。

另外,第一響應(yīng)時(shí)長可以為該客戶端事先設(shè)置,比如,第一響應(yīng)時(shí)長可以為200ms(毫秒)、300ms等等,本發(fā)明實(shí)施例對此不做具體限定。

需要說明的是,當(dāng)該客戶端在該第一響應(yīng)時(shí)長內(nèi)未接收到該分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng)時(shí),可能該主節(jié)點(diǎn)發(fā)生故障,因此該客戶端可以從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,進(jìn)而通過第一分布式節(jié)點(diǎn),重新選擇該分布式系統(tǒng)的主節(jié)點(diǎn),并訪問該分布式系統(tǒng)中的數(shù)據(jù),提高了訪問該分布式系統(tǒng)中數(shù)據(jù)的成功率,提高了該分布式系統(tǒng)的穩(wěn)定性。

進(jìn)一步地,由于主節(jié)點(diǎn)接收到寫請求時(shí),需要將寫請求中的數(shù)據(jù)同步到該分布式系統(tǒng)的從節(jié)點(diǎn)中,因此,當(dāng)該客戶端向該主節(jié)點(diǎn)發(fā)送的第一數(shù)據(jù)訪問請求為寫請求時(shí),如果該客戶端在該第一響應(yīng)時(shí)長內(nèi)接收到的訪問失敗響應(yīng)時(shí), 該客戶端可以確定該主節(jié)點(diǎn)發(fā)生故障,進(jìn)而可以從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求。

可選地,當(dāng)該客戶端向該主節(jié)點(diǎn)發(fā)送的第一數(shù)據(jù)訪問請求為寫請求時(shí),如果該客戶端在該第一響應(yīng)時(shí)長內(nèi)接收到的訪問失敗響應(yīng),該客戶端可以確定已完成數(shù)據(jù)訪問操作,進(jìn)而結(jié)束操作。

需要說明的是,當(dāng)?shù)谝粩?shù)據(jù)訪問請求為寫請求時(shí),該主節(jié)點(diǎn)接收該第一數(shù)據(jù)訪問請求之后,需要將該寫請求中的數(shù)據(jù)同步到該分布式系統(tǒng)的從節(jié)點(diǎn)中,如果該主節(jié)點(diǎn)將該寫請求中的數(shù)據(jù)成功同步到的從節(jié)點(diǎn)個(gè)數(shù)大于該分布式系統(tǒng)中分布式節(jié)點(diǎn)個(gè)數(shù)的1/2,則返回訪問成功響應(yīng),如果該主節(jié)點(diǎn)將該寫請求中的數(shù)據(jù)成功同步到的從節(jié)點(diǎn)個(gè)數(shù)小于或等于該分布式系統(tǒng)中分布式節(jié)點(diǎn)個(gè)數(shù)的1/2,則返回訪問失敗響應(yīng)。而當(dāng)該主節(jié)點(diǎn)將該寫請求中的數(shù)據(jù)成功同步到的從節(jié)點(diǎn)個(gè)數(shù)小于或等于該分布式系統(tǒng)中分布式節(jié)點(diǎn)個(gè)數(shù)的1/2時(shí),可能該分布式系統(tǒng)中的部分分布式節(jié)點(diǎn)被隔離或者發(fā)生故障,此時(shí)雖然該主節(jié)點(diǎn)正常工作,但該主節(jié)點(diǎn)已經(jīng)不能向該分布式系統(tǒng)中大多數(shù)分布式節(jié)點(diǎn)寫入數(shù)據(jù),也即是,該主節(jié)點(diǎn)不能再及時(shí)更新該分布式系統(tǒng)中的數(shù)據(jù),也不能再保持該分布式系統(tǒng)中數(shù)據(jù)的一致性,因此,當(dāng)該客戶端在該第一響應(yīng)時(shí)長內(nèi)接收到的訪問失敗響應(yīng)時(shí),該客戶端可以確定該主節(jié)點(diǎn)故障。

更進(jìn)一步地,在該分布式系統(tǒng)剛創(chuàng)建完成時(shí),該分布式系統(tǒng)中沒有主節(jié)點(diǎn),因此,在該分布式系統(tǒng)創(chuàng)建完成時(shí),該客戶端可以從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn),該客戶端向該第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,當(dāng)該第二分布式節(jié)點(diǎn)接收到客戶端發(fā)送的第二數(shù)據(jù)訪問請求時(shí),第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求,該第二數(shù)據(jù)訪問請求為通過該分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求,當(dāng)該客戶端接收到該第二分布式節(jié)點(diǎn)發(fā)送的第二數(shù)據(jù)訪問響應(yīng)時(shí),將該第二分布式節(jié)點(diǎn)的標(biāo)識(shí)作為主節(jié)點(diǎn)標(biāo)識(shí)進(jìn)行存儲(chǔ)。

需要說明的是,當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),該分布式系統(tǒng)沒有主節(jié)點(diǎn),該客戶端可以通過上述方法選取該分布式系統(tǒng)的主節(jié)點(diǎn);或者,由于在該分布式系統(tǒng)創(chuàng)建完成且該分布式系統(tǒng)中沒有存儲(chǔ)數(shù)據(jù)時(shí),該客戶端可以從該分布式系統(tǒng)中隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),并將選擇的分布式節(jié)點(diǎn)確定為該分布式系統(tǒng) 的主節(jié)點(diǎn)。

還需要說明的是,該第二分布式節(jié)點(diǎn)是由該客戶端隨機(jī)選取的,因此該第二分布式節(jié)點(diǎn)也可以是該分布式系統(tǒng)中的任一個(gè)分布式節(jié)點(diǎn)。

另外,第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求時(shí),該分布式系統(tǒng)中每個(gè)分布式節(jié)點(diǎn)都可以基于該主節(jié)點(diǎn)選舉請求,進(jìn)行主節(jié)點(diǎn)的選擇,從而確定第二分布式節(jié)點(diǎn)是否能夠成功選舉成為該分布式系統(tǒng)的主節(jié)點(diǎn),且基于該主節(jié)點(diǎn)選舉請求,進(jìn)行主節(jié)點(diǎn)的選擇的方法可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對此不做具體限定。

步驟202:第一分布式節(jié)點(diǎn)接收客戶端發(fā)送的第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),第一分布式節(jié)點(diǎn)基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將該第一數(shù)據(jù)訪問請求發(fā)送給該分布式系統(tǒng)的主節(jié)點(diǎn)。

由于第一分布式節(jié)點(diǎn)可能是主節(jié)點(diǎn)也可能不是主節(jié)點(diǎn),而只有在該第一分布式節(jié)點(diǎn)為主節(jié)點(diǎn)時(shí)才能響應(yīng)該第一數(shù)據(jù)訪問請求,因此,當(dāng)?shù)谝环植际焦?jié)點(diǎn)接收到客戶端發(fā)送的第一數(shù)據(jù)訪問請求時(shí),可以判斷該第一分布式節(jié)點(diǎn)是否為該分布式系統(tǒng)的主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)不為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),第一分布式節(jié)點(diǎn)基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將該第一數(shù)據(jù)訪問請求發(fā)送給該分布式系統(tǒng)的主節(jié)點(diǎn)。

其中,該第一分布式節(jié)點(diǎn)判斷該第一分布式節(jié)點(diǎn)是否為主節(jié)點(diǎn)的操作可以為:該第一分布式節(jié)點(diǎn)將第一分布式節(jié)點(diǎn)的標(biāo)識(shí)和該主節(jié)點(diǎn)標(biāo)識(shí)比較,如果該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)和該主節(jié)點(diǎn)標(biāo)識(shí)相同,則該第一分布式節(jié)點(diǎn)為主節(jié)點(diǎn),如果該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)和該主節(jié)點(diǎn)標(biāo)識(shí)不同,則該第一分布式系統(tǒng)不為主節(jié)點(diǎn)。

另外,當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),該分布式系統(tǒng)沒有主節(jié)點(diǎn),則該第一分布式節(jié)點(diǎn)沒有存儲(chǔ)主節(jié)點(diǎn)標(biāo)識(shí),因此該第一分布式節(jié)點(diǎn)可以選取該分布式系統(tǒng)的主節(jié)點(diǎn),當(dāng)該分布式系統(tǒng)的主節(jié)點(diǎn)選取成功時(shí),存儲(chǔ)該分布式系統(tǒng)的主節(jié)點(diǎn)標(biāo)識(shí),之后,當(dāng)?shù)谝环植际焦?jié)點(diǎn)接收到第一數(shù)據(jù)訪問請求時(shí),可以直接通過存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將第一數(shù)據(jù)訪問請求發(fā)送給該分布式系統(tǒng)的主節(jié)點(diǎn),提高了該分布式系統(tǒng)的工作效率。

例如,當(dāng)?shù)谝环植际焦?jié)點(diǎn)接收到第一數(shù)據(jù)訪問請求時(shí),該第一分布式節(jié)點(diǎn)存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)為123.139.49.201,該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)為 123.139.43.201,該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)和存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)不同,因此該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),則該第一分布式節(jié)點(diǎn)基于存儲(chǔ)的該主節(jié)點(diǎn)標(biāo)識(shí),將該第一數(shù)據(jù)訪問請求發(fā)送給該主節(jié)點(diǎn)。

進(jìn)一步地,當(dāng)該第一分布式節(jié)點(diǎn)接收到客戶端發(fā)送的第一數(shù)據(jù)訪問請求,且該第一分布式節(jié)點(diǎn)為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以響應(yīng)該第一數(shù)據(jù)訪問請求,并向該客戶端發(fā)送數(shù)據(jù)訪問響應(yīng)。

步驟203:當(dāng)?shù)谝环植际焦?jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求。

由于該分布式系統(tǒng)中需要存在一個(gè)主節(jié)點(diǎn)來保持該分布式系統(tǒng)中數(shù)據(jù)的一致性,并響應(yīng)客戶端的第一數(shù)據(jù)訪問請求,因此,當(dāng)?shù)谝环植际焦?jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定該分布式系統(tǒng)中的主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,使該分布式系統(tǒng)產(chǎn)生主節(jié)點(diǎn)。

其中,該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn)的操作可以為:該第一分布式節(jié)點(diǎn)將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第二響應(yīng)時(shí)長內(nèi)沒有收到該主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)訪問響應(yīng)時(shí),確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn)。

需要說明的是,第二響應(yīng)時(shí)長可以為該客戶端事先設(shè)置,且該第二響應(yīng)時(shí)長小于第一響應(yīng)時(shí)長,比如,當(dāng)?shù)谝豁憫?yīng)時(shí)長為300ms時(shí),第二響應(yīng)時(shí)長可以為200ms,當(dāng)?shù)谝豁憫?yīng)時(shí)長為200ms時(shí),第二響應(yīng)時(shí)長可以為100ms,本發(fā)明實(shí)施例對此不做具體限定。

進(jìn)一步地,當(dāng)該第一分布式節(jié)點(diǎn)在該第二響應(yīng)時(shí)長內(nèi)接收到該主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)訪問響應(yīng)時(shí),將該數(shù)據(jù)訪問響應(yīng)發(fā)送給客戶端。具體地,當(dāng)該第一分布式節(jié)點(diǎn)向該主節(jié)點(diǎn)發(fā)送的第一數(shù)據(jù)訪問請求為寫請求,且第一分布式節(jié)點(diǎn)在該第二響應(yīng)時(shí)長內(nèi)接收到的該主節(jié)點(diǎn)發(fā)送的訪問失敗響應(yīng)時(shí),第一分布式節(jié)點(diǎn)可以將該訪問失敗響應(yīng)發(fā)送給該客戶端。進(jìn)而當(dāng)客戶端在第一響應(yīng)時(shí)長接收到該第一分布式節(jié)點(diǎn)發(fā)送的訪問失敗響應(yīng)時(shí),該客戶端可以確定該主節(jié)點(diǎn)故障,此時(shí)該客戶端可以重新從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),并返回步驟201。

進(jìn)一步地,當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn),并確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障時(shí),可以向該客戶端發(fā)送第一選舉提示信息,該第一選舉提示信息用于提示客戶端該主節(jié)點(diǎn)發(fā)生故障,并且第一分布式節(jié)點(diǎn)正在發(fā)起主節(jié)點(diǎn)選舉請求。

另外,當(dāng)該第一分布式節(jié)點(diǎn)向該主節(jié)點(diǎn)發(fā)送的第一數(shù)據(jù)訪問請求為寫請求,且第一分布式節(jié)點(diǎn)在該第二響應(yīng)時(shí)長內(nèi)接收到的該主節(jié)點(diǎn)發(fā)送的訪問失敗響應(yīng)時(shí),此時(shí),第一分布式節(jié)點(diǎn)可以不將該訪問失敗響應(yīng)發(fā)送給客戶端,而該第一分布式節(jié)點(diǎn)可以確定該主節(jié)點(diǎn)故障,向該客戶端發(fā)送第二選舉提示信息,該第二選舉提示信息用于提示客戶端該第一數(shù)據(jù)訪問請求響應(yīng)失敗。

需要說明的是,當(dāng)客戶端向該第一分布式節(jié)點(diǎn)發(fā)送該第一數(shù)據(jù)訪問請求之后,如果該客戶端在該第一響應(yīng)時(shí)長內(nèi)既沒有接收到該第一分布式節(jié)點(diǎn)發(fā)送的該第一選舉提示信息或第二選舉提示信息,也沒有接收到該第一分布式節(jié)點(diǎn)發(fā)送的該數(shù)據(jù)訪問響應(yīng)時(shí),可以確定該第一分布式節(jié)點(diǎn)故障,并確定該第一數(shù)據(jù)訪問請求無法發(fā)送給該主節(jié)點(diǎn),此時(shí)該客戶端可以重新從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),并返回步驟201。

另外,當(dāng)該第一分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求時(shí),該第一分布式節(jié)點(diǎn)向該分布式系統(tǒng)中包括該第一分布式節(jié)點(diǎn)在內(nèi)的所有分布式節(jié)點(diǎn)發(fā)送主節(jié)點(diǎn)選舉請求,并在該主節(jié)點(diǎn)選舉請求中攜帶該第一分布式節(jié)點(diǎn)的分布式節(jié)標(biāo)識(shí);對于所有分布式節(jié)點(diǎn)中的每一個(gè)分布式節(jié)點(diǎn),該分布式節(jié)點(diǎn)基于該主節(jié)點(diǎn)選舉請求確定是否響應(yīng)該主節(jié)點(diǎn)選舉請求,當(dāng)該分布式節(jié)點(diǎn)確定響應(yīng)該主節(jié)點(diǎn)選舉請求時(shí),該分布式節(jié)點(diǎn)存儲(chǔ)該第一分布式節(jié)點(diǎn)的分布式節(jié)的點(diǎn)標(biāo)識(shí),并向該第一分布式節(jié)點(diǎn)發(fā)送選舉響應(yīng)消息;當(dāng)該第一節(jié)點(diǎn)接收到的選舉響應(yīng)消息個(gè)數(shù)大于該分布式系統(tǒng)中的分布式節(jié)點(diǎn)個(gè)數(shù)的1/2時(shí),該第一分布式節(jié)點(diǎn)選舉成功。

需要說明的是,對于所有分布式節(jié)點(diǎn)中的每一個(gè)分布式節(jié)點(diǎn),該分布式節(jié)點(diǎn)基于該主節(jié)點(diǎn)選舉請求確定是否響應(yīng)該主節(jié)點(diǎn)選舉請求的操作可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例不再一一贅述。

還需要說明的是,由于在該分布式系統(tǒng)中可能同時(shí)有多個(gè)客戶端向該分布式系統(tǒng)中的多個(gè)分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,因此在步驟203中,可能會(huì)同時(shí)有多個(gè)分布式節(jié)點(diǎn)確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求,進(jìn)而從該多個(gè)分布式節(jié)點(diǎn)中選取該分布式系統(tǒng)的主節(jié)點(diǎn),提高了該 分布式系統(tǒng)選舉主節(jié)點(diǎn)的效率。當(dāng)然,為了確??倳?huì)有多個(gè)分布式節(jié)點(diǎn)可以在確定主節(jié)點(diǎn)故障時(shí)發(fā)起主節(jié)點(diǎn)選舉請求,提高該分布式系統(tǒng)選舉主節(jié)點(diǎn)的效率,當(dāng)該客戶端需要訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),該客戶端還可以隨機(jī)選取多個(gè)分布式節(jié)點(diǎn),同時(shí)向該多個(gè)分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,從而使該多個(gè)分布式節(jié)點(diǎn)在確定該分布式系統(tǒng)中主節(jié)點(diǎn)故障時(shí),同時(shí)發(fā)起主節(jié)點(diǎn)選舉請求,從而提高該分布式系統(tǒng)選舉主節(jié)點(diǎn)的效率,但這樣可能會(huì)占用部分帶寬,增加該分布式系統(tǒng)的負(fù)擔(dān)。

例如,第一分布式節(jié)點(diǎn)在向主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求之前,預(yù)設(shè)第二響應(yīng)時(shí)長為100ms,當(dāng)該第一分布式節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求且該第一分布式節(jié)點(diǎn)在該100ms內(nèi)沒有接收到數(shù)據(jù)訪問響應(yīng)時(shí),該第一分布式節(jié)點(diǎn)確定該主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求。

步驟204:如果該第一分布式節(jié)點(diǎn)選舉成功,則確定該第一分布式節(jié)點(diǎn)為該分布式系統(tǒng)的主節(jié)點(diǎn),第一分布式節(jié)點(diǎn)向該客戶端發(fā)送主節(jié)點(diǎn)更新消息,該主節(jié)點(diǎn)更新消息中攜帶該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

當(dāng)該第一分布式節(jié)點(diǎn)選舉成功時(shí),可以將該第一分布式節(jié)點(diǎn)確定為該分布式系統(tǒng)的主節(jié)點(diǎn),此時(shí),該第一分布式系統(tǒng)可以向該客戶端發(fā)送主節(jié)點(diǎn)更新消息,使該客戶端更新該客戶端存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),當(dāng)然,將該第一分布式節(jié)點(diǎn)確定為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)還可以響應(yīng)該第一數(shù)據(jù)訪問請求,并向客戶端發(fā)送數(shù)據(jù)訪問響應(yīng)。

其中,該主節(jié)點(diǎn)更新消息可以是該第一分布式節(jié)點(diǎn)在被確定為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),將該主節(jié)點(diǎn)更新消息發(fā)送給該客戶端,也可以是該第一分布式節(jié)點(diǎn)響應(yīng)該第一數(shù)據(jù)訪問請求,向該客戶端發(fā)送該數(shù)據(jù)訪問響應(yīng)時(shí),將該主節(jié)點(diǎn)更新消息和該數(shù)據(jù)訪問響應(yīng)同時(shí)發(fā)送給該客戶端,本發(fā)明實(shí)施例對主節(jié)點(diǎn)更新消息發(fā)送的時(shí)機(jī)不作限定。

需要說明的是,當(dāng)該第一分布式節(jié)點(diǎn)將該主節(jié)點(diǎn)更新消息和該數(shù)據(jù)訪問響應(yīng)同時(shí)發(fā)送給該客戶端時(shí),該第一分布式節(jié)點(diǎn)可以將該主節(jié)點(diǎn)更新消息攜帶在該數(shù)據(jù)訪問響應(yīng)中,也可以同時(shí)將該主節(jié)點(diǎn)更新消息與該數(shù)據(jù)訪問響應(yīng)分別發(fā)送給該客戶端,本發(fā)明實(shí)施例對此不作具體限定。

另外,該分布式系統(tǒng)的主節(jié)點(diǎn)響應(yīng)第一數(shù)據(jù)訪問請求的方法可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對此不做詳細(xì)闡述。

進(jìn)一步地,如果該第一分布式節(jié)點(diǎn)選舉失敗,該第一分布式節(jié)點(diǎn)向該客戶端發(fā)送故障提示信息,該故障提示信息用于提示該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,當(dāng)該客戶端接收到該第一分布式節(jié)點(diǎn)發(fā)送的故障提示信息時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,該客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),返回步驟201。

需要說明的是,由于該分布式系統(tǒng)的主節(jié)點(diǎn)故障,該第一分布式節(jié)點(diǎn)無法將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),并且當(dāng)該第一分布式節(jié)點(diǎn)選舉失敗時(shí),該第一分布式節(jié)點(diǎn)也不能被確定為該分布式系統(tǒng)的主節(jié)點(diǎn),因此當(dāng)該第一分布式節(jié)點(diǎn)選舉失敗時(shí),第一分布式節(jié)點(diǎn)可以向該客戶端發(fā)送故障提示信息,使該客戶端在接收到該故障提示信息時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,該客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并重新從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),返回步驟201。

步驟205:客戶端接收該第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息,將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)。

當(dāng)該客戶端接收該第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息時(shí),將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí),在下一次該客戶端需要訪問該分布式系統(tǒng)中的數(shù)據(jù)時(shí),可以基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),直接向主節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,提高了客戶端訪問該分布式系統(tǒng)中的數(shù)據(jù)的效率。

需要說明的是,在步驟204中,該第一分布式節(jié)點(diǎn)可以向該客戶端只發(fā)送主節(jié)點(diǎn)更新消息,也可以將該主節(jié)點(diǎn)更新消息攜帶在數(shù)據(jù)訪問響應(yīng)中,因此,當(dāng)該客戶端接收到該第一分布式節(jié)點(diǎn)發(fā)送的數(shù)據(jù)訪問響應(yīng)時(shí),如果該數(shù)據(jù)訪問響應(yīng)中攜帶有主節(jié)點(diǎn)更新消息,該客戶端可以將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)。

例如,當(dāng)客戶端接收該第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息時(shí),從該主節(jié)點(diǎn)更新消息中獲取到第一分布式節(jié)點(diǎn)的標(biāo)識(shí)為123.139.49.201,因此,該客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)123.139.49.201。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)故障時(shí),該客戶端還可以從該分布式系統(tǒng)中再隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)來訪問該分布式系統(tǒng)中的數(shù)據(jù),提高了該分布式 系統(tǒng)的工作效率;當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),第一分布式節(jié)點(diǎn)還可以將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),通過該主節(jié)點(diǎn)可以保證該分布式系統(tǒng)中數(shù)據(jù)的一致性;當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

圖3是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖,參見圖3,該裝置包括接收模塊301、第一發(fā)送模塊302、選舉模塊303、確定模塊304。

接收模塊301,用于執(zhí)行上述步驟202所述的接收客戶端發(fā)送的第一數(shù)據(jù)訪問請求的操作;

第一發(fā)送模塊302,用于執(zhí)行上述步驟202所述的將該第一數(shù)據(jù)訪問請求發(fā)送給該分布式系統(tǒng)的主節(jié)點(diǎn)的操作;

選舉模塊303,用于執(zhí)行上述步驟203所述的操作;

確定模塊304,用于執(zhí)行上述步驟204所述的如果選舉成功,則確定第一分布式節(jié)點(diǎn)為該分布式系統(tǒng)的主節(jié)點(diǎn)的操作。

可選地,該裝置還包括:

第二發(fā)送模塊,用于執(zhí)行上述步驟204所述的向該客戶端發(fā)送主節(jié)點(diǎn)更新消息,該主節(jié)點(diǎn)更新消息中攜帶該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)的操作。

可選地,該裝置還包括:

第三發(fā)送模塊,用于執(zhí)行上述步驟203之后,如果選舉失敗,則向該客戶端發(fā)送故障提示信息,該故障提示信息用于提示該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障的操作。

可選地,該裝置還包括:

選取模塊,用于執(zhí)行上述步驟201之前,當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),選取該分布式系統(tǒng)的主節(jié)點(diǎn);

存儲(chǔ)模塊,用于執(zhí)行上述步驟201之前,當(dāng)該分布式系統(tǒng)的主節(jié)點(diǎn)選取成功時(shí),存儲(chǔ)該分布式系統(tǒng)的主節(jié)點(diǎn)標(biāo)識(shí)。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

圖4本發(fā)明實(shí)施例提供的另一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置框圖,參見圖4,該裝置包括第一選擇模塊401、第一確定模塊402和第一發(fā)送模塊403。

第一選擇模塊401,用于執(zhí)行上述步驟201所述的從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)的操作;

第一確定模塊402,用于執(zhí)行上述步驟201所述的將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn)的操作;

第一發(fā)送模塊403,用于執(zhí)行上述步驟201所述的向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求的操作。

可選地,參見圖5,該裝置還包括接收模塊404和替換模塊405:

接收模塊404,用于執(zhí)行上述步驟205所述的接收該第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息的操作;

替換模塊405,用于執(zhí)行上述步驟205所述的將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí)操作。

可選地,參見圖6,該裝置還包括第二確定模塊406和刪除模塊407。

第二確定模塊406,用于執(zhí)行上述步驟204之后,接收到該第一分布式節(jié)點(diǎn)發(fā)送的故障提示信息時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障;

刪除模塊407,用于執(zhí)行上述步驟204之后,將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并返回從該從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)。

可選地,該裝置還包括:

第二發(fā)送模塊,用于基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)送該第一數(shù)據(jù)訪問請求,使該分布式系統(tǒng)的主節(jié)點(diǎn)返回?cái)?shù)據(jù)訪問響應(yīng);

第二選擇模塊,用于當(dāng)未接收到該分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng)時(shí),返回從該從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn)。

可選地,該裝置還包括:

第三選擇模塊,用于當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

第三確定模塊,用于將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn);

第三發(fā)送模塊,用于向該第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,使該第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求,該第二數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求;

存儲(chǔ)模塊,用于當(dāng)接收到該第二分布式節(jié)點(diǎn)發(fā)送的第二數(shù)據(jù)訪問響應(yīng)時(shí),將該第二分布式節(jié)點(diǎn)的標(biāo)識(shí)作為主節(jié)點(diǎn)標(biāo)識(shí)進(jìn)行存儲(chǔ)。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

圖7是本發(fā)明實(shí)施例提供的一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置示意圖,參見圖7,該裝置包括:發(fā)射機(jī)701、接收機(jī)702、處理器703、存儲(chǔ)器704、通信總線705,包括:

存儲(chǔ)器704,用于存儲(chǔ)消息和數(shù)據(jù);

接收機(jī)702,用于接收客戶端發(fā)送的第一數(shù)據(jù)訪問請求,該第一數(shù)據(jù)訪問請求為通過分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求,該第一分布式節(jié)點(diǎn)為該分布式系統(tǒng)中任一分布式節(jié)點(diǎn),其中,上述接收模塊301可以包含于該接收機(jī)702中;

發(fā)射機(jī)701,用于當(dāng)該第一分布式節(jié)點(diǎn)不為該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),將該第一數(shù)據(jù)訪問請求發(fā)送給該分布式系統(tǒng)的主節(jié)點(diǎn),上 述第一發(fā)送模塊302可以包含于該發(fā)射機(jī)701中;

處理器703,用于:

當(dāng)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至該分布式系統(tǒng)的主節(jié)點(diǎn)時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,并發(fā)起主節(jié)點(diǎn)選舉請求;

如果該第一分布式節(jié)點(diǎn)選舉成功,則確定該第一分布式節(jié)點(diǎn)為該分布式系統(tǒng)的主節(jié)點(diǎn);

其中,上述選舉模塊303和確定模塊304可以包含于該處理器703中。

可選地,

發(fā)射機(jī)701用于向該客戶端發(fā)送主節(jié)點(diǎn)更新消息,該主節(jié)點(diǎn)更新消息中攜帶該第一分布式節(jié)點(diǎn)的標(biāo)識(shí),使該客戶端將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí),其中,上述第二發(fā)送模塊可以包含于該發(fā)射機(jī)701中。

可選地,

發(fā)射機(jī)701用于如果選舉失敗,則向該客戶端發(fā)送故障提示信息,該故障提示信息用于提示該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障,其中,上述第三發(fā)送模塊可以包含于該發(fā)射機(jī)701中。

可選地,

處理器703,還用于當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),選取該分布式系統(tǒng)的主節(jié)點(diǎn),其中,上述選取模塊可以包含于該處理器703中;

存儲(chǔ)器704,還用于當(dāng)該分布式系統(tǒng)的主節(jié)點(diǎn)選取成功時(shí),存儲(chǔ)該分布式系統(tǒng)的主節(jié)點(diǎn)標(biāo)識(shí),其中,上述存儲(chǔ)模塊可以包含于該存儲(chǔ)器704中。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

圖8是本發(fā)明實(shí)施例提供的另一種分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置示意圖, 參見圖8,該裝置包括:發(fā)射機(jī)801、接收機(jī)802、處理器803、存儲(chǔ)器804、通信總線805,包括:

存儲(chǔ)器804,用于存儲(chǔ)消息和數(shù)據(jù);

處理器803,用于:

從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

將選擇的分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn);

其中,上述第一選擇模塊401和第一確定模塊402可以包含于該處理器803中;

發(fā)射機(jī)801,用于向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,使該第一分布式節(jié)點(diǎn)在確定不為該分布式系統(tǒng)的主節(jié)點(diǎn)且基于該第一數(shù)據(jù)訪問請求確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障時(shí)重新選取該分布式系統(tǒng)的主節(jié)點(diǎn),該第一數(shù)據(jù)訪問請求為通過該分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求,其中,上述第一發(fā)送模塊403可以包含于該發(fā)射機(jī)801中。

可選地,

接收機(jī)802,用于接收該第一分布式節(jié)點(diǎn)發(fā)送的主節(jié)點(diǎn)更新消息,該主節(jié)點(diǎn)更新消息中攜帶該第一分布式節(jié)點(diǎn)的標(biāo)識(shí),其中,上述接收模塊404可以包含于該接收機(jī)802中;

處理器803,用于將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)替換為該第一分布式節(jié)點(diǎn)的標(biāo)識(shí),其中上述替換模塊405可以包含于該處理器803中。

可選地,處理器803還用于:

接收到該第一分布式節(jié)點(diǎn)發(fā)送的故障提示信息時(shí),確定該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)生故障;

將存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí)刪除,并返回從該從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

其中,上述第二確定模塊406和刪除模塊407可以包含于該處理器803中。

可選地,

發(fā)射機(jī)801,還用于基于存儲(chǔ)的主節(jié)點(diǎn)標(biāo)識(shí),向該分布式系統(tǒng)的主節(jié)點(diǎn)發(fā)送該第一數(shù)據(jù)訪問請求,使該分布式系統(tǒng)的主節(jié)點(diǎn)返回?cái)?shù)據(jù)訪問響應(yīng),其中上述第二發(fā)送模塊可以包含于該發(fā)射機(jī)801中;

處理器803,還用于當(dāng)未接收到該分布式系統(tǒng)的主節(jié)點(diǎn)返回的數(shù)據(jù)訪問響應(yīng) 時(shí),返回從該從分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn),其中,上述第二選擇模塊可以包含于該處理器803中。

可選地,處理器803還用于:

當(dāng)該分布式系統(tǒng)創(chuàng)建完成時(shí),從該分布式系統(tǒng)的多個(gè)分布式節(jié)點(diǎn)中,隨機(jī)選擇一個(gè)分布式節(jié)點(diǎn);

將選擇的分布式節(jié)點(diǎn)確定為第二分布式節(jié)點(diǎn);

其中,上述第三選擇模塊和第三確定模塊可以包含于該處理器803中;

發(fā)射機(jī)801,還用于向該第二分布式節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)訪問請求,使該第二分布式節(jié)點(diǎn)發(fā)起主節(jié)點(diǎn)選舉請求,該第二數(shù)據(jù)訪問請求為通過所述分布式系統(tǒng)的主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)訪問的請求,其中,上述第三發(fā)送模塊可以包含于該發(fā)射機(jī)801中;

處理器803,還用于當(dāng)該客戶端接收到該第二分布式節(jié)點(diǎn)發(fā)送的第二數(shù)據(jù)訪問響應(yīng)時(shí),將該第二分布式節(jié)點(diǎn)的標(biāo)識(shí)作為主節(jié)點(diǎn)標(biāo)識(shí)進(jìn)行存儲(chǔ),其中,上述存儲(chǔ)模塊可以包含于該處理器803中。

在本發(fā)明實(shí)施例中,客戶端可以從該分布式系統(tǒng)中隨機(jī)選取一個(gè)分布式節(jié)點(diǎn),將該分布式節(jié)點(diǎn)確定為第一分布式節(jié)點(diǎn),并向該第一分布式節(jié)點(diǎn)發(fā)送第一數(shù)據(jù)訪問請求,當(dāng)該第一分布式節(jié)點(diǎn)不為主節(jié)點(diǎn),將該第一數(shù)據(jù)訪問請求發(fā)送給主節(jié)點(diǎn),當(dāng)該第一分布式節(jié)點(diǎn)確定該第一數(shù)據(jù)訪問請求無法發(fā)送至主節(jié)點(diǎn)時(shí),該第一分布式節(jié)點(diǎn)可以確定主節(jié)點(diǎn)故障,并發(fā)起主節(jié)點(diǎn)選舉請求,從而不需要依靠心跳消息來判斷該主節(jié)點(diǎn)是否故障,因此該分布式系統(tǒng)中的主節(jié)點(diǎn)不需要按照固定周期向該分布式系統(tǒng)中的其他分布式節(jié)點(diǎn)發(fā)送心跳消息,極大地節(jié)省了通信帶寬,進(jìn)一步提高了該分布式系統(tǒng)的工作效率。

需要說明的是:上述實(shí)施例提供的分布式系統(tǒng)中主節(jié)點(diǎn)的選取裝置在選取主節(jié)點(diǎn)時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的分布式系統(tǒng)中主節(jié)點(diǎn)的選取方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。

本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。

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

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
湛江市| 读书| 睢宁县| 纳雍县| 神木县| 中卫市| 井研县| 嘉善县| 锦屏县| 锡林郭勒盟| 金沙县| 沾益县| 陆河县| 乌兰浩特市| 西峡县| 玉溪市| 天台县| 融水| 隆安县| 云安县| 洪湖市| 乌海市| 磴口县| 白山市| 定远县| 安多县| 海盐县| 徐水县| 澎湖县| 岑巩县| 长岭县| 沙洋县| 天气| 即墨市| 乡城县| 庆城县| 淄博市| 福贡县| 灵武市| 江陵县| 台东县|