您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么理解FastDFS文件同步機制,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
FastDFS文件同步采用binlog異步復制方式。storage server使用binlog文件記錄文件上傳、刪除等操作,根據binlog進行文件同步。binlog中只記錄文件ID和操作,不記錄文件內容。下面給出幾行binlog文件內容示例:
1572660675 C M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt
1572660827 c M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml
1572660911 D M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt
1572660967 d M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml
從上面可以看到,binlog文件有三列,依次為時間戳、操作類型和文件ID(不帶group名稱)。
文件操作類型采用單個字母編碼,其中源頭操作用大寫字母表示,被同步的操作為對應的小寫字母。文件操作字母含義如下:
C :上傳文件(upload)
D:刪除文件(delete)
A:追加文件(append)
M:部分文件更新(modify)
U:整個文件更新(set metadata)
T:截斷文件(truncate)
L:創建符號鏈接(文件去重功能,相同內容只保存一份)
同組內的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行。文件同步只在同組內的storage server之間進行,采用push方式,即源頭服務器同步給本組的其他存儲服務器。對于同組的其他storage server,一臺storage server分別啟動一個線程進行文件同步。
文件同步采用增量方式,記錄已同步的位置到mark文件中。mark文件存放路徑為 $base_path/data/sync/。mark文件內容示例:
binlog_index=3
binlog_offset=382
need_sync_old=1
sync_old_done=1
until_timestamp=1571976211
scan_row_count=2033425
sync_row_count=2033417
采用binlog的異步復制方式,必然存在同步延遲的問題,比如mysql的主從數據同步。下一篇文章將介紹FastDFS是如何解決文件異步復制帶來的延遲問題,敬請期待。
關于怎么理解FastDFS文件同步機制就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。