2015-03-25 35 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