经过一整天的搜索,我想谈谈网上聊天的最佳解决方案。
我所知道的是:
Ajax轮询是一种旧的、带带消耗的、不具有可伸缩性的方法。它每隔X秒向服务器请求新数据。这意味着每X秒就有一个数据库查询* number_of_connected_users。
Reverse及其应用程序之一( comet )需要定制的web服务器或专用的comet服务器,该服务器可以处理number_of_connected_users数量的长期http连接。
我的实际服务器是:1 Xeon CPU,1 GB RAM和1GB/s带宽。服务器是一个虚拟机(因此具有高度的可伸缩性)。
我需要一个解决方案,可以扩大与服务器和未来不断增长的用户基础。
我的怀疑是:
提前谢谢你。
发布于 2010-06-30 22:32:06
你不应该使用轮询,如果你能逃脱它。它会阻塞服务器和客户端的资源。服务器必须使用轮询发出更多的数据库请求,并进行更多的检查,以查看数据是否已更改。
ajax轮询方法还会生成更多不必要的请求。通过轮询,您可以使用内存和CPU。彗星(如果做得好的话)只使用内存。
comet服务器可能无法在Apache下运行。Apache似乎不是为长时间运行的请求设计的。我建议您使用ruby (使用EventMachine) 一个例子、Python (使用Twisted)或C.
我不明白为什么您需要有一个间隔来执行数据库查询。当您进行更改时,您可以告诉您的comet服务器将更改通知必要的用户。
发布于 2010-07-01 09:51:00
我正在用PHP写我的网站。
所以,我需要运行一台服务器(比如扭)并用python编写我的聊天应用程序?这个应用程序应该处理传入的ajax请求,并将新数据推送到客户端。
如果我理解得很好,这种方法不需要数据库,对吗?
https://stackoverflow.com/questions/3153844
复制相似问题