用memcache 来实现聊天室的可能性探讨.突然想起这么个话题,当然要做复杂的是肯定不行的,我们只探讨将文本
用memcache 来实现聊天室的可能性探讨.
突然想起这么个话题,当然要做复杂的是肯定不行的,我们只探讨将文本通过memcache实现聊天应用的可能..
首先摆在我们面前的是这个key要怎么维护?有没有实现的可能?
[解决办法]
由于需要记录聊天内容和聊天人的信息
所以每笔数据应该是一个“结构”而不是单一的值
鉴于聊天内容是不可修改的,所以 key 并无实际意义,递增即可
至多是取时间值
[解决办法]
聊天室需要缓存的东西不是很多啊。
[解决办法]
研究过python的聊天室...关注一下
[解决办法]
进来学习,这一块没什么经验。
[解决办法]
本来聊天室就是个蛋疼的功能。得耗费多少资本啊。
没有这方面的经验,实现的方法有多种。把聊天数据存数据库或本地文件或memcache,显示数据会用到推送。听说还可以用socket来实现。 也没测试过。不知道哪种效率高。
[解决办法]
[解决办法]虽然不懂web, 但是跑fcgi做单独的聊天服务器是可行的.
[解决办法][解决办法][解决办法]除非浏览器或flash本身是服务器时,如有开放端口,推技术才可能成真。
http是请求-响应式的。 是要是uri,都可请求。
猜想QQ, 每个用户都有好友的端口中。
也是有两种方式实现: 一是有数据存中央数据库;二是一个用户发言,然后向群里广播。
[解决办法]memcached的替代品?
redis吧,数据放入内存,但也支持在硬盘上持久化保存,配置正常的情况下,性能大概是memcached的十倍(网上的数据,俺自己测没打到过,但5倍以上是确认的)。
另外,做聊天室是可行的,并且也有类似的代码, redis官网有个示例,是完全用redis来做的模仿twiiter的页面。project名称好像叫“retwis”
以前也看到过设计,一般key是用散列值即可吧,比如 用户名_时间 然后md5一下之类的...
[解决办法][解决办法]时间戳做key
由于mem 的value值是有大小限制的
可以每过一段时间生成个key 然后内部是json格式
例如
每五分钟一个key
然后把这五分钟内的聊天记录都放到mem中
然后 用户登录根据当前的时间戳来查询
不知道可否
[解决办法]呃,好吧,从目前的经验来看,如果单台服务器来做的话,私以为用长连接是不合适的,短连接做聊天室能够实现更多的访问量。
假设一台16核心16G的服务器,Nginx + PHP-FCGI的话,大概可靠并发能达到3W,那么长连接,最多也就是3W用户喽?(3W是俺自己测试的情况,俺渣....不过另外也参考了张宴的blog,姑且国内nginx的先驱者吧) 但短连接的话,就看Nginx每秒最多的request和 后端存储每秒最多request的能力了
以下是nginx和redis的单独 request能力 测试:
nginx,以phpinfo.php为测试内容
PHP code./webbench -c 10000 -t 30 "http://127.0.0.1/test.php"Webbench - Simple Web Benchmark 1.5Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.Benchmarking: GET http://127.0.0.1/test.php10000 clients, running 30 sec.Speed=230470 pages/min, 46263036 bytes/sec.Requests: 115235 susceed, 0 failed.
[解决办法]
没搞 过这方面,,表示很有压力。。
[解决办法]
聊天室这东西还有市场吗,做产品不能光做,还得想着怎么应用。做个不能根本没什么市场的东西能体现什么呢。
[解决办法]
[解决办法]
http的keep live属性,它虽然有超时时间,但是的生命周期并不是严格按照超时时间来处理的。而且你在浏览器端无法像socket那样得到一个连接句柄。所以我能想到的就是使用ajax拉数据,但是这样会造成大量的http请求,服务器很快就会被拖垮。