版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
分布式鎖服務(wù)的設(shè)計與實現(xiàn)第一頁,共三十六頁,編輯于2023年,星期日主要內(nèi)容Debby系統(tǒng)整體設(shè)計服務(wù)器端設(shè)計與實現(xiàn)數(shù)據(jù)存儲的設(shè)計與實現(xiàn)客戶端設(shè)計與實現(xiàn)容錯日志(paxos)的設(shè)計與實現(xiàn)第二頁,共三十六頁,編輯于2023年,星期日系統(tǒng)的整體結(jié)構(gòu)第三頁,共三十六頁,編輯于2023年,星期日Debbyserver實現(xiàn)服務(wù)器和客戶端的通信一致性的保證文件、目錄的實現(xiàn)Session的實現(xiàn)事件(Event)管理的實現(xiàn)SnapShot第四頁,共三十六頁,編輯于2023年,星期日服務(wù)器和客戶端的通信用戶調(diào)用客戶端庫于服務(wù)器通信通過ICE遠(yuǎn)程過程調(diào)用實現(xiàn)提供的接口
connect,close,keepAlive,addEvent
getData,setData,create,mkdir,remove,isDir,exists...第五頁,共三十六頁,編輯于2023年,星期日服務(wù)器一致性的保證調(diào)用底層Paxos協(xié)議對文件的操作時,把操作提交給PaxosPaxos保證在3臺服務(wù)器上操作的一致性Paxos提供的接口
sendProposal()?第六頁,共三十六頁,編輯于2023年,星期日Session的實現(xiàn)服務(wù)器維護(hù)一個Debby管理器Session通過KeepAlive來保證每個KeepAlive會捎帶事件信息KeepAlive:客戶端等待,服務(wù)器受到請求立即返回第七頁,共三十六頁,編輯于2023年,星期日文件、目錄的實現(xiàn)文件、目錄放在內(nèi)存常規(guī)文件系統(tǒng)和臨時文件系統(tǒng)常規(guī)文件系統(tǒng)
map<path,debbyfile>
MemDir<INode>用tree.hh實現(xiàn)臨時文件系統(tǒng)
map<handle,pathlist>第八頁,共三十六頁,編輯于2023年,星期日事件管理的實現(xiàn)Debby維護(hù)了一個事件管理器已注冊的事件和已發(fā)生的事件對于已注冊的事件,系統(tǒng)維護(hù)一個事件到handle列表的map當(dāng)心跳發(fā)生時,將發(fā)生的事件返回給訂閱的客戶第九頁,共三十六頁,編輯于2023年,星期日SnapShot只用log恢復(fù)服務(wù)器帶來的問題:日志將會越來越多恢復(fù)時間越來越長本系統(tǒng)采用snapshot(快照)機(jī)制解決此問題第十頁,共三十六頁,編輯于2023年,星期日SnapShot將內(nèi)存中的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)直接序列化到磁盤上Snapshot過程執(zhí)行成功后,比snapshot備份時間早的log信息不再需要,可通知paxos將log刪除。第十一頁,共三十六頁,編輯于2023年,星期日SnapShotSnapShot方法增加了額外的復(fù)雜性實現(xiàn)SnapShot之前,crush掉的服務(wù)器只需從其他機(jī)器獲得最近的log即可進(jìn)行恢復(fù)。
實現(xiàn)SnapShot之后,需同時考慮log和snapshot信息。第十二頁,共三十六頁,編輯于2023年,星期日SnapShotclassSnapShot{privatestaticstringDIR_PATH;publicstaticvoidserialize(MemDir&md);publicMemDir&voidUnserialize();}第十三頁,共三十六頁,編輯于2023年,星期日DebbyClient00448161第十四頁,共三十六頁,編輯于2023年,星期日APIvoidcreate(conststring&path,boolephemeral)voidmkdir(conststring&path)voidremove(conststring&path)boolexists(conststring&path)boolisdir(conststring&path)vector<string>list(conststring&path)boollock(conststring&path,boolshare)voidrelease(conststring&path)stringread(conststring&path)voidwrite(conststring&path,conststring&content)voidregcb(conststring&path,EventTypee,shared_ptr<Callback>cb)voidclearcb(conststring&path)第十五頁,共三十六頁,編輯于2023年,星期日LockServerdon’tsupportlockdirectly,clientuseephemeralfiletoimplementlockservice.Whenclientobtainalockonfile,createfilename.lck~ephemeralfile.Iffilealreadyexists,serverwouldthrowaexception,andclientreturnsfailure.Whenclientreleasethelock,simplydeletethefile.第十六頁,共三十六頁,編輯于2023年,星期日Lock(2)Whenclientloseconnectionwithserver,ephemeralfileisdeleted,includingthoseindicatelocks,thuslocksisreleased.Topreventambiguity,userfileisnotallowedtoendwith“~”,sotheyareeasytobedifferentiatedfromfilesusedtoimplementlocks.第十七頁,共三十六頁,編輯于2023年,星期日EventsEventTypeEventCreatedEventRemovedEventChangedEventLockChangedEventArbitraryAlleventwouldapplyonbothdirectoriesandfiles第十八頁,共三十六頁,編輯于2023年,星期日Events(2)Allcallbacksaremanagedbyclient,whenacallbackisfirstregisteredonaevent,theclientregisterstheeventonmaster.Whenaclientreceivesaevent,itinvokeallcallbacksregisteredontheevent.Usercouldcancelallcallbacksonacertainpath,andclientwouldunregistereventsonserver.第十九頁,共三十六頁,編輯于2023年,星期日Event(3)ClientsupplyaCallbackclasstoimplementusecallback,itcontainsapurevirtualfunctionrun().UserimplementtheirownclassbasedonCallback,andimplementtherun()function.Usercouldsaveanynecessaryinformationintheclass.WhenclientinvokeaCallback,itcreateathreadtoinvoketherun()function.第二十頁,共三十六頁,編輯于2023年,星期日ChooseServerTherea5serverinadebbycell,whileonlyoneofthemisthemaster.ClientuseICEmulti-endpointsmechanismtofindtheonlymaster.Clientregistertheaddressofall5serverstoICE,andICEwilltryall5addressestoautomaticallyfindtherightserver,aslongasthereisonlyonemasteratonetime.第二十一頁,共三十六頁,編輯于2023年,星期日GracePeriodWhenthemasterelectionisgoingon,noserviceisavailable,andclientmustwaitfornewmastertobeelected.UseICEretrymechanismtoenablethisfunction,useindicatearetrytimeseriesinwhichICEwillretryconnection,forexample,[3,5,10].Weretryconnectionin[10,30,60]第二十二頁,共三十六頁,編輯于2023年,星期日PaxosFrameworkImplement
forfault-tolerancelog單棟棟10748200網(wǎng)絡(luò)實驗室第二十三頁,共三十六頁,編輯于2023年,星期日系統(tǒng)結(jié)構(gòu)Apiforfault-tolerantlogFromPaxosmadelive第二十四頁,共三十六頁,編輯于2023年,星期日Paxosnormal-caseoperationclientrequetproposalacceptreply012相當(dāng)于leader客戶的兩種提交方式:1.只能由leader接受請求并提交(我們的做法,chubby)2.所有服務(wù)器都可以接受請求,并把這些請求轉(zhuǎn)給leader,由leader提交。(zookeeper)第二十五頁,共三十六頁,編輯于2023年,星期日Paxos消息類型ViewChangeMessage(選leader)HeartBeatMessage(leader租約)PrepareMessage(成leader前的內(nèi)容同步)PrepareOKMessageProposalMessage(提議)AcceptMessage第二十六頁,共三十六頁,編輯于2023年,星期日LeaderElection何時選leader系統(tǒng)啟動時檢測到當(dāng)前l(fā)eader宕機(jī),并已過leader的租約每次選leader都要提交一個全序的view號View號的產(chǎn)生兩種選leader的方法每臺服務(wù)器只提自己當(dāng)leader可以提別的服務(wù)器為leader(我們的實現(xiàn))第二十七頁,共三十六頁,編輯于2023年,星期日PreparePhareLeader被選出后,由leader執(zhí)行,并只執(zhí)行一次保證系統(tǒng)安全的過渡Leadercatchup第二十八頁,共三十六頁,編輯于2023年,星期日ProposalPhare由leader發(fā)起Proposal兩種proposal同步proposal,客戶提交決議后一直等待,直到?jīng)Q定被完成(有可以失敗)異步proposal,客戶提交決議后馬上返回,paxos執(zhí)行完決議后再通知客戶Proposal的限時,重發(fā)第二十九頁,共三十六頁,編輯于2023年,星期日消息的發(fā)送與接收使用boost的asio庫進(jìn)行網(wǎng)絡(luò)通訊采用多播的方式點對點的catchup使用TCP連接接受消息使用異步socket采用多線程多類型的消息傳輸?shù)谌?,共三十六頁,編輯?023年,星期日實驗向paxos不停的提交proposal,讓paxos到保證每臺服務(wù)器數(shù)據(jù)的一致性(log)每臺服務(wù)器都記log,并且同步寫磁盤對于一個proposal有1秒來還沒答成一致,作提交失敗處理總共4組實驗,每組各進(jìn)行3次,每次5000個proposal(在單臺機(jī)器上模擬)3臺(運(yùn)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025水工班組班勞務(wù)分包合同
- 2024年特色店鋪銷售合同3篇
- 2025公司辦公桌椅購買合同范本
- 牙科正畸維持期常見問題及解決方法
- 2024年生物科技研究合作與技術(shù)轉(zhuǎn)讓合同
- 加強(qiáng)70后養(yǎng)老經(jīng)濟(jì)保障體系的策略
- 完善文化數(shù)字化治理體系實施方案
- 2024年甲方與乙方關(guān)于共享汽車項目運(yùn)營合同
- 商丘醫(yī)學(xué)高等??茖W(xué)校《教育技術(shù)與應(yīng)用理論教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 商丘工學(xué)院《織物產(chǎn)品結(jié)構(gòu)與工藝(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度共享辦公空間租賃合同2篇
- 國家電投《新能源電站單位千瓦造價標(biāo)準(zhǔn)值(2024)》
- 小兒全麻患者術(shù)后護(hù)理
- 山東省臨沂市2023-2024學(xué)年高二上學(xué)期期末考試政治試題 含答案
- 黑龍江省哈爾濱市2023-2024學(xué)年八年級上學(xué)期語文期末模擬考試試卷(含答案)
- 2024至2030年不銹鋼水龍頭項目投資價值分析報告
- 風(fēng)險投資協(xié)議書范本標(biāo)準(zhǔn)版
- 2024年百科知識競賽題庫及答案(共三套)
- JGJ-T490-2021鋼框架內(nèi)填墻板結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)
- 2024年移動解決方案經(jīng)理認(rèn)證考試題庫大全-中(多選題)
- 無線測溫設(shè)備施工方案
評論
0/150
提交評論