上一篇我们介绍了秒杀系统的三阶段。我们从这三个阶段能看得出来,每一个阶段我们应该采取哪些措施,在哪些环节可能会遇到性能瓶颈,那么我们可以采取哪些方案提升系统性能呢?
一、异步解耦
这个异步解耦其实就是把系统进行分离,例如我们前面提到的秒杀系统的代码应该和正常的商场业务代码进行分离,独立出微服务模块,这就是一种解耦。还有就是微服务里面,我们使用openfeign进行远程调用,这也是一种解耦,当一个模块出现问题,不会影响到其他的模块。还有就是通过mq进行系统分离,这也是一种解耦方式。
二、限流-防刷
限流这块我们也介绍过,在网关层限流,通过mq限流等,网关层限流,我们可以在nginx上限流,还可以在微服务网关(例如:Spring cloud gateway)进行限流,常见的限流方案有:漏桶算法,令牌桶算法等,但是令牌桶是使用率比较高的。
防刷这块主要是防灰产的,我们可以通过日志系统收集的nginx accesslog,对accesslog进行在线实时分析,设置一定的评率,例如:每秒请求某个url的ip超过5次就直接拉入黑名单,在黑名单的ip都是无法进行请求的。
三、读写分离
读写分离这里也是一个非常常用的,主要应用在缓存和数据库中,常见的有一主一从,一主多从,多主多从的方案。这样可以达到资源控制的目的。尽量协调并发量。
还没有评论,来说两句吧...