网站上的快速号码更新

时间:2012-12-18 18:07:56

标签: c# python asp.net web-services perl

我想知道如何在网站上更新快速号码。

我有一台产生大量输出的机器,我需要在线显示它。不过我的问题是更新频率很高,因此我不知道如何处理它。

最好显示最后N个数字,比如10。数字以30Hz更新。对于人眼来说,这可能太过分了,但人眼只是为了控制它。

我想知道该怎么做。页面重新加载会使浏览器不断加载页面,而对于网页而言,只需要显示这些数字。

我可能会生成一个原始Web引擎,通过特定的IP地址和端口号将该号码写入页面,但即使这样,我也不知道这个页面重新加载是否太慢,给用户带来了奇怪的体验。

我应该如何处理网站上如此极端的数据更新率?通常网站不是那样的。

在这个问题的标签中,我命名了我理解的语言。最后我可能会用C#编写。

3 个答案:

答案 0 :(得分:2)

a)WebSockets与ajax结合使用只更新站点的某些部分会起作用,不利的是:客户端基础设施(代理)必须支持那些(99%的时间目前不是这种情况)。

b)使用现有基础设施,方法是长轮询。你使用javascript创建一个XmlHttpRequest。如果没有数据,则在服务器端阻止请求5到10秒。如果数据可用,您立即回答该请求。然后客户端立即发送新请求。我设法使用通过代理连接的java客户端,http到网络服务器(显示的实时股票数据)每秒获得> 500次更新。 您需要为每个请求捆绑多个更新,以获得足够的吞吐量。

答案 1 :(得分:1)

您不必使用页面重新加载。您可以使用WebSockets在浏览器(通过JavaScript)和服务器之间建立开放的双向通信。

Python Tornado对此内置函数有support。此外,还有一些其他支持它的Python服务器。 Socket.IO是一个很棒的JavaScript库,具有后备功能,方便客户端。

答案 2 :(得分:0)

在后端,您可以使用Redis或VoltDB等NewSQL数据库进行快速内存数据库更新。缓存对高延迟组件(特别是在写入繁重的应用程序中)有很大帮助。

在前端,您可以查看websockets和Comet Web应用程序模型http://en.wikipedia.org/wiki/Comet_%28programming%29

许多游戏公司必须处理快速计数器更新和显示 - 可能值得研究。 Zynga使用协议调用AMF http://highscalability.com/blog/2010/3/10/how-farmville-scales-the-follow-up.html