开放API网关实践(三) —— 限流

本文介绍了开放API网关中的限流实践,包括限流的定义、常见限流算法如令牌桶和漏桶,以及应用级和分布式限流的实现。限流在高并发系统中起到保护作用,防止系统过载崩溃。文章还讨论了在集群环境中如何通过共享介质如Redis进行全局限流。
摘要由CSDN通过智能技术生成

开放API网关实践(三) —— 限流

如何设计实现一个轻量的开放API网关之限流

文章地址: https://blog.piaoruiqing.com/blog/2019/08/26/开放api网关实践三-限流/

前言

开发高并发系统时有多重系统保护手段, 如缓存、限流、降级等. 在网关层, 限流的应用比较广泛. 很多情况下我们可以认为网关上的限流与业务没有很强的关联(与系统的承载能力有关), 且各个子系统都有限流这种需求, 将部分限流功能放到网关会比较合适.

什么是限流

众所周知, 服务器、网站应用的处理能力是有上限的, 不论配置有多高总会有一个极限, 超过极限如果放任继续接收请求, 可能会发生不可控的后果.

举个栗子?, 节假日网上购票, 常常会遇到排队中系统繁忙请稍后再试等提示, 这便是服务端对单位时间处理请求的数量进行了限制, 超出限制就会排队、降级甚至拒绝服务, 否则如果把系统搞崩了, 大家都买不到票了╮( ̄▽ ̄)╭.

在这里插入图片描述

我们先给出限流的定义: 限流是高并发系统保护保护手段之一, 在网关层的应用很广泛. 其目的是对并发请求进行限速或限制一个时间窗口内请求的数量, 一旦达到阈值就排队等待或降级甚至拒绝服务.

其最终目的是: 在扛不住过高并发的情况下做到有损服务而不是不服务.

常用限流玩法

令牌桶

令牌桶算法, 是一个存放固定数量令牌的桶按照固定速率添加令牌. 如图:

在这里插入图片描述

  • 按照固定速率向桶中添加令牌.
  • 桶满时拒绝增加新令牌.
  • 每次请求消耗一个令牌(也可根据数据包大小来消耗对应的令牌数).
  • 当令牌不足时, 拒绝请求(或等待).
  • 特点: 可以应对一定程度的突发.

举个现实生活中比较常见的例子来理解, 电影院售票, 每场电影所售出的票数是一定的, 如果来晚了(后面的请求)就没票了, 要么等待下一场(等待新的令牌发放), 要么不看了(被拒绝).

漏桶

漏桶是一个底部破洞的桶, 水可以匀速流出(这时候不考虑压强, 不要杠( ̄. ̄)), 所以与令牌桶不一样的是, 漏桶算法是匀速消费, 可以用来进

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值