高并发带来的问题极其解决方法

1高并发、服务器压力大、性能变差

2容易产生单点故障

3所有的静态资源(img、html、css、js)都交给了tomcat来处理,导致性能下降

高并发带来的问题极其解决方法_第1张图片

解决高并发、服务器压力大、性能变差问题使用mysql集群

高并发带来的问题极其解决方法_第2张图片

解决:不把mysql部署到服务器里面,先请求服务器,服务器再去请求mysql数据,可以做多机集群,大致分为三步,主从同步、读写分离、主备切换,一两个数据库肯定支持不了大量的数据访问请求的,所以要集成多个数据库,在多个数据库里确定一个主数据库用于插入数据,然后查询通过从数据库查询出来。

主从同步 就是在主数据库插入数据后把数据生成一个二进制的文件,并授权一个账号,然后从数据库利用账号把二进制文件解析到自己库里,发送请求到数据库,它不知道该访问哪个数据库就要进行读写分离了

读写分离 这时就要通过一个负载均衡器来分发请求给主从数据库,负载均衡器管理着主从数据库的ip和端口号,自己也向外暴露一个请求能访问的ip,负载均衡器的配置文件通过管理主从数据库的ip和端口号来指定数据库是查询还是添加修改,这就做到了读写分离,如果出现单点故障就是负载均衡器挂了

主备切换 最好的解决办法是使用备用负载均衡器,主的均衡器和副的均衡器通过第三方插件keepalive来建立联系,它们之间会一直发送心跳查询,如果主的挂了马上切换到备用负载均衡器;

高并发带来的问题极其解决方法_第3张图片高并发带来的问题极其解决方法_第4张图片

解决容易产生单点故障的问题

高并发带来的问题极其解决方法_第5张图片

解决:做服务器tomcat集群,使用多个tomcat来解决单点故障问题,服务器集群有两个特性一、可扩展的,因为它能动态的添加服务器,二、可用性高,当一个服务器挂掉了,会提供一个正常的其它服务器来继续提供服务,集群有两大作用,一是负载均衡,负载均衡器会根据每个服务器的性能高低合理分配任务,二是容错恢复当一个服务器挂掉了,会提供一个正常的其它服务器来继续提供服务,我们一般使用Nginx服务器作为分发任务请求的负载均衡器,然后向外暴露端口号和ip,一旦请求进来,Nginx会根据tomcat性能情况分发。Nginx之间也是通过Keepalive来保证状态的;

解决所有的静态资源(img、html、css、js)都交给了tomcat来处理,导致性能下降

分布式集群原理图

高并发带来的问题极其解决方法_第6张图片

解决办法:通过使用Redis集群管理静态资源,当需要缓存的静态资源越来越多,我们就要集多台机器做中央缓存,把查询出来的资源写入Redis的中央缓存里,然后通过另一个Redis读取出来,因为Redis是键值对的存储结构,可以通过jsessionId作为key,然后通过这个key去查询对应的value,key存入cookie里,再去Redis取到Value值,如果访问后台先去Redis查找,查找不到再去数据库查询,然后把查询结果存入Redis里。Redis做集群需要twmprox代理服务器来管理多个Redis,并且通过备用twmproxy防止单点故障,主备之间也是使用keepalive建立联系,上面整个分布式集群可以通过cdn(内容分发网络)部署到全国各大地区,以提高访问速度;

你可能感兴趣的:(分享些高并发心得和工具类的使用)