時下P2SP 技術非常流行,公司無論大小,只要設計到網路到要搞上一下。
最近一個朋友讓我幫忙做個P2P CACHE。又不能用任何公司的代碼(只能參考,防止鋃鐺入獄)。其實P2SP的CACHE非常簡單,一般運行在LINUX伺服器上,FOR EX AMPLE,訊雷。左右也相當於網路中的一個PEER,緩衝需要的資料作為種子節點提供給其它PEER下載。
現在P2P技術比較爛了,到處都是原始碼,今天下午找了一個。是LINUX命令列下的P2P軟體,支援BT協議。名字叫CTorrent ,連結為http://www.rahul.net/dholmes/ctorrent/ctcs.html#details, 可以點進去具體看。花了兩個小時讀了下原始碼並做了測試。發現剛開始連線速度非常慢。而開啟同樣的Torrent脫兔就快的多。而且在有的伺服器下不可以下載,具體原因還沒有查明。
既然可以下,那麼協議部分沒有問題。這就幫了大忙,否則還要自己寫BT協議部分的封狀,個人覺得BT協議比較濫(不如自己定的私人協議效率高)。接下來閱讀原始碼。
比較簡單,先搜尋pthread,呵呵。。竟然沒有(難道是單線程的?),看了一會兒,發現貌似是的(如果不是以後我進行補充,閱讀代碼時間比較短,不太確定)。SELECT。那麼這樣就只能做學習層級的了。
那麼網路接入部分是不能用了。因為SERVER的網路部分是我的強項,所以這部分修改問題不大。策略決定是MUTITHREAD+QUEUE+EPOLL,這種效率最高,否則對於PEER CACHE來說網路接入部分差肯定是不行(目標為10W並發TCP串連)。而且CTorrent 中從SOCKET讀資料後就進行了具體業務的處理,個人感覺中間還是有一些隊列效率更高,CTorrent 全部封裝在一個類中。
CTorrent Control Server部分的大概意思貌似是每個CLIENT像這個server報告,進行調度我剛開始讀這部分代碼時候很迷惑,後來到官方網站上才知道作用。沒什麼用感覺,協議定的不好,這部分自己做。感覺這個功能沒啥必要其實。有點像GRID,這部分最好自己寫。
另外看了一些相關文檔,說一些不要進行修改,損人利己的事。所以開發完成後準備搞一個開源版本放上去,也算做了個貢獻吧。
感覺它的命令列格式非常好,對開發以及調試都非常有協助。其它的BTCONTENT部分對 METAFILE,CONTENT的封裝,SHA1等也不錯。但是也有改進的地方。
感覺作者的C/C++混的比較厲害。要是C++封裝的更完美點就更好鳥。
嘿嘿。
個人首頁 http://www.gnetcom.com