什么是通过网络保持数据列表同步的有效方法?

时间:2017-05-21 08:17:20

标签: python design-patterns network-programming

我正在建立一个服务器到多个侦听器的应用程序,其中服务器有一个"主列表"每秒更改很多次,并且这些更新需要流式传输到连接的客户端,以便它们可以保持与服务器相同的状态。

该列表包含定价数据,代表资产交换的订单簿,如下所示:

[[1.0, 0.002], [1.1, 1.2039], [1.2, 0.29183]]

...第一个值是价格,第二个是金额。

这个想法是客户端在第一次连接时(或通过其他一些旁道)收到完整列表,然后在流式传输时逐步应用这些更改。

有没有做这种事情的模式?效率在这里很重要(但在正确性方面排名第二),因此最好将传输的数据量保持在最低水平。

编辑:我对传输层不感兴趣,对数据层更感兴趣,如何构建增量格式等等。

1 个答案:

答案 0 :(得分:0)

乍一看,我的直觉就是Observer Pattern。来自维基百科:

  

观察者模式是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态变化。

在您的情况下,Master ListSubject而您的Connected ClientsListeners。每次Subject更新时,它都会通知Listeners发生了更改。这可以像CRUD命令一样简单,以便将数据传输保持在最低限度。

警告 - 据了解Observer Pattern时,Listeners会导致问题。

观察者模式维基百科链接:https://en.wikipedia.org/wiki/Observer_pattern