(3)限流-削峰填谷<架构解决方案>

2020-12-03  本文已影响0人  hedgehog1112

高并发常规手段:扩容、静态化、限流、缓存、队列

概要:guava的RateLimit、Nginx + redis + lua、sentinel

1、过度设计失败案例:

生成订单号—扣库存—生成订单—付款,扣完库存通知mq,mq没立刻返回,卡在生成订单上,阻塞

2、guava的RateLimit限流(令牌桶)

    1)每次请求获1个token2s才可从桶中获取10个,每秒只能5个并发

2)应对突发流量:一次拿完5个,等1s,因为放5个要1s。

acquire前休眠1s,限流效果变化,因为已经放入足够。

3)从慢速过渡到平均:设置缓冲时间

3、Nginx + redis + lua实现限流限流

1)开启Nginx限流

2)每个Nginx节点对应着独立的redis节点。

redis节点存限流配置:限流名单、错误码、提示、阈值、开关。

请求来临,Nginx向redis发起evalsha命令,执行lua脚本,验证是否超过阈值:

    (1)目标url作为key,调用redisincrby增加访问次数expire设置过期时间

    (2)最后根据阈值判定走向,ps:阈值到,要等key过期重新计算

4、sentinel限流及其他

轻量级,低侵入,熔断降级

其他:分段秒杀、答题、验证码

mq部分:https://www.jianshu.com/p/886552f434d4

上一篇下一篇

猜你喜欢

热点阅读