迅雷(xunlei)如何搜尋乙個資源的多伺服器版本?
-------
實現乙個類似迅雷的系統「福雷(
fulei
)」來自:
mudboy@csdn
摘要:
我們的福雷要做同迅雷差不多的事,讀下文時可以暫將福字替換成迅。
談了這麼多,還沒有談到一點技術性的內容,真唐僧!
現在的關鍵問題是如何判斷檔案的同價性?也就是說,如何知道這幾個檔案是一樣的?儲存這個資訊對我信至關重要,通過檔名?顯然不行,通過修改時間?作者?大小?等,都不太準確,最常用的方法還是計算檔案摘要,而計算檔案摘要最常用的方法又是md5(雖說md5可以破解,但對於大眾化應用,這種破解沒什麼意義,而在非人為狀況下,md5可以認為是可靠的),但這又出現乙個新的難題,計算摘要需要所在檔案內容,我們有以下選擇:
利用摘要判斷檔案等價性的方法有乙個好處是可以忽略一些次要資訊,比如檔名,建立時間,修改時間等,但檔案型別,長度和摘要則是需要考慮的成份。也就是說,如果這三者一樣,則我們認為檔案是一樣的。
儲存完上述資訊,至於如何索引,考慮的因素可能會多一些,最簡單的就以摘要索引就行,這樣等價資源會被聚類到一起,但作為乙個資源聚集點,資源的描述資訊也是要考慮進去的,等下我們會專門談到這個問題。
1、 先看看普通的鏈結(非福雷鏈結)
a)/movie/wanfang.rmvb
b)c)
服務端根據鏈結找自己伺服器,看是否已被系統crawler處理過,如果已被處理過,很簡單,通過其摘要找到所有含有該資源的伺服器鏈結發到客戶端。
d)e)
f)g)
h)2、 再看看專用鏈結,比如,你通過雷區找到的資源,有一些鏈結類似如下形式:
thunder://qufmdha6bdcsdi/ry+l1byaxfdif=
說了這麼多,本來應該畫個框架圖流程圖什麼的,但願說清楚了,有什麼好的想法可以多交流。
快取的工作原理
1.快取的工作流程 快取主要針對select查村語句作用的 1 第一次查詢將資料寫入快取 2 第二次查詢時,先看快取中是否有,有,提取。3 期間針對此快取的任何insert update delet操作,都觸發將快取清空。以mybatis的二級快取為例,快取流程都一樣,不論一級快取,還是二級快取,抑...
CPU快取的工作原理
當cpu要讀取乙個資料時,首先會從快取 cache 中查詢,如果找到就立即讀取並送給cpu處理 如果沒有找到,就用相對慢的速度從記憶體中讀取並送給cpu處理,同時把這個資料所在的資料塊調入快取中,可以使得以後對整塊資料的讀取都從快取中進行,不必再呼叫記憶體。通過優化的的讀取機制,可以使cpu讀取快取...
Web快取工作原理
現代的商業化 快取相當的複雜。這些快取構建的非常高效,可以支援http和其他一些技術的各種高階特性。但除了一些微妙的細節之外,web快取的基本工作原理大多很簡單。對一條http get報文的基本快取處理過程包括7個步驟 接收 快取從網路中讀取抵達的請求報文 解析 快取對報文進行解析,提取url和各種...