2015-03-25 76 views
0

我正在開發一個有兩種不同類型的服務器的小型組管理系統。可以在「管理服務器」上加入和離開組的「客戶端服務器」。如何在Python中通過網絡同步列表更改

多播組中有多個管理服務器。所以客戶端服務器發送加入和離開請求到這個多播組。由於IPv6多播不可靠,有些管理服務器可能不會收到請求。所以他們的會員名單並不是最新的。

所以我需要一個函數,我可以使用它來同步列表時,他們改變。有三種類型的變化:

  • 客戶端服務器葉組
  • 客戶端服務器加入組
  • 客戶端服務器更新成員資格(因此管理服務器代替它的列表)的完整列表

我想在每個管理服務器上創建一個記錄最近更改(可能是最近60秒)的日誌列表。如果服務器發現更改,它會通知其他管理服務器有關更改並將時間與此信息一起發送。如果接收者有更新的更改,它會忽略發件人的信息。如果不是,則更新其列表。

但這是做到這一點的最好方法嗎?有這種事情的特殊模式?或者甚至可能是一個Python框架?

+1

因此,任何管理服務器上的任何更改都必須反映在所有服務器上。 – 2015-03-25 13:25:11

+0

我會使用類似於生成樹的東西,讓所有服務器在發生更改後發送更新的根,然後每隔一段時間發送一個修訂號,如果修訂版號大於當前同步更改的話。 – 2015-03-25 13:31:19

+0

是的,在所有管理服務器上。假設我們有兩個管理服務器A和B.客戶端服務器通過多播向A和B所在的組註冊。但由於網絡問題,只有A收到註冊請求。因此,B在客戶端服務器所在組的列表中具有無效視圖。要解決此問題,每個註冊過程之後,每個管理服務器都會將新列表與所有其他管理服務器同步。 – 2015-03-25 13:31:27

回答

0

聽起來像要使用gevent。對於您想要在多個節點之間同步事件的場景,這非常有用。它也會爲你抽象出大部分網絡層,所以你可以專注於完成工作。

+0

感謝您的建議。但我不明白這可以幫助我。另一個問題是,我必須使用我的大學的一個大框架來註冊/註銷已經處理所有紐約事務的客戶。所以唯一的問題是如何同步更改而不是如何進行通信。溝通已經有效:) – 2015-03-25 13:16:28