web系统需要 实时信息交互 现在有一web系统,任何登录的用户 可能会发布 信息,所有在线的人 都可以 收到该信息,并做处理如果,考虑到性能,并发量,服务器压力 各位 有什么想法 ,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考一下服务器push技术,例如Comet。Google这个方面使用的是iFrame来实现的。 2000 左右的话,一个 tomcat 可承受不了 我有个想法,楼主看看是否适合。2k的并发量,对于服务器来讲,肯定是负担不起的。通常只能考虑换一种方式,或者,在现有基础上,实现负载均衡。换一种方式,应该是指抛弃B/S架构或者采用Push技术;负载均衡,应该是指多个Tomcat服务器进行均衡,或者,多数据库进行均衡。我的想法是:首先,考虑服务器的负担瓶颈是什么。通常情况下的Web聊天室,采用的是定时刷新页面的技术,每次刷新的内容,都是聊天室的聊天信息。而所有的聊天信息,都保存到数据库当中。那么,我们一步一步的来,负担重是由于并发量太大,造成页面响应缓慢,并发量目前不好解决,但,可以想办法加快响应速度。如果定时刷新的是静态页面,那么,对于服务器来说,不是相对会非常轻松吗 ?要想相应速度快,只能从数据访问上面着手了。问题的瓶颈就应该是聊天数据的访问上面。其次,采用什么样的方式来解决瓶颈问题。想来想去,也只想到了缓存技术。服务端和客户端都采用缓存技术。先说客户端的缓存,要存放历史的聊天记录,每次刷新页面,只取新的记录,取到后,连同历史记录一同显示给用户。刷新的时间间隔要适当的长一些,如果项目非要即时通信,那干脆换一种方式得了。当然,客户端还要有防止重复提交和频繁提交的功能。服务端的缓存,其实就是一张内存中的快表,可以通过时间来快速获取数据。快表是一个先进先出的队列,只保存3次刷新间隔的聊天记录。服务端创建一个守护线程,每次刷新间隔时间,都将聊天历史记录,从快表中迁移至数据库中。记住是迁移,不是复制。每次只迁移旧时间间隔的聊天记录,并且迁移的数据都不叠加。 启动一个线程单独管理一个缓存区A另外在开2个缓存区,(B,C)用户先用B, 这时把C值复制给A完事后用户用C,这时把B的值复制给A这样还可以不用同步锁用户获取数据的时候用 foreach 来复制这样在转化 B, C 的时候不会出错 用 for 和 foreach 的一个小小的不同不断的换用户需要读取的一段缓存,可以达到不用同步锁的效果 1、任何人发布要实时收到吗?并发小的话 浏览器通过循环ajax去掉后台直接从数据库取数据2、并发大的话不要直接使用数据库 中间设置一层缓存,数据直接去缓存读取(参考memcache)3、如果要求聊天性质的...这个性能会消耗的非常大 直接通过推技术实时推到前台页面(参考 dwr推技术) Java swing 异常 0>=0 关于comparable接口的说法是否正确,大家看下。。 线程栈是个什么东东? Java过时类的取代问题 JAVA UDP 通信的一个小问题 SOS:java函数定时问题 decimalformat的默认格式 Swing 高手请进 kele8的桌球游戏、打雪仗游戏是用JAVA写的吗? java方法中的返回值问题 struts.xml造成的404问题 跪求大侠告知,java控件JTextArea怎么能实现想DOS命令行一样的永远存在焦点的效果!
Google这个方面使用的是iFrame来实现的。
通常只能考虑换一种方式,或者,在现有基础上,实现负载均衡。
换一种方式,应该是指抛弃B/S架构或者采用Push技术;
负载均衡,应该是指多个Tomcat服务器进行均衡,或者,多数据库进行均衡。我的想法是:
首先,考虑服务器的负担瓶颈是什么。
通常情况下的Web聊天室,采用的是定时刷新页面的技术,每次刷新的内容,都是聊天室的聊天信息。
而所有的聊天信息,都保存到数据库当中。
那么,我们一步一步的来,负担重是由于并发量太大,造成页面响应缓慢,
并发量目前不好解决,但,可以想办法加快响应速度。
如果定时刷新的是静态页面,那么,对于服务器来说,不是相对会非常轻松吗 ?
要想相应速度快,只能从数据访问上面着手了。问题的瓶颈就应该是聊天数据的访问上面。其次,采用什么样的方式来解决瓶颈问题。
想来想去,也只想到了缓存技术。
服务端和客户端都采用缓存技术。
先说客户端的缓存,要存放历史的聊天记录,每次刷新页面,只取新的记录,
取到后,连同历史记录一同显示给用户。刷新的时间间隔要适当的长一些,
如果项目非要即时通信,那干脆换一种方式得了。
当然,客户端还要有防止重复提交和频繁提交的功能。服务端的缓存,其实就是一张内存中的快表,可以通过时间来快速获取数据。
快表是一个先进先出的队列,只保存3次刷新间隔的聊天记录。
服务端创建一个守护线程,每次刷新间隔时间,都将聊天历史记录,从快表中迁移至数据库中。
记住是迁移,不是复制。每次只迁移旧时间间隔的聊天记录,并且迁移的数据都不叠加。
另外在开2个缓存区,(B,C)
用户先用B, 这时把C值复制给A
完事后用户用C,这时把B的值复制给A
这样还可以不用同步锁
用户获取数据的时候用 foreach 来复制
这样在转化 B, C 的时候不会出错
不断的换用户需要读取的一段缓存,可以达到不用同步锁的效果
2、并发大的话不要直接使用数据库 中间设置一层缓存,数据直接去缓存读取(参考memcache)
3、如果要求聊天性质的...这个性能会消耗的非常大 直接通过推技术实时推到前台页面(参考 dwr推技术)