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

一種云存儲(chǔ)服務(wù)中元數(shù)據(jù)服務(wù)節(jié)點(diǎn)的多節(jié)點(diǎn)熱備方法_2

文檔序號(hào):8445460閱讀:來(lái)源:國(guó)知局
作為新的主機(jī)節(jié)點(diǎn)。
[0032]為使本申請(qǐng)技術(shù)方案的技術(shù)原理、特點(diǎn)以及技術(shù)效果更加清楚,以下結(jié)合具體實(shí)施例對(duì)本申請(qǐng)技術(shù)方案進(jìn)行詳細(xì)闡述。
[0033]云存儲(chǔ)系統(tǒng)是實(shí)時(shí)系統(tǒng),針對(duì)單一元數(shù)據(jù)服務(wù)節(jié)點(diǎn)而言,數(shù)據(jù)訪問(wèn)頻率非常高,因此對(duì)于正在運(yùn)行中的元數(shù)據(jù)服務(wù)節(jié)點(diǎn),接收到請(qǐng)求,正確處理完畢后,將需要更新的元數(shù)據(jù)保存在第一緩存中。待第一緩存中數(shù)據(jù)達(dá)到第一閾值或者經(jīng)過(guò)一段時(shí)間后,第一緩存中的數(shù)據(jù)才會(huì)刷新到本地硬盤(pán)。
[0034]元數(shù)據(jù)服務(wù)端接收到一個(gè)數(shù)據(jù)更新請(qǐng)求(request),主機(jī)節(jié)點(diǎn)正確處理該數(shù)據(jù)更新請(qǐng)求后,將臟數(shù)據(jù)(需要更新的元數(shù)據(jù))包裝成一個(gè)個(gè)的對(duì)象(object),形成對(duì)象列表(object_list),放入一個(gè)待辦理業(yè)務(wù)中。對(duì)于接收到的request,結(jié)合一個(gè)順序增長(zhǎng)的待辦理業(yè)務(wù)標(biāo)識(shí)序列號(hào)(Isn),組成一個(gè)遠(yuǎn)程調(diào)用請(qǐng)求(rpc_request) (rpc_request中除了包含request所有的信息,還包括一些必要附加信息,如分配給文件的存儲(chǔ)位置信息等,這些信息在主機(jī)節(jié)點(diǎn)確定后,只需要同步到備機(jī)節(jié)點(diǎn)就可以了。)也放在transact1n中。待第一緩存中數(shù)據(jù)達(dá)到一定數(shù)量或者經(jīng)過(guò)一段時(shí)間后,元數(shù)據(jù)服務(wù)節(jié)點(diǎn)觸發(fā)處理當(dāng)前待辦理業(yè)務(wù),在處理transact1n時(shí),一方面將rpc_request加入鏈表T-1ink中,另一方面將object_list中的內(nèi)容加入到相對(duì)于第一緩存更大的第二緩存中。更新cur_lsn的值為該請(qǐng)求的序列號(hào)。其中,cur_lSn表示最后一次已經(jīng)寫(xiě)入磁盤(pán)(或數(shù)據(jù)庫(kù))的lsn。
[0035]在另一個(gè)線程中,主機(jī)節(jié)點(diǎn)將T-1ink中的rpc_request以異步的方式廣播到集群中的所有備機(jī)節(jié)點(diǎn)。然后將rpc_request以異步方式保存到本地日志文件(log)中(對(duì)于傳統(tǒng)機(jī)械式硬盤(pán),日志文件在初始化時(shí)直接設(shè)置為8的倍數(shù)大小,以得到一個(gè)在磁盤(pán)中物理位置連續(xù)的文件。讀寫(xiě)時(shí)采用順序性,這樣提升訪問(wèn)磁盤(pán)的效率.然而對(duì)于新式的固態(tài)硬盤(pán)(SSD)硬盤(pán),則不用這一步。一個(gè)文件大約SM大小的樣子,寫(xiě)完一個(gè)文件后繼續(xù)生成一個(gè)新的文件)。等到一定時(shí)間(這里指的是第二緩存中有臟數(shù)據(jù)的情況下)或者第二緩存中的臟數(shù)據(jù)達(dá)到第二閾值,將觸發(fā)臟數(shù)據(jù)的刷新操作:將第二緩存中的所有臟數(shù)據(jù)刷新到本地磁盤(pán)(元數(shù)據(jù)存儲(chǔ)可以以二進(jìn)制文件的形式存放,也可以以數(shù)據(jù)庫(kù)存放),同時(shí)需要刷新到本地磁盤(pán)的還有cur_lsn。
[0036]對(duì)于備機(jī)節(jié)點(diǎn)而言,接收到主機(jī)節(jié)點(diǎn)廣播過(guò)來(lái)的rpc_request請(qǐng)求,首先將rpc_request以異步方式寫(xiě)入到本地日志文件中(寫(xiě)入的時(shí)候需要檢查lsn_id是否剛好是備機(jī)節(jié)點(diǎn)下的cur_lsn+l (備機(jī)節(jié)點(diǎn)的cur_lsn表示上一次數(shù)據(jù)同步的業(yè)務(wù)標(biāo)識(shí)),如果是,寫(xiě)入,如果不是將報(bào)錯(cuò))。然后對(duì)rpc_reqUest請(qǐng)求處理。處理后生成的臟數(shù)據(jù)同樣包裝成一個(gè)個(gè)的object,形成object_list。包裝成transact1n。同時(shí)還包含在transact1n中的還有rpc_request。在備機(jī)節(jié)點(diǎn)處理transact1n時(shí),object_list中的object加入到更大的緩存cache。當(dāng)cache中的臟數(shù)據(jù)達(dá)到一定數(shù)量或者經(jīng)過(guò)一段時(shí)間后(這里指的在cache中有臟數(shù)據(jù)的情況下),將cache中的臟數(shù)據(jù)全部flush到本地磁盤(pán)。同時(shí)flush到本地磁盤(pán)的還有cur_lsn。
[0037]針對(duì)多個(gè)元數(shù)據(jù)服務(wù)節(jié)點(diǎn),系統(tǒng)啟動(dòng)后第一件事就是多臺(tái)元數(shù)據(jù)服務(wù)節(jié)點(diǎn)中選出主機(jī)節(jié)點(diǎn)和備機(jī)節(jié)點(diǎn)。主機(jī)節(jié)點(diǎn)和備機(jī)節(jié)點(diǎn)的選舉過(guò)程不是本申請(qǐng)的重點(diǎn),可以采用現(xiàn)有技術(shù)中任意一種從多臺(tái)可互換節(jié)點(diǎn)中選舉主機(jī)節(jié)點(diǎn)的方法。例如,可以參考cur_lsn的值,將cur_lSn的值最大的元數(shù)據(jù)服務(wù)節(jié)點(diǎn)作為主機(jī)節(jié)點(diǎn),其他的作為備機(jī)節(jié)點(diǎn)。本申請(qǐng)實(shí)施例中,選出一臺(tái)主機(jī)節(jié)點(diǎn)(命名為master節(jié)點(diǎn)),其他的為備機(jī)節(jié)點(diǎn)(命名為slave節(jié)點(diǎn))。待主機(jī)節(jié)點(diǎn)和備機(jī)節(jié)點(diǎn)身份決定后,考慮可能會(huì)因?yàn)閞pc_request和臟數(shù)據(jù)同步時(shí)機(jī)不一致而導(dǎo)致本地log和元數(shù)據(jù)不一致。因此,必須根據(jù)元數(shù)據(jù)中的cur_lsn和本地log的rpc_request中的序列號(hào)比較。將本地log中所有序列號(hào)大于cur_lsn的rpc_request在本機(jī)重做一次。待集群中所有的節(jié)點(diǎn)都做完這個(gè)操作后,系統(tǒng)開(kāi)始正常工作。
[0038]如果主機(jī)節(jié)點(diǎn)發(fā)現(xiàn)(例如,主機(jī)節(jié)點(diǎn)可以通過(guò)發(fā)送請(qǐng)求到備機(jī)詢問(wèn)備機(jī)cur_lsn是多少)備機(jī)節(jié)點(diǎn)的cur_lsn比自己的最大序列號(hào)小,表明該備機(jī)節(jié)點(diǎn)的數(shù)據(jù)不同步,應(yīng)當(dāng)進(jìn)行同步處理。這時(shí)將備機(jī)節(jié)點(diǎn)從異步廣播隊(duì)列中剔除,添加到同步隊(duì)列中。通過(guò)專門(mén)的同步線程,將大于備機(jī)節(jié)點(diǎn)的cur_lsn的所有rpc_request同步到備機(jī)節(jié)點(diǎn)。如果發(fā)現(xiàn)本地log中最小的序列號(hào)大于備機(jī)節(jié)點(diǎn)的cur_lsn+l,那么報(bào)錯(cuò),這個(gè)時(shí)候需要將備機(jī)節(jié)點(diǎn)中的本地log截?cái)嘀林鳈C(jī)節(jié)點(diǎn)的序列號(hào)的地方,退出該服務(wù)進(jìn)程并由其他的進(jìn)程再將元數(shù)據(jù)服務(wù)拉起來(lái)。
[0039]如果本地log文件太多(超過(guò)1000個(gè)),需要?jiǎng)h除舊的本地log。
[0040]本申請(qǐng)實(shí)施例提供的一種云存儲(chǔ)服務(wù)中元數(shù)據(jù)服務(wù)節(jié)點(diǎn)的多節(jié)點(diǎn)熱備方法流程如圖1所示,包括如下步驟:
[0041]步驟101:在云存儲(chǔ)系統(tǒng)中設(shè)置至少3臺(tái)元數(shù)據(jù)服務(wù)節(jié)點(diǎn),從中選出一臺(tái)作為主機(jī)節(jié)點(diǎn),其他的作為為備機(jī)節(jié)點(diǎn);
[0042]步驟102:主機(jī)節(jié)點(diǎn)提供元數(shù)據(jù)更新服務(wù),并將更新后的元數(shù)據(jù)同步到備機(jī)節(jié)點(diǎn);
[0043]步驟103:當(dāng)主機(jī)節(jié)點(diǎn)發(fā)生故障時(shí),從備機(jī)節(jié)點(diǎn)中選舉出一臺(tái)作為新的主機(jī)節(jié)點(diǎn)。
[0044]根據(jù)本申請(qǐng)的另一實(shí)施例,步驟102的具體執(zhí)行過(guò)程如圖2所示,包括如下步驟:
[0045]步驟102-1:主機(jī)節(jié)點(diǎn)正確處理該數(shù)據(jù)更新請(qǐng)求后,將需要更新的元數(shù)據(jù)保存在第一緩存中;將需要更新的元數(shù)據(jù)包裝成一個(gè)個(gè)的對(duì)象,形成對(duì)象列表;將形成的對(duì)象列表放入一個(gè)待辦理業(yè)務(wù)中,生成一個(gè)遠(yuǎn)程調(diào)用請(qǐng)求也放入所述待辦理業(yè)務(wù)中,并給所述待辦理業(yè)務(wù)分配一個(gè)順序增長(zhǎng)的待辦理業(yè)務(wù)標(biāo)識(shí)。
[0046]所述遠(yuǎn)程調(diào)用請(qǐng)求中除了包含數(shù)據(jù)更新請(qǐng)求的所有信息,還包括分配給文件的存儲(chǔ)位置信息。
[0047]步驟102-2:當(dāng)?shù)谝痪彺嬷械脑獢?shù)據(jù)的量超過(guò)第一閾值或者經(jīng)過(guò)預(yù)定時(shí)間后,觸發(fā)主機(jī)節(jié)點(diǎn)處理待辦理業(yè)務(wù):將對(duì)象列表中的內(nèi)容加入到相對(duì)于第一緩存更大的第二緩存中;將遠(yuǎn)程調(diào)用請(qǐng)求加入鏈表T-1ink中,并將對(duì)象列表中的內(nèi)容加入到相對(duì)于第一緩存更大的第二緩存中;更新cur_lsn的值為待辦理業(yè)務(wù)標(biāo)識(shí);
[0048]步驟102-3:主機(jī)節(jié)點(diǎn)將T-1ink中的遠(yuǎn)程調(diào)用請(qǐng)求以異步的方式廣播到集群中的所有備機(jī)節(jié)點(diǎn);
[0049]步驟102-4:當(dāng)?shù)诙彺嬷械脑獢?shù)據(jù)的量超過(guò)第二閾值或者經(jīng)過(guò)預(yù)定時(shí)間后,將第二緩存中的所有待更新元數(shù)據(jù)以及cur_lsn刷新到本地磁盤(pán)。
[0050]根據(jù)本申請(qǐng)的另一實(shí)施例,步驟102-3進(jìn)一步包括:主機(jī)節(jié)點(diǎn)將遠(yuǎn)程調(diào)用請(qǐng)求以異步方式保存到本地日志文件中。
[0051]根據(jù)本申請(qǐng)的另一實(shí)施例,步驟102-4之后進(jìn)一步包括:
[0052]步驟102-5:備機(jī)節(jié)點(diǎn)接收到主機(jī)節(jié)點(diǎn)廣播過(guò)來(lái)的遠(yuǎn)程調(diào)用請(qǐng)求;
[0053]步驟102-6:備機(jī)節(jié)點(diǎn)對(duì)所述遠(yuǎn)程調(diào)用請(qǐng)求進(jìn)行處理,將處理后生成的需要更新的元數(shù)據(jù)將保存在第三緩存中;將需要更新的元
當(dāng)前第2頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1