新闻正文

疯狂代码:WEB2.0关于用户在线和短信的终极解决方案

来源: 疯狂代码     2007-11-4 05:55:33 网友评论 0 条 字体:[ ] ~我要投稿!

    我在《写给WEB2.0的站长 不仅仅是泼冷水》谈到了WEB2.0的一些实际问题,下面的将会是一个系列,完成2.0系列的一些技术难题的终极解决方案。

字串2

    用户在线是很多WEB2.0网站都会遇到的问题,其实是个再也简单不过的问题,但其实也是一个难度最高的程序,现在分析一下网络上常见的在线解决访问,并提出一个终极方案。 字串1

方案一:数据库记录

字串7

    这个是用的最多的一个方案了,动网论坛,DISCUZ等都是,一般的程序员也会这么想这么做,对于小流量网站,我们无可厚非,使用不会出问题了,如果是大流量网站:

字串1

    试想一下,如果用户每次更新页面都要进行查询,更新最后活动时间,会出现什么问题?你的在线程序比你整个网站的负载都要高,如果这个在线程序甚至不是独立的域名的话,那么就死定了。
temp表的负载会高的惊人,而数据库日志也会以每小时100M的速度增加

字串9

方案二:Appliction变量 字串6

    这个应该也是比较常见的方案了,速度很快,缺点也很明显,只能记录次数,不能记录更详细一点的信息了。

字串2

方案三:内存中的DATASET 字串7

    原发是一个.net程序员,页面还写出了详细的代码,但是,这个程序员可能就不知道有个大量,有个并发的问题,维护在内存中的变量被并发修改就会立刻崩溃,基本上不能用的代码,估计这个程序员的站点的流量每天不超过1000个IP,但是还有很多没有体验过的人在吹捧这个代码如何的好。其实如果你的站点的10分钟在线人数超过20个你就会发现了,这个程序本身就是错误的,不能用,呵呵。

字串5

总结: 字串2

方案一: 通用,但不能实现负载,数据库压力太大
方案二:性能好,但不能记录详细信息
方案三:能记录详细信息,性能还行,但是根本就不能用

字串8

思考: 字串6

    有没有一种方案能综合三种方案的优点,还不占用系统资源呢,OK,拿出一点独门绝创的东西出来(实际测试,2W在线的情况下P43.0的CPU不超过10%)。

字串8

    其实还是内存表,内存中维护一个在线列表,为了解决并发的问题我们在每次操作更新的时候仅仅LOCK一下,问题解决。 字串8

    再问:    那么多的并发内存修改是可以的,但是如何CPU会不会高?列表的遍历会不会浪费时间!OK,我们再来优化一下。

字串3

    再来:如果我把在线用户分组,每个组分100个用户,然后每个组的序列号记录在HASH表中,HASH表中再保存每组内存ArrayList的数据,那么LOCK的话仅仅需要LOCK这个100个用户了,遍历问题解决掉,在线人数越多,性能越好(CPU可以控制在7%了)。 字串3

    再问,时这样,在线用户还是请求还是需要通过系统来解决,再高的话怎么办?

字串7

    OK,咱们来个终极的优化方案:

字串7

    还是用户分组,100个用户一组,但是WEB server只负责把把列表输出为静态文件,列表每分钟更新一次,客户短用AJAX来请求查询状态。 字串1

    再问:但是有人就问了,AJAX涉及一个跨域的问题,其实这个问题更简单了。给页面一个domain属性即可看一下CPU,是多少,我想你会笑掉大牙的...我可以负责任的说,普遍的刷新时间是20分钟,你的WEBserver可以调整到 3秒来刷新。 字串2

    站长网 疯狂代码原发,转载请注明出处 字串3

    下篇再提供一个关于在线短信,实时请求的终极解决方案,敬请关注 字串4

责任编辑:稻草 QQ:449156
(本文仅代表作者观点,与站长网立场无关.)本文作者:疯狂代码 个人空间 档案 留言
原来技术并不是万能的.... 本人在admin5文章均为原创首发,希望能给你带来帮助


上一篇:简单心得:网站广告布局经验
下一篇:我竟然享受了51LA贵宾VIP统计
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索

  • Google 17Admin.Net
关于本站 网站地图 Friefox Picasa 网站赚钱 联系方式  
Copyright 2006-2008 www.17admin.net All Rights Reserved
免责申明:一起站长吧(www.17admin.net)上的所提供文章和资源大部分来源于网络,为方便本人
及广大新手站长学习而收集整理而来。如有侵犯你的版权,请立即联系本站,本站将在3个工作日内删除 。