2019/08/26/openapi-gateway-restriction/
前言
开发高并发系统时有多重系统保护手段, 如缓存、限流、降级等....很多情况下我们可以认为网关上的限流与业务没有很强的关联(与系统的承载能力有关), 且各个子系统都有限流这种需求, 将部分限流功能放到网关会比较合适....常用限流玩法
令牌桶
令牌桶算法, 是一个存放固定数量令牌的桶按照固定速率添加令牌. 如图:
?
按照固定速率向桶中添加令牌.
桶满时拒绝增加新令牌....每次请求消耗一个令牌(也可根据数据包大小来消耗对应的令牌数).
当令牌不足时, 拒绝请求(或等待).
特点: 可以应对一定程度的突发....最简单粗暴的方式就是使用计数器进行控制, 处理请求时+1, 处理完毕后-1, 除此之外我们还可以利用前文提到的令牌桶和漏桶来进行更精细的限流.如果网关是单体应用, 我们完全可以不借助其他介质, 直接在应用级别进行限流