高并发场景限流方式

76 篇文章 2 订阅
31 篇文章 0 订阅

为什么要限流

举例1:你开发了一个企业中非常核心的一个服务,日常情况下会有上百上千个应用调用,如果对服务的调用不加限制的使用,可能会给服务器造成非常大的压力,直接导致所有服务节点全部被请求占满,从而产生很大的生产事故。

举例2:公司搞了个大促销活动,准备了10台服务器来应对活动的到来,但促销活动开始后,原本估计只有100万人参加的促销活动,瞬间涌进来1000万用户,远远超过了服务处理能力的访问请求,导致后端的服务器直接满负荷运算,并伴随着大量的资源抢占和上下文切换,使得普通处理能力非常慢,除了直接影响业务请求的相应时间,造成更多的业务请求排队,甚至让整个平台崩塌。

像以上类似的场景都是因为平台没有提前做好评估和不具备限流导致的结果。限流的作用相当于电路上的保险丝,当过载的时候掐掉一些流量,让系统有能力集中资源以较快的速度处理平台处理能力范围内的业务请求,说白了就是一种保护策略,让平台保持稳定运行。

限流的方式

1.前端限流

用户的请求首先会通过前端web服务器分发到后端的应用集群上,一般用的比较多的前端web服务nginx就具备这个功能,nginx的limit_conn模块,可以用来限制瞬时并发连接数,在前端设置限流是最合适的限流拦截点。在这层限流后,一定会有部分用户的请求得不到系统正常的处理,所以平台一般会给用户返回到限流页面,在一定程度上减少用户因为请求没有成功处理的失落体验,限流页面的风格要和当前业务活动场景风格统一,页面也要包含跳转引导界面,以形成用户体验和业务处理流程的闭环,比如页面可以提示系统太忙了,请稍后再试试这样的友好提示语。

2.中层限流

中层限流的方式和策略有很多,具体根据自身的业务场景来选择,一般常用的有限制接口调用速率,接口超时设置,通过MQ排队方式处理业务,特殊的业务可以走缓存等等方式。

3.数据库限流

数据库限流基本是默认大家都在用的,一般都是配置了数据库连接池来限制总并发数。

这三种限流在整个平台体系里面是呈漏斗状的,越上层的服务器处理的事务越轻,应付请求的能力也越强,也就意味着同一请求越上层处理时间越短。前端的流量是最大的,到了中层会拦截掉一半,然后最终在数据库的又是少了一半。

6666666666e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanchufeng2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值