是否认为此服务器轮询过于激进?

时间:2019-03-13 17:40:19

标签: c# web-services client-server polling

在我花钱之前,我需要更多经验的指导。请查看我的情况。

  • 300个客户端需要检查服务器中的数据 一整天。
  • 每个客户数据将在不同的未知时间提供。
  • 每个客户端每天最多可以下载30次5kb数据。
  • 每个客户端必须在5分钟内检测到他们的可用数据。

我不想强迫每个客户端设置静态IP或开放端口。因此,我认为从服务器向客户端发送数据不是一种选择。我必须想出最合适的方法,让客户端从服务器请求数据。

我考虑过设置300个客户端,每3至5分钟轮询一次其可能的数据。每个客户端每天最多可下载30次5kb数据。他们不会在每次调查中下载数据。

假设带宽和速度不是问题,并且我可以获得可升级的专用服务器;

  1. 是否每隔3至5分钟同时连接300个客户端,就算是主动轮询?
    • 每个客户每天最多可以下载5kb数据30次。
  2. 这种方法在网络和硬件资源方面是否不合理?
  3. 有更好的方法吗?

谢谢您的时间。

1 个答案:

答案 0 :(得分:1)

这完全没有侵略性,每3至5分钟300个客户(假设他们按时平均分配)是每秒1.6请求(3分钟)或每秒1请求(5分钟),这与吞吐量。

考虑到您每个客户端最终仅(最终)传输5KB数据,这对硬件来说不是什么大问题,或者会在任何地方造成瓶颈。

如果无法从服务器进行推送,则可以考虑采用的方法。

其中一种选择是使用“队列”,例如Azure Service Bus中的主题/订阅。对于这样一个简单的场景而言,这太多了,但是,它在服务(服务器)和客户端之间提供了一个“适当的”可靠的异步通道,并且该通道几乎实时地工作,而且好处是您可以延迟所有的过载来保持通信模式到为此目的而设计的平台。