這篇文章給大家介紹怎么理解FastDFS文件同步機制,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)建站是專業(yè)的平桂網(wǎng)站建設(shè)公司,平桂接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行平桂網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
FastDFS文件同步采用binlog異步復(fù)制方式。storage server使用binlog文件記錄文件上傳、刪除等操作,根據(jù)binlog進行文件同步。binlog中只記錄文件ID和操作,不記錄文件內(nèi)容。下面給出幾行binlog文件內(nèi)容示例:
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名稱)。
文件操作類型采用單個字母編碼,其中源頭操作用大寫字母表示,被同步的操作為對應(yīng)的小寫字母。文件操作字母含義如下:
C :上傳文件(upload)
D:刪除文件(delete)
A:追加文件(append)
M:部分文件更新(modify)
U:整個文件更新(set metadata)
T:截斷文件(truncate)
L:創(chuàng)建符號鏈接(文件去重功能,相同內(nèi)容只保存一份)
同組內(nèi)的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行。文件同步只在同組內(nèi)的storage server之間進行,采用push方式,即源頭服務(wù)器同步給本組的其他存儲服務(wù)器。對于同組的其他storage server,一臺storage server分別啟動一個線程進行文件同步。
文件同步采用增量方式,記錄已同步的位置到mark文件中。mark文件存放路徑為 $base_path/data/sync/。mark文件內(nèi)容示例:
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的異步復(fù)制方式,必然存在同步延遲的問題,比如MySQL的主從數(shù)據(jù)同步。下一篇文章將介紹FastDFS是如何解決文件異步復(fù)制帶來的延遲問題,敬請期待。
關(guān)于怎么理解FastDFS文件同步機制就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。