我有一个依赖于非常“实时”数据的Web应用程序 - 因此如果发生了变化,它每1秒需要更新一次。
我想知道以下解决方案的优点和缺点是什么。
解决方案1 - 轮询很多
所以每1秒,我向服务器发送一个请求并获取一些数据。一旦我获得了数据,我会等待1秒再重复一遍。如果州已改变并采取适当的行动,我会检测到客户端。
解决方案2 - 阻止很多
所以我向服务器发起一个请求,在30秒后会超时。服务器通过每秒检查一次来监视服务器上的数据。如果服务器注意到数据已更改,则会将数据发送回客户端,客户端会采取相应的操作。
方案
基本上,数据的大小相当小,但是根据实时事件以随机间隔进行更改。问题是,Web UI将在2,000个实例的区域中运行,因此我每秒有2,000个来自UI的请求,或者我有2,000个长时间运行的请求,最多需要30秒?
非常感谢帮助和建议,特别是如果您在类似的卷下使用过AJAX请求。
答案 0 :(得分:2)
考虑更好的架构。实现这种消息传递系统对于像nodeJS这样的正确来说是微不足道的。消息发送将是即时的,您无需在任何一方轮询您的数据。
您不需要重写整个系统:数据生产者可以简单地POST
对nodeJS服务器的更新,而不是将它们写入文件,作为奖励,您甚至不需要浪费在磁盘IO上的时间。
如果你在不知道任何nodeJS的情况下开始,你仍然可以在几个小时内完成,因为你可以破解聊天示例。
答案 1 :(得分:2)
此类情况的一种常见解决方案是使用静态json文件。服务器端脚本在数据更改时更新它们,并由快速轻便的Web服务器(如nginx)提供服务。由于文件是静态的和小的 - 网络服务器将以非常快的方式在缓存中正确地执行此操作。
答案 2 :(得分:0)
我还不能评论,但我同意geocar。通过轮询运行实时或几乎实时的Web服务将解决方案卡在摇滚和硬地之间。
您还可以查看网络套接字以允许推送,因为这听起来更好的解决方案,而不仅仅是每秒更新30秒。
祝你好运!