




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Swift致性的實現(xiàn) (第八章)CONTENTS 目錄PART 01 temp 目錄PART 02 async_pending目錄PART 03 致性服務PART 04作業(yè)IIIIHQndQG 漢智厲PART 0 1 temp目錄存儲節(jié)點的目錄彥 rootswift233: /srv/node/sda2rootswift233:/# cd srvroot0swift233:/srv# cd noderootswift233:/srv/node# cd sda2 rootswift233:/srv/node/sda2# Is -1 total 4drwxr-xr-x14swiftswift114
2、drwxr-xr-x drwxr-xr-x2 swift swift77 swift swift6944096Apr Apr Apr Apr Apr181824172818:3618:4713:2517:5617:35accounts async_pe ndiyg contain ers objects tmpH1g4IJyrr 粽百qo 世兇-lunoe 呂恒呆)他 umluoulla- dumluoBrx)他-llaigH:pqo朕皿dEltmp目錄accounts/srv/node/sda2async_pendingcontainersobjects/timestamp.datatmp目
3、錄截圖待上傳文件列表tmpPrhxOQ tmpslJArltmpPrhxOQ tmpslJArltmpPrhxOQ tmpslJArltmpPrhxOQ tmpslJArltmpPrhxOQ tmpslJArltmp目錄截圖上傳開始30秒時,tmp目錄情況rootSwift:/srv/node/sda/tmp# I tmpOqAqyS tmpgCvzyd tmpLFGphP tmp7VQelf tmpiATpNj tmpMOdSRk rootSwift:/srv/node/sda/tmp# I tmpOqAqyS tmpgCvzyd tmpLFGphP tmp7VQelf tmpiATpNj
4、tmpMOd5Rk rootSwift:/srv/node/sda/tmp# I tmpOqAqyS tmpgCvzyd tmpLFGphP tmp7VQelf tmpiATpNj tmpMOdSRk rootSwift:/srv/node/sda/tmp# I tmp0qAqy5 tmpgCvzyd tmpLFGphP tmp7VQelf tmpiATpNj tmpMOdSRk rootSwift:/srv/node/sda/tmp# I tmpOqAqyS tmpgCvzyd tmpLFGphP tmp7VQelf tmpiATpNj tmpM0d5Rktmp0錄截圖上傳開始50秒時 tm
5、p目錄情況, 文件已經(jīng)逐漸在 轉移jrootSwtft:/srv/node/sda/tnpff I tmpOqAqyS tmpgCvzyd tmpLFCphP :root電Swtf t:/srv/nodc/sda/tmplS I ItnpeqAqyS tmpgCvzyd tnpLFCphP rootSwtft:/srv/node/sda/tmpff I tnpOqAqyS tnpgCvzyd tnpLFCphP rootSwift:/srv/node/sda/tmp I 1 tnpOqAqyS tnpgCvzyd tmpLFCphP rootSwift:/srv/node/sda/tnp 1
6、! tmpOqAqyS tmpgCvzyd tmpLFCphP rootSwtft:/srv/node/sda/tmpff tmpOqAqyS tmpgCvzyd rootSwtf t: / srv/node/sdd/tr)p tmpOqAqyS tmpgCvzyd rootSwlft:/srv/node/sda/tnpff tmpOqAqyS tmpgCvzyd rootSwlft:/srv/node/sda/tnp tmpOqAqyS rootSwtft:/srv/node/sda/tmpff tnpOqAqyS rootSwtft:/srv/node/sda/tmpff tnpeqAqy
7、S rootSwtft:/srv/node/sda/tmp#I tmpOqAqyS IrootlSwtft:/ srv/node/sda/trip# tmpOqAqyS rootSwtft:/srv/node/sdd/tnpw tnpOqAqyS rootSwtft:/srv/node/sda/tnp# root電Swift:/srv/node/sda/tnpfftmpPrhx&Q tmpslJArltmpslJArltnpslJArltmpslJArltmpslJArlPART 0 2 async_pending目錄 async_pending目錄對象的PUT/DELETE操作,首先完成對對
8、象的操作,然后通知容器進行更新容器的PUT/DELETE操作,首先完成對容器的操作,然后通知賬號進行更新Async_pendingII_containersI IIIprefix1I IIIprefix2II_objectsIIprefixaIIprefiexb對象操作時更新容器對象的PUT/DELETE操作,首先完成對對象的操作,然后通知容器進行更新圈里是要寫入容器里的內容那么對象操作如何獲得有關容器副本的地址信息?對象操作時更新容器I從request.headers里找到信息Proxy Server在和對象副本節(jié)點建立連接時,添加一個容器副本地址內容到 請求頭部這個對應關系不是固定的,是每
9、次處理請求時,動態(tài)生成的partition, containerNodes = self.app.container_ring.get_nodes(account, container)*for container in containers:nheaders = dict(req.headers.iteritems() nheadersX-Container-Host = %(ip)s:%(port)s % container nheadersX-Container-Partition = container_partition nheadersX-Container-Device = co
10、ntainerdevice對象操作流程對象操作流程對象操作時更新容器更改對象后,對容器的修改請求,如果沒有成功,就把需要完成的更 改寫入本地asyn c_pe ndin g目錄I然后由更新器(Updaters )來完成op: op, account: account, container: container, obj: obj, headers: headers_out在asyn c_pe ndi ng目錄下的更新記錄沒有包含容器副本的信息: host z partition z container device對象操作時更新容器I在pending目錄下的更新記錄沒有記錄容器副本的信息: h
11、ost z partition z cont ainer device為什么不記錄這些信息呢?I所以在后面的Upda ter進行同步時,如何找到應該對哪個容器副本進行更新呢?Updaters更新完容器后,還需要更新a cco unt里有關對象的 新的呢?PART 03 一致性服務一致性服務I Swift是一個分布式系統(tǒng),所以必須處理集群的各種臨時故障,比如 電源故障、系統(tǒng)部件故障,保證系統(tǒng)狀態(tài)的一致性I Swift有3類服務用來保證存系統(tǒng)的可靠性、一致性、可用性Auditors:Object ReplicatorsContainer ReplicatorsAccount Replicators
12、Object AuditorsContaine r Audit orsAccount AuditorsObject UpdatersContainer UpdatersAccount Reapers更新器(Updaters )更新服務的目的n即使在出現(xiàn)故障的時候還能保證系統(tǒng)數(shù)據(jù)的完整性I更新器的任務n完成放在async_pending目錄下的未完成的對容器、賬號內容的更新任務更新器(Updaters)I每個存儲節(jié)點上有兩個updaters分別完成放在async_pending 下的對容器和賬號內容同步任務n object_updater;n con tai ner_updater在asn c_
13、pe ndi ng目錄下的操作記錄中沒有容器副本的地址信息, 那么如何知道應該更新哪個容器副本呢?op: op, account: account, container: container, obj: obj, headers: headers_out答案和對象操作不同,updater在進行容器同步更新時,會首先通過容器的環(huán)獲取容器副本的地址,然后會向容器的3個副本同時發(fā)出更新請求更新器(Updaters)I如果在進行同步的過程中發(fā)現(xiàn)asnc_pending下的文件出了故障,那么就需要進行隔離問題:當同步文 件出了故障后, 如何才能保證容 器得到更新呢?答案進一步來講,因為同一個對象有3個副
14、本,只要有一個副本成功更新 了一個容器副本,那么Replicator就會發(fā)現(xiàn)容器的3個副本的內容不一 致,就會通過同步更新其余的容器副本審計器(Auditors)審計器的目的n提供多一層的一致性保護審計器的任務n定期對磁盤進行掃描發(fā)現(xiàn)磁盤壞點或文件系統(tǒng)問題對對象、容器、帳號數(shù)據(jù)完 整性的影響n如果發(fā)現(xiàn)有壞點,就把有問題的虛節(jié)點進行隔離,那么復制器就會從另外副本 生成一個新的副本n如果發(fā)現(xiàn)解決不了的一致性問題,比如不屬于任何容器的對象,就把該問題寫 入log對象審計器(object_auditor)對虛節(jié)點上的每一個對象進行檢查n從元數(shù)據(jù)上獲取對象的名字,如果出錯,就需要進行隔離n然后通過元數(shù)據(jù)
15、說明的字節(jié)數(shù)檢查對象的大小,如果不一致,就需要隔離n檢查元數(shù)據(jù)etag值是否和對象的MD5值相同,如果不同,就需要隔離I如果發(fā)現(xiàn)對象需要隔離,就把需要隔離的對象移到隔離目錄(quarantined)下容器審計器(container_auditor)對該存儲節(jié)點上的每一個容器進行檢查n獲取容器數(shù)據(jù)庫的ContainerBrokern通過ContaienrBroker獲取該容器的信息n如果獲取不到就記錄失敗account, container, created_at, put_timestamp, delete_timestamp, object_count, bytes_used, report
16、ed_put_timestamp, reported_delete_timestamp, reported_object_count, reported_bytes_used, hash, id, x_container_sync_point1, x_container_sync_point2然后由復制器進行處理賬號審計器(account_auditor)對該存儲節(jié)點上的每一個賬號進行檢查n獲取賬號數(shù)據(jù)庫的AccountBrokern通過AccountBroker獲取該賬號的信息n如果獲取不到就記錄失敗account, created_at,put_timestamp,delete_times
17、tamp, container_count, object_count, bytes_used, hash, idHandoff區(qū)域耆如何產(chǎn)生的?對象復制器(Replicators 0復制服務目的n確保系統(tǒng)的一致性和可用性I對象復制服務的任務n每30秒掃描一下本地文件的hashes.pkl,然后與遠端的其它副本的進行比較, 如果不相同,進行相應的更新n從系統(tǒng)中移除標記為ts的對象、容器、賬號n發(fā)現(xiàn)副本數(shù)不夠時,重新生成新的副本n發(fā)現(xiàn)不在應有位置的虛節(jié)點(Han doff),并移動到應在的地方對象復制器工作流程partitions = collect_partitions()for partit
18、ion in partitions: if partition not in local: partitions_to_move.add(partition) else:partitions_to_check.add(partition)for partition in partitions_to_move: move_to_origin_node(partiotion)for partition in partitions_to_check: local_hash_of_suffix_dirs = get_hashes_and_reclaim(partition) remote_hash_o
19、f_suffix_dirs = get_reomote_hashes(partition) different_suffix_dirs = 01:02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12:13:14:compare(local_hash_of_suffix_dirs, remote_hash_of suffix_dirs) rsync(different_suffix_dirs)對象復制服務同步方法節(jié)點1 :請求者發(fā)送所有的本地對象信息(obj1, hash, timestamp)(obj2, hash, timestamp)(obj100, hash, timestamp)發(fā)送所需要的對象列表(obj5? Obj78? obj89)發(fā)送對方所需要的對象信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報書字體標準
- 合同范本美容美發(fā)
- 傳媒影視合同范本
- 和移動合作合同范本
- 兼職寶潔勞務合同范本
- 含油銅軸承采購合同范例
- 知識產(chǎn)權保護高地建設的實踐步驟與部署
- 品牌冠名合作合同范本
- 合作投資入股合同范本
- 加快建設知識產(chǎn)權保護高地的戰(zhàn)略規(guī)劃
- 四年級上冊第四單元讓生活多一些綠色道德與法治教學反思11變廢為寶有妙招
- 嗓音(發(fā)聲)障礙評定與治療
- GB∕T 8081-2018 天然生膠 技術分級橡膠(TSR)規(guī)格導則
- 教學課件個人理財-2
- 最新人音版音樂二年級下冊全冊教案
- 航空航天概論(課堂PPT)
- 影視旅游作品對游客出游動機及行為意向的影響研究
- 【圖文】煤礦井下常見的失爆現(xiàn)象
- 我的寒假生活模板
- 完整版三措兩案范文
- 貿易公司程序文件
評論
0/150
提交評論