1.分布式檔案快速搜尋(多計算機並行/多種演算法)
2.分布式檔案快速搜尋的設計與實現(開源/分布式計算/並行)
3.分布式檔案快速搜尋-技術細節分析(開源/並行)
檔案的匹配有3種方式:完全一致、包含以及全文索引。
完全一致,直接使用雜湊值比較。
適用於執行時搜尋,判斷文字檔案中包含的內容。目前直接使用file.readalltext(file).indexof(keyword, stringcomparison.invariantcultureignorecase)來判斷,可能遇到的問題應該是檔案太大導致記憶體溢位。
可索引檔案的全文內容會自動快取,支援自定義擴充套件介面ifilecontentindex,目前內建了微軟的ifilter實現。具體參看localfilecontentindexstorage。
因為不是.net3.5/4,沒有ppl,只能模擬並行,**參看分布式檔案快速搜尋v7.0(多計算機並行/多種演算法)
。原理是使用threadpool.queueuserworkitem各個任務,使用manualresetevent記住每個任務的狀態,並用waithandle.waitall等待所有任務完成。具體參看parallelprocessor.executeparallel。
public
static
void
executeparallel(iparallelworker methods)
), i);}//
wait for all threads to execute
waithandle.waitall(resetevents);}}
在多執行緒的環境中,最常見的問題是執行緒安全。.net 2.0中,dictionary是不安全的,我用網上封裝的synchronizeddictionary,當然,我們還可以使用折騰箱子的hashtable。在.net 4.0中,你可以使用concurrentdictionary。
除了集合,在訪問filestream等物件的情況,你都必須注意保證執行緒安全,否則資料會跟實際預想不一致。
在上述所有資料夾搜尋任務都完成後,聚合搜尋結果,再根據網路/本地切分任務。對於本地資料夾,則判斷是否為同乙個物理磁碟,如果是,則動態使用平行計算以實現加速。具體參看workv7.find()。
這是本程式的最大特點。分布式的原理就是在各個節點部署乙個監聽程式,多個節點組合成乙個grid,在監聽的同時,也可以作為客戶端傳送請求。
本程式沒有使用xml作為資料載體,而是使用了自定義的格式:檔案頭+資料體(如檔案內容等),檔案頭包括了命令等資訊。整個內容可選壓縮演算法,每個資料報在最後自動新增結束標記,以便在tcp中識別。
分布式檔案快速搜尋自定義了協議介面,內建了對http、tcp和ftp的支援,你可以自由新增各種協議。每種網路連線,都會使用非同步處理,避免堵塞請求。
譬如:c:\temp\abc.txt
每個資料報都使用post方式,在可選壓縮後把資料寫入request.getrequeststream,具體參看httpfileworkprovider。在伺服器端,使用httplistener監聽,在獲得每個httplistenerrequest後,呼叫基類(basemanager)的processrequest處理request.inputstream,具體參看workv7httpmanager
httplistener有點詭異,使用foolistener.prefixes.add()來定義監聽的路徑。在呼叫httplistener之前,你需要使用httplistener.issupported判斷一下你的作業系統是否支援:必須xp sp2或以上、win2003、vista、08、win7。httplistener本身不支援ssl,但你可以httpcfg.exe來配置,之前我參看的是一篇英文的文章,現在一下子找不到,大家就湊合用中文的吧:配置httplistener偵聽ssl連線詳解。
每個具體的操作,會先使用asynchronousclient進行連線,伺服器使用asynchronoussocketlistener進行監聽,在received事件處理客戶端傳送來的請求,具體參看tcpfileworkprovider和workv7tcpmanager。
使用.net內建的ftpwebrequest,具體參看ftpfileworkprovider。
在下乙個大版本中,將會提供對檔案同步的支援。檔案傳輸,有很多現成的軟體可以做參考。我的設想是:把檔案動態切分成多個小塊以減少記憶體的占用,標記之,成功就記錄乙個,失敗/斷開後下次傳輸,則可以斷點續傳。當然,一樣可選壓縮演算法,以提高傳輸效能。
本專案已經在 開源
DFS分布式檔案搜尋引擎
size medium b 這個搜尋引擎的主要特點是 b list 基於分布式的高效能檔案搜尋引 支援的檔案總大小可達到數百tb 數萬gb 單個檔案的大小可達數百gb 支援的檔案數量可超過數千萬個 支援ocr 光學字元識別 多語言支援,如英語 漢語 阿拉伯語 俄語 日語等 支援中文的自定義分詞 介面...
分布式檔案儲存系統技術及實現
阿里雲大學課程 分布式檔案儲存系統技術及實現 課程介紹 本課程針對分步式檔案儲存系統的實現進行講解,首先分析為什麼要使用這種分步式儲存系統,以及這種系統在設計時需要注意的問題,並比較現在市面常見的分步式儲存系統 hdfs ceph等 展示阿里pangu系統針對其中問題的解決方法,並結合pangu系統...
分布式檔案儲存系統技術及實現
本課程針對分步式檔案儲存系統的實現進行講解,首先分析為什麼要使用這種分步式儲存系統,以及這種系統在設計時需要注意的問題,並比較現在市面常見的分步式儲存系統 hdfs ceph等 展示阿里pangu系統針對其中問題的解決方法,並結合pangu系統說明分步式儲存系統的設計要點。開始學習 分布式檔案儲存系...