因为做活动,一时间有很多流量过来,造成服务器扛不住,时不时的崩了。第一次崩溃的时候,就深更半夜的就临时先补上限流,先顶着。然后第二天我又弄了个tomcat,两台服务应该不会有问题,再配上nginx。
首先简单通俗的介绍下:一个应用 只是 一个实例,打个比方:一个应用 只是一个收营员,来了1000个顾客,那多弄几个营业员就能快点啦,服务器是产地,多几个服务器,就可以 多几个营业员,能开多几个 cpu 内存撑得住的 就可以轮流休息 谁空谁接 谁闲谁上,搞定业务。
nginx主要配置这两个地方:
轮询(weight) ,你其实也可以用ip_hash或其他第三方插件的比如url_hash
upstream paint {
server 47.110.10.98:8081 weight=1 max_fails=3 fail_timeout=10; #tomcat服务器的IP和端口
server 47.110.10.98:8083 weight=1 max_fails=3 fail_timeout=10;
}
接下来只要写好对应的proxy_pass就可以
server{
。。。
proxy_pass http://paint; #需要映射到的ip地址与端口号
。。。
}
不过使用负载均衡要注意订单,要注意订单是否会被 重复,
不过防止订单重复各有各的法子,也可以按实际业务出发进行拦截多余的订单(我们也有token令牌的);
业务如果是即时(比如话费)的,就判断下,你判断下该用户的订单号有没有重复的,还有判断下该用户再1,2,3秒内是否有下过订单了,尤其是再回调的时候,判断下支付宝的订单数和聚合(第三方接口)的订单是否一致。多加判断作为保险;
如果不是即时的,有token令牌加断下该用户的订单号有没有重复,加上回调的时候,判断下支付宝的订单数和订单是否一致
订单重复这些都是具体问题具体分析了,很多东西还是看业务需求