- 論壇徽章:
- 0
|
本帖最后由 wwwlovekaikai 于 2012-01-18 16:58 編輯
回復(fù) #9 happy_fish100 的帖子
哥們,你這個(gè)系統(tǒng)做得貌似簡(jiǎn)單其實(shí)精巧!
仔細(xì)看了下機(jī)制,明白文件命名的好處了:
數(shù)據(jù)文件名由系統(tǒng)自動(dòng)生成,包括4部分:存儲(chǔ)服務(wù)器IP地址、當(dāng)前時(shí)間(Unix時(shí)間戳)、文件大。ㄗ止(jié)數(shù))和隨機(jī)數(shù)。文件名長(zhǎng)度為22字節(jié)。
step1,tracker收到下載文件的請(qǐng)求時(shí),從v1.2開始就可以直接從請(qǐng)求的文件名內(nèi)解析出storage_ip和文件上傳時(shí)間(Unix時(shí)間戳)、結(jié)合請(qǐng)求傳來(lái)的的group;
step2.然后從該group存活的storage列表中找這個(gè)storage_ip(即該文件原來(lái)上傳的ip,源ip),要是這個(gè)storage_ip停掉了即查找失敗,則取該group內(nèi)的存活的下一個(gè)storage_ip1并且比較文件上傳時(shí)間和該storage_ip1同步時(shí)間戳,沒(méi)有符合條件的好像會(huì)取該group內(nèi)一個(gè)存活的ip給客戶端。代碼內(nèi)這個(gè)機(jī)制要是注釋清楚一些就更好了:)
step3,storage定期向tracker通報(bào)自己的最新做完的文件同步時(shí)間戳,這個(gè)時(shí)間戳需要退出tracker時(shí)才flush到storage_servers.dat,運(yùn)行時(shí)我等了十來(lái)分鐘都沒(méi)看到更新進(jìn)去。
storage_servers.dat中記錄storage server相關(guān)信息,字段依次為:
……
16. stat.last_source_update:最近一次源頭更新時(shí)間(更新操作來(lái)自客戶端)
17. stat.last_sync_update:最近一次同步更新時(shí)間(更新操作來(lái)自其他storage server的同步)
非常感謝快樂(lè)魚
上面是happy_fastdfs的一個(gè)回復(fù)BZ,FastDFS同步機(jī)制的一個(gè)回帖。
這個(gè)回貼是正確的么?如果正確,那么像這樣的fileId:group1/M00/00/05/wKgEIk7oZ4XnI7_JAAFbsTBcHDA572.jpg.我們從哪里知道時(shí)間及storageIP的呢?還是后面的文件名是加密處理了? |
|