Skip to content
gqlxj1987's Blog
Go back

ApiGateway Limit

Edit page

原文链接

限制流量可以使 API 服务在下面的场景中更可靠:

负载降级

基于使用量的负载降级

我们将流量分为两种类型:关键 API 请求(例如,创建订单)和非关键请求(例如,列出历史订单)。我们有一个 Redis 集群,用于计算当前每种类型的请求数量。

基于worker利用率的负载降级

我们追踪可用的 worker 数量。如果某个 worker 太忙,无法处理分配给它的请求,它会缓慢降级非关键请求,当然是先从测试请求开始。如果降低测试请求的过程中,worker 的处理能力恢复到好的状态,那我们就可以开始缓慢地恢复流量(取消降级)。

我们使用令牌桶算法 [2] 来进行流量限制。该算法有一个集中的桶,为每一个请求分配一个令牌,并不断地缓慢地在桶中放入令牌。 如果桶为空,则拒绝该请求。在我们的例子中,每个用户都被分配一个桶,每当他们产生一个请求时,我们从这个桶中移除一个令牌。

我们通过 Redis 来实现我们的限速器。 既可以自己搭建和运维 Redis 实例,或者如果已经使用 AWS,则可以使用 ElastiCache 这样的托管服务。


Edit page
Share this post on:

Previous Post
raft协议简介
Next Post
外卖的订单分配策略