高并发解决方案
高并发是web开发中经常会遇到的问题,因此,作为一个web开发者,应该深入了解什么是高并发及其高并发解决方案,我做web开发也有好长时间,
对高并发问题也略知一二,下边就谈谈高并发问题,和大家一起学习,有写的不对的地方或者有遗漏的地方,还请大家批评指正。
一. 什么是高并发?
高并发说的通俗易懂点,就是大量请求访问服务器,对服务器造成巨大压力导致数据出错,服务器宕机等一系列问题。举个例子:一架飞机最多承载300旅客方可正常起飞,
如果一下子承载400旅客,超出飞机的最大承载量,会引起飞机无法正常起飞的问题,高并发就类似于这个。面向用户的系统经常会遇到高并发问题,比如 淘宝,天猫,京东这些
电商网站,每年的6.18以及双11并发量达到上千万甚至更高,对服务器造成巨大压力,但很少听到消息说某某网站双11挂掉了,导致一件商品也没卖出去,为什么?因为他们从硬
件,程序,架构,数据库各个方面做了优化从而提升服务器的最大承受压力。所以下边谈谈如何应对高并发?
二. 高并发解决方案
面对高并发问题,如何去提升服务器压力?随着并发量的增加,我们需要一步一步的去优化它,这是一个漫长的过程,优化需要从以下几个方面去入手:数据库优化,架构优化,
程序优化(业务拆分)等方面。
1. 数据库优化:数据库采用读写分离,A数据库用户读操作,B数据库用户写入操作,然后将B数据库数据实时写入到A数据库,这样可以将原来一个数据库承担的压力分担到两个
数据库上。
2. 架构优化:根据实际情况可以适当增加应用服务器节点,应用服务器之间采用集群,通过nignx负载均衡,将客户端请求分摊到几个应用服务器上边。同时,可以在应用服务器与
数据库服务器之间增加缓存服务器,根据实际情况可以增加多台缓存服务器,所有的请求经过负载均衡服务器到达应用服务器后,先去缓存服务器中查找,如果命中,就从缓存中拿数据,
如果未命中,在去数据库中查数据同时缓存到缓存服务器,下次相同请求过来时就去缓存中取数据,这样做,可以减少数据库压力,请求都去缓存服务器中拿数据。
注:集群环境下的web应用服务器需要注意session数据共享问题
3. 程序优化:随着业务量的增多,我们需要对业务进行拆分(数据拆分),就是将一个庞大的系统按业务逻辑的不同,我们拆分成多个子系统,子系统之间通过PRC远程通信等方式
相互协作,使系统保持正常运行状态。按业务将系统拆分成若干个子系统有利有弊:
a. 响应速度变慢,系统之间通过接口调用,响应速度变慢,但吞吐量大。
b. 代码的耦合度降低
c. 某一块逻辑出现问题,不影响整个系统运行
d. 团队之间的依赖性减少,可以做到各司其职
e. 分布式系统部署运维难度大,成本高
注:分布式系统需要注意事物问题,本地事物将不能满足需求
时间有限,就写这么多,写的不完整,还可以从很多细节方面去优化, 描述不准确的地方希望大家批评指正。
浙公网安备 33010602011771号