分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、分布式鎖服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)第1頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一主要內(nèi)容Debby系統(tǒng)整體設(shè)計(jì)服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)與實(shí)現(xiàn)客戶端設(shè)計(jì)與實(shí)現(xiàn)容錯(cuò)日志(paxos)的設(shè)計(jì)與實(shí)現(xiàn)第2頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一系統(tǒng)的整體結(jié)構(gòu)第3頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Debby server實(shí)現(xiàn)服務(wù)器和客戶端的通信一致性的保證文件、目錄的實(shí)現(xiàn)Session的實(shí)現(xiàn)事件(Event)管理的實(shí)現(xiàn)SnapShot第4頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一服務(wù)器和客戶端的通信用戶調(diào)用客戶端庫于服務(wù)器通信通過IC

2、E遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)提供的接口connect, close, keepAlive,addEventgetData, setData, create, mkdir, remove, isDir, exists .第5頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一服務(wù)器一致性的保證調(diào)用底層Paxos協(xié)議對文件的操作時(shí),把操作提交給PaxosPaxos保證在3臺(tái)服務(wù)器上操作的一致性Paxos提供的接口sendProposal()第6頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Session 的實(shí)現(xiàn)服務(wù)器維護(hù)一個(gè)Debby管理器Session通過KeepAlive來保證每個(gè)Ke

3、epAlive會(huì)捎帶事件信息KeepAlive:客戶端等待,服務(wù)器受到請求立即返回第7頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一文件、目錄的實(shí)現(xiàn)文件、目錄放在內(nèi)存常規(guī)文件系統(tǒng)和臨時(shí)文件系統(tǒng)常規(guī)文件系統(tǒng)map MemDir 用tree.hh實(shí)現(xiàn)臨時(shí)文件系統(tǒng)map 第8頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一事件管理的實(shí)現(xiàn)Debby維護(hù)了一個(gè)事件管理器已注冊的事件和已發(fā)生的事件對于已注冊的事件,系統(tǒng)維護(hù)一個(gè)事件到handle列表的map 當(dāng)心跳發(fā)生時(shí),將發(fā)生的事件返回給訂閱的客戶第9頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一SnapShot只用lo

4、g恢復(fù)服務(wù)器帶來的問題:日志將會(huì)越來越多恢復(fù)時(shí)間越來越長 本系統(tǒng)采用snapshot(快照)機(jī)制解決此問題第10頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一SnapShot將內(nèi)存中的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)直接序列化到磁盤上Snapshot過程執(zhí)行成功后,比snapshot備份時(shí)間早的log信息不再需要,可通知paxos將log刪除。第11頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一SnapShotSnapShot方法增加了額外的復(fù)雜性實(shí)現(xiàn)SnapShot之前,crush掉的服務(wù)器只需從其他機(jī)器獲得最近的log即可進(jìn)行恢復(fù)。 實(shí)現(xiàn)SnapShot之后,需同時(shí)考慮log和sn

5、apshot信息。第12頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一SnapShotclass SnapShotprivate static string DIR_PATH;public static void serialize(MemDir& md);public MemDir& void Unserialize();第13頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Debby Client00448161第14頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一APIvoid create(const string &path, bool ephemer

6、al)void mkdir(const string &path)void remove(const string &path)bool exists(const string &path)bool isdir(const string &path)vector list(const string &path)bool lock(const string &path, bool share)void release(const string &path)string read(const string &path)void write(const string &path, const str

7、ing &content)void regcb(const string &path, EventType e, shared_ptr cb)void clearcb(const string &path)第15頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一LockServer dont support lock directly, client use ephemeral file to implement lock service.When client obtain a lock on file, create filename.lck ephemeral file. If

8、file already exists, server would throw a exception, and client returns failure.When client release the lock, simply delete the file.第16頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Lock(2)When client lose connection with server, ephemeral file is deleted, including those indicate locks, thus locks is released.To pr

9、event ambiguity, user file is not allowed to end with “”, so they are easy to be differentiated from files used to implement locks.第17頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一EventsEventTypeEventCreatedEventRemovedEventChangedEventLockChangedEventArbitraryAll event would apply on both directories and files第18頁,

10、共36頁,2022年,5月20日,10點(diǎn)13分,星期一Events(2)All callbacks are managed by client, when a callback is first registered on a event, the client registers the event on master.When a client receives a event, it invoke all callbacks registered on the event.User could cancel all callbacks on a certain path, and cli

11、ent would unregister events on server.第19頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Event(3)Client supply a Callback class to implement use callback, it contains a pure virtual function run().User implement their own class based on Callback, and implement the run() function. User could save any necessary informat

12、ion in the class.When client invoke a Callback, it create a thread to invoke the run() function.第20頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Choose ServerThere a 5 server in a debby cell, while only one of them is the master.Client use ICE multi-endpoints mechanism to find the only master. Client register the ad

13、dress of all 5 servers to ICE, and ICE will try all 5 addresses to automatically find the right server, as long as there is only one master at one time.第21頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Grace PeriodWhen the master election is going on, no service is available, and client must wait for new master to be

14、 elected.Use ICE retry mechanism to enable this function, use indicate a retry time series in which ICE will retry connection, for example, 3, 5, 10.We retry connection in 10, 30, 60第22頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Paxos Framework Implementfor fault-tolerance log單棟棟 10748200網(wǎng)絡(luò)實(shí)驗(yàn)室第23頁,共36頁,2022年,5月20日

15、,10點(diǎn)13分,星期一系統(tǒng)結(jié)構(gòu)Api for fault-tolerant logFrom Paxos made live第24頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Paxos normal-case operationclientrequetproposalacceptreply012相當(dāng)于leader客戶的兩種提交方式: 1.只能由leader接受請求并提交(我們的做法,chubby) 2.所有服務(wù)器都可以接受請求,并把這些請求轉(zhuǎn)給leader,由leader提交。(zookeeper)第25頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一Paxos消息類型V

16、iewChangeMessage(選leader)HeartBeatMessage(leader租約)PrepareMessage(成leader前的內(nèi)容同步)PrepareOKMessageProposalMessage(提議)AcceptMessage第26頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一LeaderElection何時(shí)選leader系統(tǒng)啟動(dòng)時(shí)檢測到當(dāng)前l(fā)eader宕機(jī),并已過leader的租約每次選leader都要提交一個(gè)全序的view號View號的產(chǎn)生兩種選leader的方法每臺(tái)服務(wù)器只提自己當(dāng)leader可以提別的服務(wù)器為leader(我們的實(shí)現(xiàn))第27頁,

17、共36頁,2022年,5月20日,10點(diǎn)13分,星期一PreparePhareLeader被選出后,由leader執(zhí)行,并只執(zhí)行一次保證系統(tǒng)安全的過渡Leader catch up第28頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一ProposalPhare由leader發(fā)起Proposal兩種proposal同步proposal,客戶提交決議后一直等待,直到?jīng)Q定被完成(有可以失敗)異步proposal,客戶提交決議后馬上返回,paxos執(zhí)行完決議后再通知客戶Proposal的限時(shí),重發(fā)第29頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一消息的發(fā)送與接收使用boost的

18、asio庫進(jìn)行網(wǎng)絡(luò)通訊采用多播的方式點(diǎn)對點(diǎn)的catch up使用TCP連接接受消息使用異步socket采用多線程多類型的消息傳輸?shù)?0頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一實(shí)驗(yàn)向paxos不停的提交proposal,讓paxos到保證每臺(tái)服務(wù)器數(shù)據(jù)的一致性(log)每臺(tái)服務(wù)器都記log,并且同步寫磁盤對于一個(gè)proposal有1秒來還沒答成一致,作提交失敗處理總共4組實(shí)驗(yàn),每組各進(jìn)行3次,每次5000個(gè)proposal(在單臺(tái)機(jī)器上模擬)3臺(tái) (運(yùn)行2臺(tái),運(yùn)行3臺(tái))5臺(tái) (運(yùn)行3臺(tái),運(yùn)行5臺(tái))第31頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一結(jié)果1-3臺(tái)機(jī)器機(jī)器數(shù)(3臺(tái))運(yùn)行時(shí)間提交失敗數(shù)(5000次提交)平均每秒提交數(shù)每100失敗率只運(yùn)行2臺(tái)99.133050.7次/秒0.02795.1260101.8564運(yùn)行3臺(tái)126.893038.95次/秒0.013128.1541130.1071第32頁,共36頁,2022年,5月20日,10點(diǎn)13分,星期一結(jié)果2-5臺(tái)機(jī)器機(jī)器數(shù)(5臺(tái))運(yùn)行時(shí)間提交失敗數(shù)(5000次提交)平均每秒提交數(shù)每100失敗數(shù)3臺(tái)204.4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論