一、什么是高并发
高并发是一个相对的概念,取决于生产环境,1000 的访问量对于一个很小的公司的网站来说已经是非常高的并发了,可能会出现故障,但是这个 1000 对于淘宝双11来说,就是微乎其微.高并发一般我们指的是突发性的高并发,指的是接近或者超过了生产环境的极限。
高并发问题
- 应用服务器的高并发处理
- 存储服务器的高并发处理
二、应用服务器的高并发
1、限流
我们的接入服务器也好还是应用服务器也好,需要首先考虑限流,比如我的承受能力是 1000/s,现在来了 10000,另外 9000 个等待或者是直接返回错误信息等提示内容。限流的方式,主要是令牌桶算法和漏桶算法。
-
令牌桶算法
指的是类似于线程池的这种东西,我根据我的承受能力,不断是向桶中放令牌,满了我就不放了,来的请求必须先从桶中拿出一个令牌,能拿到说明可以请求,拿不到就不允许请求 -
漏桶算法
就相当于我们漏水的水桶,一般漏水比放水慢,放水可以类比为来的请求,漏水可以类比为处理的请求,你发现只要来的请求大于处理的请求(放水的速度比漏水快,基本上就代表不管你放的水多快,漏都是固定的速度)
2、异步化请求
将整个业务需要经过的服务链进行拆分,将可以异步化的地方进行异步化,提前让请求返回结果,来降低请求的时间,提升服务器的吞吐量,那就代表着我们的服务器在相同的时间里面可以处理更多的请求
3、统一的程序入口-网关
我们的程序不是所有的功能都是高并发的,有的功能访问量非常多,有的很少. 假如说如果出现了突发性并发的时候,我能不能牺牲一部分不常用的功能,然后提供这个被高并发的常用功能的可用性,比如 2018 年淘宝双 11,淘宝降低了用户查询更改收货地址服务的权重.减少了他们的服务器使用量,将多出来