推送或拉取近乎实时的自动化服务器?

Posted

技术标签:

【中文标题】推送或拉取近乎实时的自动化服务器?【英文标题】:Push or Pull for a near real time automation server? 【发布时间】:2010-09-08 16:41:09 【问题描述】:

我们目前正在开发一种服务器,客户端通过该服务器请求对特定数据元素的更改感兴趣,并且当该数据发生更改时,服务器将数据推送回客户端。关于客户轮询这些数据是否更好,在工作中存在激烈的争论。

就性能、可扩展性和网络负载而言,在近实时环境中传输数据的理想方法是什么?

更新: 这是一个Link,它提供了一些关于 UI 更新的思考。

【问题讨论】:

【参考方案1】:

可能没有适合每种情况的理想方法,但推送通常更好并且更频繁地使用。它允许优化服务器缓存和数据传输,这有助于提高性能和可扩展性,并通过避免客户端请求和空响应来减少网络流量。服务器按照自己的节奏运行并在准备好时向客户端提供数据可能是一个重要的优势。

行业标准 - 例如 OPC、GID - 两者都支持。服务器向订阅的客户端推送更新,但客户端可以拉出一些很少使用的数据,而无需费心订阅。

【讨论】:

【参考方案2】:

只要客户端发起连接(以通过防火墙和 NAT 问题),任何一种方式都可以。

如果您需要发送多种不同类型的数据,您可能希望让客户端指定他想要的类型,但每个连接只需要一次。然后,您可以让服务器继续发送更新,因为它拥有它们。

如果没有客户端不断请求更新,则让服务器发送更新会减少网络流量。

【讨论】:

【参考方案3】:

您在客户方面有什么?许多防火墙允许传出请求但阻止传入请求。换句话说,如果您要通过 Internet,除非您发送电子邮件,否则 pull 可能是您唯一的选择。

【讨论】:

我们有自己的客户端软件,现阶段我们还没有通过互联网进行操作。

以上是关于推送或拉取近乎实时的自动化服务器?的主要内容,如果未能解决你的问题,请参考以下文章

git追踪分支

向多个客户端推送近乎实时的位置更新

在 Java WebApp 中推送近乎实时的数据

Git实用记录

解放双手之自动拉取与推送

Ubuntu 自动从 Github 仓库拉取