2012-12-22 79 views
0

假設我有一個P2P網絡地段節點。如果我想更新P2P客戶端,我有一件事不是想做的事情:更新每個單一節點。如何更新P2P網絡中的節點?

現在我可以想象更新一個節點,並且有時每個節點檢查它當前與之交互的節點是否是新版本 - 如果是,則從該節點獲取更新。

通過這種方式,更新可以在P2P網絡中找到自己的路,而您只需更新一個節點。而且,你不會依賴中央服務器。

有沒有(某處有;-))這種更新方案的概念?

這種方法的優缺點可能是什麼?

回答

1

優點:如果因爲其他原因,討論和討論真的很酷。

缺點:

  • 可能是一個安全漏洞。如果我可以在P2P 網絡上放置流氓對等設備,我的代碼可能會發布實際上是病毒的更新。你至少應該確認更新,包括某種代碼簽名 和驗證片。

  • 如果在P2P協議或更新代碼中存在任何類型的錯誤,則可以進入只能升級所有節點的子集的狀態 。

更好的方法可能是讓客戶端從集中位置獲得更新。混合方法是通過中央服務器通知對等方更新,該中央服務器通告URL和文件散列。如果節點可以從對等方得到更新(並驗證散列和代碼簽名),那麼很好。但總是有「從中央服務器下載」作爲後備。

您可能還想考慮如何合併「分階段發佈」,以便只有有限數量的對等方獲得更新。因此,您可以在將更新推出到所有其他同行之前驗證更新是否正常工作。

+0

嗯,我沒有看到安全漏洞的問題:您需要使用證書(或其他)以與中央服務器相同的方式驗證所謂的「更新包」。我不喜歡中央服務器的方法是依賴......但當然你有這樣的想法,例如分階段推出這樣的東西會很棒。 –

+1

@GoloRoden - 你沒有提到關於你的協議,網絡或服務的太多細節。所以我只能根據經驗和觀察他人給你一般的答案。我基本上說的是,一旦你沒有一箇中心服務器讓同行配置他們的行爲(包括更新),你將失去對網絡的控制。我強烈建議您閱讀2010年以及2007年的Skype中斷。閱讀:http://blogs.skype.com/en/2010/12/cio_update.html – selbie

+0

請放心,我沒有把你弄錯:-)。謝謝你的幫助 :-)! –