合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
一、一般什么情况下网站会产生突发高并发情况?
1. 如果是自己官网做活动或者有特别事件,忽然涌入大量真实用户导致服务器扛不住,那只能怪你没提前准备好服务器和带宽,所以加入一个好的CDN,做好网站资源紧张时候的预备措施是十分必要的。
2.如果是未知流量,可能是流量型攻击。
二、带来的问题及解决方法:
1.高并发、服务器压力大、性能变差。
解决方法:不把mysql部署到服务器里面,先请求服务器,服务器再去请求mysql数据,可以做多机集群,大致分为三步,主从同步、读写分离、主备切换,一两个数据库肯定支持不了大量的数据访问请求的,所以要集成多个数据库,在多个数据库里确定一个主数据库用于插入数据,然后查询通过从数据库查询出来。
(1)主从同步 就是在主数据库插入数据后把数据生成一个二进制的文件,并授权一个账号,然后从数据库利用账号把二进制文件解析到自己库里,发送请求到数据库,它不知道该访问哪个数据库就要进行读写分离了。
(2)读写分离这时就要通过一个负载均衡器来分发请求给主从数据库,负载均衡器管理着主从数据库的ip和端口号,自己也向外暴露一个请求能访问的ip,负载均衡器的配置文件通过管理主从数据库的ip和端口号来指定数据库是查询还是添加修改,这就做到了读写分离,如果出现单点故障就是负载均衡器挂了。
(3)主备切换最好的解决办法是使用备用负载均衡器,主的均衡器和副的均衡器通过第三方插件keepalive来建立联系,它们之间会一直发送心跳查询,如果主的挂了马上切换到备用负载均衡器。
2.容易产生单点故障。
解决方法:做服务器tomcat集群,使用多个tomcat来解决单点故障问题,服务器集群有两个特性。(一)可扩展的,因为它能动态的添加服务器,(二)可用性高,当一个服务器挂掉了,会提供一个正常的其它服务器来继续提供服务,集群有两大作用,一是负载均衡,负载均衡器会根据每个服务器的性能高低合理分配任务,二是容错恢复当一个服务器挂掉了,会提供一个正常的其它服务器来继续提供服务,我们一般使用Nginx服务器作为分发任务请求的负载均衡器,然后向外暴露端口号和ip,一旦请求进来,Nginx会根据tomcat性能情况分发。Nginx之间也是通过Keepalive来保证状态的。
3.所有的静态资源(img、html、css、js)都交给了tomcat来处理,导致性能下降。
解决办法:通过使用Redis集群管理静态资源,当需要缓存的静态资源越来越多,我们就要集多台机器做中央缓存,把查询出来的资源写入Redis的中央缓存里,然后通过另一个Redis读取出来,因为Redis是键值对的存储结构,可以通过jsessionId作为key,然后通过这个key去查询对应的value,key存入cookie里,再去Redis取到Value值,如果访问后台先去Redis查找,查找不到再去数据库查询,然后把查询结果存入Redis里。Redis做集群需要twmprox代理服务器来管理多个Redis,并且通过备用twmproxy防止单点故障,主备之间也是使用keepalive建立联系,上面整个分布式集群可以通过cdn(内容分发网络)部署到全国各大地区,以提高访问速度。
针对以上网站会产生突发高并发情况的原因,这边飞度云队长建议大家可以升级服务器的配置以及购买飞度云CDN加速哦。具体的可以咨询飞度云客服:4006-75-4006.
TOP