如何处理服务器的高并发问题

高并发处理的基本思路


1)从客户端看 :

   尽量减少请求数量,比如:依靠客户端自身的缓存或处理能力;尽量减少对服务
端资源的不必要耗费,比如:重复使用某些资源,如连接池客户端处理的基本原则就是:能不访
问服务端就不要访问。


2)从服务端看:

     增加资源供给,比如:更大的网络带宽,使用更高配置的服务器,使用高性能的
Web服务器,使用高性能的数据库;请求分流,比如:使用集群,分布式的系统架构;应用优化,
比如:使用更高效的编程语言,优化处理业务逻辑的算法,优化访问数据库的SQL。总之,基本原则
是分而治之,并提高单个请求的处理速度。


高并发处理的基本手段

客户端发出请求层面,常见的手段有:尽量利用浏览器的缓存功能,减少访问服务端,
比如:js、css、图片等;可以考虑使用压缩传输的功能,减少网络流量,也会提高传输速度;
考虑使用异步请求,分批获取数据。
 前端接收客户端请求层面,常见的手段有:动静分离,部分静态资源可以直接从Nginx返回;
按请求的不同,分发到不同的后端进行处理,比如:负载均衡、业务拆分访问等;前面再加上一层
来做多个Nginx的负载均衡,比如:LVS、F5等;还可以在更前面使用CDN服务;还可以对动态内容
进行缓存,尽量减少访问后端服务。
 Web服务器层面,常见的手段有:使用最新的JVM,并进行配置优化;对Web服务器进行配置优化,
比如:调整内存数量、线程数量等;提供多个能提供相同服务的Web服务器,以实现负载均衡;
仔细规划Web服务器上部署的应用规模;对Web服务器进行集群。
 Web应用层面,常见的手段有:动态内容静态化、Java开发优化、优化处理业务逻辑的算法、合理
高效的利用缓存;优化访问数据库的Sql,可以考虑利用存储过程等数据库的能力;合理使用多线、
程,加快业务处理;部分业务可以考虑内存数据库,或者是进行纯内存处理;尽量避免远程调用、
大量I/O等耗时的操作;合理规划事务等较为耗资源的操作;合理使用异步处理;对部分业务考虑
采用预处理或者预计算的方式,减少实时计算量;内部系统间业务尽量直接调用、直接处理,
减少WebService、工作流等。
数据库层面,常见的手段有:合理选择数据库的引擎,比如Mysql的InnoDB与MyISAM引擎;进行配置优化;
可以考虑使用存储过程来处理复杂的数据逻辑;数据库集群,进行读写分离;合理设计数据库的表结构、
索引等;分库、分表,降低单库、单表的数据量。

猜你喜欢

转载自blog.csdn.net/Mrek_fast/article/details/88713959