论web系统并发竞价问题网络延迟引起跳秒问题的解决方案
由于最近各种蛋事儿,还要每天夜跑,所以小哥并没有更新博文,最近不少事情让小哥对人生有了新的认识,在浅谈技术 之前,给大家总结一哈放到下面,大家共勉。不要说小哥矫情装逼 ,小哥只是偶尔。。。。
一、付出不亚于任何人的努力
二、要谦虚,不要骄傲
三、要每天反省
四、活着,就要感谢
五、积善行、思利他
六、不要有感性的烦恼
好了,废话不多说了,下面进入主题:
当在web系统中,如果你用的是tomcat,那么保证tomcat性能的情况下,它可以支持的最大并发量约为150-200左右,当并发量很大的时候会导致我们的服务很慢更甚者停滞。在这里我说两种解决方案,1. 是给tomcat配置nginx反向代理,2.直接用多只猫来负载均衡。
但是我这里说的并不是如何实现负载均衡的问题。而是竞价系统中时间跳秒问题的解决。
开始系统是每一秒都去后台取一次时间,这样就会在来取的时候出现延迟,导致前台看到的时间是从8秒直接跳到5秒,最后想到的办法是,我们可以五秒或者十秒去后台取一次数据。
前台的定时器:
//倒计时
function show_time(){
$("#timeContentId").text(toDays(senc));
if(0<senc && senc<2000)
biddingTimeRefreshNew.refresh();
senc=senc-1000;
setTimeout("show_time()",1000);
}
function show_time(){
$("#timeContentId").text(toDays(senc));
if(0<senc && senc<2000)
biddingTimeRefreshNew.refresh();
senc=senc-1000;
setTimeout("show_time()",1000);
}
刷新时间的方法:
//数据竞价时间
var biddingTimeRefresh = {
createNew:function(){
biddingTimeRefresh.refresh = function(){
$.ajax({
type:"POST",
url:"online-bidding!refreshBidTime.do",
dataType:"json",
data:{
_projectId:'${myProjectVO.projectId}'
},
success:function(datas,textStatus){
//正常返回数据处理
if(datas.success){
/* //核对倒计时
if(datas.data.myPro.biddingStage.name == 'JJ'){
//竞价倒计时时间
$('#timeContentId').text(datas.data.biddingTimeInterval);
}else{
//报价倒计时时间
$('#timeContentId').text(datas.data.repTimeInterval);
} */
senc=datas.data.sec;
}
}
});
setTimeout( function(){ biddingTimeRefresh.refresh(); } ,8000 );
};
return biddingTimeRefresh;
}
}
var biddingTimeRefresh = {
createNew:function(){
biddingTimeRefresh.refresh = function(){
$.ajax({
type:"POST",
url:"online-bidding!refreshBidTime.do",
dataType:"json",
data:{
_projectId:'${myProjectVO.projectId}'
},
success:function(datas,textStatus){
//正常返回数据处理
if(datas.success){
/* //核对倒计时
if(datas.data.myPro.biddingStage.name == 'JJ'){
//竞价倒计时时间
$('#timeContentId').text(datas.data.biddingTimeInterval);
}else{
//报价倒计时时间
$('#timeContentId').text(datas.data.repTimeInterval);
} */
senc=datas.data.sec;
}
}
});
setTimeout( function(){ biddingTimeRefresh.refresh(); } ,8000 );
};
return biddingTimeRefresh;
}
}
就是让延迟的部分本地走,然后返回来重置初值继续倒计时就ok,这样跳秒的现象几乎不会出现