在遇到高并发业务时,首先重中之重是 要清晰业务逻辑,以合理巧妙又不影响用户体验的情况下,尽可能避免高并发带来的性能问题 这样才能使系统稳定运行,切记不要上来就整各种高端技术,大兴土木。当然,也有无法避免高并发的情况 接下来,我们介绍下当遇到高并发场景时,我们的思路是什么?如何入手?如何监测?崩盘时补救?
缓存
缓存的目的是提升系统访问速度和增大系统能处理的容量 将高并发业务涉及到的数据存入高速缓存中,提高执行速率
降级
降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开
限流
限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。
一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率);其他还有如限制远程接口调用速率、限制MQ的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流。
常见的限流算法有:令牌桶、漏桶。计数器也可以进行粗暴限流实现。
