麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 應用 > 軟件技巧 > 正文

大量小文件的實時同步的解決方案分析

2024-07-16 17:44:54
字體:
來源:轉載
供稿:網友
傳統的文件同步方案有rsync(單向) 和 unison(雙向)等,它們需要掃描所有文件后進行比對,差量傳輸。如果文件數量達到了百萬甚至千萬量級,掃描所有文件將非常耗時。而且正在發生變化的往往是其中很少的一部分,這是非常低效的方式。

之前看了Amazon的Dynamo的設計文檔,它們每個節點的數據是通過Hash Tree來實現同步,既有通過日志來同步的軟實時特點(msyql, bdb等),也可以保證最終數據的一致性(rsync, unison等)。Hash Tree的大體思路是將所有數據存儲成樹狀結構,每個節點的Hash是其所有子節點的Hash的Hash,葉子節點的Hash是其內容的Hash。這樣一旦某個節點發生變化,其Hash的變化會迅速傳播到根節點。需要同步的系統只需要不斷查詢跟節點的hash,一旦有變化,順著樹狀結構就能夠在logN級別的時間找到發生變化的內容,馬上同步。

文件系統天然的是樹狀結構,盡管不是平衡的數。如果文件的修改時間是可靠的,可以表征文件的變化,那就可以用它作為文件的Hash值。另一方面,文件的修改通常是按順序執行的,后修改的文件比早修改的文件具有更大的修改時間,這樣就可以把一個目錄內的最大修改時間作為它的修改時間,以實現Hash Tree。這樣,一旦某個文件被修改,修改時間的信息就會迅速傳播到根目錄。

一般的文件系統都不是這樣做的,目錄的修改時間表示的是目錄結構最后發生變化的時間,不包括子目錄,否則會不堪重負。因為我們需要自己實現這個功能,利用Linux 2.6內核的新特性inotify獲得某個目錄內文件發生變化的信息,并把其修改時間傳播到它的上級目錄(以及再上級目錄)。Python 有 pyinotify,watch.py的代碼如下:

復制代碼代碼如下:
#!/usr/bin/python
from pyinotify import *
import os, os.path
flags = IN_CLOSE_WRITE|IN_CREATE|IN_Q_OVERFLOW
dirs = {}
base = '/log/lighttpd/cache/images/icon/u241'
base = 'tmp'
class UpdateParentDir(ProcessEvent):
def process_IN_CLOSE_WRITE(self, event):
print 'modify', event.pathname
mtime = os.path.getmtime(event.pathname)
p = event.path
while p.startswith(base):
m = os.path.getmtime(p)
if m < mtime:
print 'update', p
os.utime(p, (mtime,mtime))
elif m > mtime:
mtime = m
p = os.path.dirname(p)
process_IN_MODIFY = process_IN_CLOSE_WRITE
def process_IN_Q_OVERFLOW(self, event):
print 'over flow'
max_queued_events.value *= 2
def process_default(self, event):
pass
wm = WatchManager()
notifier = Notifier(wm, UpdateParentDir())
dirs.update(wm.add_watch(base, flags, rec=True, auto_add=True))
notifier.loop()

在已經有Hash Tree的時候,同步就比較簡單了,不停地獲取根目錄的修改時間并順著目錄結構往下找即可。需要注意的是,在更新完文件后,需要設置修改時間為原文件的修改時間,目錄也是,保證Hash Tree的一致性,否則沒法同步。mirror.py的代碼如下 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九九午夜视频 | 黄色av片三级三级三级免费看 | 一级空姐毛片 | 黄色网址免费进入 | 国产精品久久久久久久久久免 | 色播视频在线播放 | 91久久国产综合精品女同国语 | 成人精品一区二区三区中文字幕 | 免费一级特黄欧美大片勹久久网 | 黄色影院网站 | 黄色大片高清 | 久久久久久久亚洲视频 | 男女羞羞的视频 | 黄色免费高清网站 | 国产精品一区二区三区在线 | 国产亚洲精品成人 | 中文字幕精品一二三四五六七八 | 2021av视频| 久久亚洲精选 | 欧美黄色大片免费观看 | 成人短视频在线播放 | 一级黄色影片在线观看 | 日韩欧美电影一区二区三区 | 成人国产精品一区 | 国产欧美精品一区二区三区四区 | 九九视频在线观看黄 | 毛片a片免费看 | 免费一级片网站 | 91看片在线播放 | 午夜神马福利视频 | 黄色影院 | 国产一区二区三区四区在线 | 99视频观看 | 亚洲福利在线视频 | a网在线 | 99成人精品视频 | 久久久看| 色综合久久久久久久久久久 | 毛片网站视频 | 国产精品视频免费网站 | 91九色网 |