我正在開發一個有兩種不同類型的服務器的小型組管理系統。可以在「管理服務器」上加入和離開組的「客戶端服務器」。如何在Python中通過網絡同步列表更改
多播組中有多個管理服務器。所以客戶端服務器發送加入和離開請求到這個多播組。由於IPv6多播不可靠,有些管理服務器可能不會收到請求。所以他們的會員名單並不是最新的。
所以我需要一個函數,我可以使用它來同步列表時,他們改變。有三種類型的變化:
- 客戶端服務器葉組
- 客戶端服務器加入組
- 客戶端服務器更新成員資格(因此管理服務器代替它的列表)的完整列表
我想在每個管理服務器上創建一個記錄最近更改(可能是最近60秒)的日誌列表。如果服務器發現更改,它會通知其他管理服務器有關更改並將時間與此信息一起發送。如果接收者有更新的更改,它會忽略發件人的信息。如果不是,則更新其列表。
但這是做到這一點的最好方法嗎?有這種事情的特殊模式?或者甚至可能是一個Python框架?
因此,任何管理服務器上的任何更改都必須反映在所有服務器上。 – 2015-03-25 13:25:11
我會使用類似於生成樹的東西,讓所有服務器在發生更改後發送更新的根,然後每隔一段時間發送一個修訂號,如果修訂版號大於當前同步更改的話。 – 2015-03-25 13:31:19
是的,在所有管理服務器上。假設我們有兩個管理服務器A和B.客戶端服務器通過多播向A和B所在的組註冊。但由於網絡問題,只有A收到註冊請求。因此,B在客戶端服務器所在組的列表中具有無效視圖。要解決此問題,每個註冊過程之後,每個管理服務器都會將新列表與所有其他管理服務器同步。 – 2015-03-25 13:31:27