p2psim學習筆記(二) 總體架構流程

來源:互聯網
上載者:User
  1. 程式的總架構圖可以在http://pdos.csail.mit.edu/p2psim/p2psim-classes.pdf得到(好像是貼不了圖嗎?)

在看原始碼的時候就可以參照這個總類圖,這樣就可以比較容易知道程式的來朧去脈。

  1. 總體流程說明(網上轉載有修改) –先有一個總體認識

(1)節點node類比成運行P2P演算法的機器,通過Network相互之間發送和接收資料報。Network中的兩個結點的Latency通過toplogy來決定

(2)ChurnGenerator類比P2P網路的動態性,它周期性的加入節點或撤銷節點。 (3)LookupGenerator周期性的發出lookup查詢請求來增加網路的負載。

(4)每個節點有join和lookup方法,調用join初始化結點得routing table,並和其它node聯絡,讓自己加入到P2P網路中結點通過周期性調用stabilization routine來重新整理自己的routing table

(5)節點通過調用RPCs相互連訊,RPCs會調用Network裡的方法。

(6)在Network收到一個資料包時,它會計算髮送者和接收者之間得latency.當接收結點dead,Network通過error-RPC-reply機制 (n次)類比逾時。

(7)程式採用thread類比實現結點的離散事件,比如A結點發出LOOKUP請求給B結點,並且A處於等待狀態;B在完成查詢操作後,將結果返回給A,並通知A繼續執行下去。

(8)通過任務隊列EventQueue來儲存事件

(8)線程之間的非同步作業並不是通過我們熟悉的訊號量、共用記憶體等傳統POSIX方式,而是採用Alef Programming Model,通過channel的send和recv操作,實現task之間的互斥和同步。Alef的具體實現技術請參看http://swtch.com/~rsc/thread/ug.pdf

後面就從main開始分析原始碼實現咯!

  1. 在進一步深入原始碼學習前,先擬定個學習計劃:

    (1)在程式中使用了大量的模式設,所以在看原始碼前最好先惡補一下以下模式,:Factory,Singleton,Observer,Mediator

    (C++的肯定要看Gof的Design Pattern啦,什嗎?沒聽過~~)

(2)C++基礎這個不用說啦,STL相關的set, map, vector, hash_map 等會大量用到,所以這方面也要先瞭解

(3)在看的過程中邊做筆記邊總結,看清楚了一部分後就可以畫畫流程圖等,當然如果只是用於測試資料而不是研究代碼的話,只要學會修改就可以了,具體協議實現在/protocol下

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.