论坛首页 Java企业应用论坛

投票系统性能问题

浏览 16060 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-05  
semi_sleep 写道
xwtt 写道
如果是我来做的话 ,

1、写个对象池
2、把投票都放到对象池中
3、如果池满了再插入到数据库中

1、第一次查的话从数据库查,并放到内存池中
2、以后都直接从内存池中查

放在内存里面的话,如果同时做多台服务器集群怎么办呢?

没弄过集群 ,如果是集群的话,我初步的想法是我会把这个写成一个服务 通过http异步调用
0 请登录后投票
   发表时间:2008-12-05  
xwtt 写道
semi_sleep 写道
xwtt 写道
如果是我来做的话 ,

1、写个对象池
2、把投票都放到对象池中
3、如果池满了再插入到数据库中

1、第一次查的话从数据库查,并放到内存池中
2、以后都直接从内存池中查

放在内存里面的话,如果同时做多台服务器集群怎么办呢?

没弄过集群 ,如果是集群的话,我初步的想法是我会把这个写成一个服务 通过http异步调用

我认为用内存数据库,最大的好处是不用自己维护代码,因为内存数据库已经把性能和同步问题都给搞定了。
内存数据库也有支持分布式,所以集群不是问题
0 请登录后投票
   发表时间:2008-12-05  
jiangshaolin 写道
看看腾讯是怎么做的吧,腾讯很多新闻都有投票的,一般好新闻投票达几万到几十万不等,我今晚特意注意了一下,我隔几秒刷新一下页面,评论能多出几百.


别看腾讯的,娱乐网站上的东西的都是瞎忽悠。这个网站非常不负责任,娱乐大众,很多片面的报道刺激网民发贴子,接着开骂,很多报道只有事实的一部分,而并不是全部,娱乐网站就是娱乐网站,出不了好鸟。最鄙视的是它的个人空间,必须使用IE,必须安装插件,必须更新插件,必须启用ActiveX,防火墙必须为个人空间专门打开.exe执行文件,更可笑的是一直都使用它的Beta版程序。
0 请登录后投票
   发表时间:2008-12-05  
大猫汤姆 写道
jiangshaolin 写道
看看腾讯是怎么做的吧,腾讯很多新闻都有投票的,一般好新闻投票达几万到几十万不等,我今晚特意注意了一下,我隔几秒刷新一下页面,评论能多出几百.


别看腾讯的,娱乐网站上的东西的都是瞎忽悠。这个网站非常不负责任,娱乐大众,很多片面的报道刺激网民发贴子,接着开骂,很多报道只有事实的一部分,而并不是全部,娱乐网站就是娱乐网站,出不了好鸟。最鄙视的是它的个人空间,必须使用IE,必须安装插件,必须更新插件,必须启用ActiveX,防火墙必须为个人空间专门打开.exe执行文件,更可笑的是一直都使用它的Beta版程序。



不要偏题哦。。。呵呵。。。
0 请登录后投票
   发表时间:2008-12-05  
madwind 写道
sdh5724 写道
如果是多个服务器, 用外部的CACHE会有同步问题的。
仅仅是用计数器么

可以这么说,比如一个选项,十个人投票,需要做十次update操作,如果是直接用操作数据库,数据库自己有行级锁,但如果投票人多的话,会对数据库操作非常频繁;如果用cache,在内存里面算,就需要自己做同步,但同步的开销也不小。


用map,把人数和问题存起来,每投一次票,就把人数拿出来改一次,每隔一个小时把map里的值往数据库写一次。
0 请登录后投票
   发表时间:2008-12-05  
个人觉得关键是在数据库操作和服务器当掉内存数据丢失之间找个平衡!
0 请登录后投票
   发表时间:2008-12-06   最后修改:2008-12-06
首先确定:
1:你网站的服务范围是多大?有多少访问量每秒?
2:你的mysql存取方案现在是否能满足访问量需求?
   2.1:如果满足需求==>enjoy
   2.2:不能满足需求,经费允许多+服务器和mysql?确定不满足需求的原因是io问题,还是硬盘写入问题,系统负载多大?
      2.2.1,允许===>enjoy
      2.2.2,不允许==>2.3
   2.3:分析你的数据是读取多还是写入多,写入多+cache是浪费时间。读取多==>2.4
   2.4:掉电保护?数据是否允许丢失?实时性?
   2.4:读取多,数据更新不频繁,数据量可控内存可控,单条较多==>ibatis or hibernate cache方案。不能满足需求==>2.5
   2.5:确定不满足需求的原因,这范围太广了。需要较多知识去分析。但如果是确实数据量太大,内存不可控或gc时间不可忍受,但计算或观察cache的命中率可以满足需求。那就用memcache或其他c c++的cache方案。其他原因=》3
   3:花100块找个打手趁你们老板下班开车去泡妞的路上蒙了他脑袋一顿爆cei.让他妥协多买服务器。

1 请登录后投票
   发表时间:2008-12-06  
感觉没那么大问题,投票时直接insert一个记录,统计时用select,不会对数据库造成太大压力吧
0 请登录后投票
   发表时间:2008-12-06  
repsihWDX 写道
首先确定:
1:你网站的服务范围是多大?有多少访问量每秒?
2:你的mysql存取方案现在是否能满足访问量需求?
   2.1:如果满足需求==>enjoy
   2.2:不能满足需求,经费允许多+服务器和mysql?确定不满足需求的原因是io问题,还是硬盘写入问题,系统负载多大?
      2.2.1,允许===>enjoy
      2.2.2,不允许==>2.3
   2.3:分析你的数据是读取多还是写入多,写入多+cache是浪费时间。读取多==>2.4
   2.4:掉电保护?数据是否允许丢失?实时性?
   2.4:读取多,数据更新不频繁,数据量可控内存可控,单条较多==>ibatis or hibernate cache方案。不能满足需求==>2.5
   2.5:确定不满足需求的原因,这范围太广了。需要较多知识去分析。但如果是确实数据量太大,内存不可控或gc时间不可忍受,但计算或观察cache的命中率可以满足需求。那就用memcache或其他c c++的cache方案。其他原因=》3
   3:花100块找个打手趁你们老板下班开车去泡妞的路上蒙了他脑袋一顿爆cei.让他妥协多买服务器。




3:花100块找个打手趁你们老板下班开车去泡妞的路上蒙了他脑袋一顿爆cei.让他妥协多买服务器。

太太。。。。。。。太经典
值得尝试 不过后果很严重
=_=!
1 请登录后投票
   发表时间:2008-12-08   最后修改:2008-12-08
说实话,我觉得是楼主虚构出困难。。属于没有困难制造困难也要上。

先去拿拿基本数据吧
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics