[Golang 修仙之路] 微服务:单机限流之漏桶 & 令牌桶

28 阅读1分钟

参考:《亿级流量架构设计与实战》

1. 漏桶

关键词:

  • 请求可以以任意速率进入服务器
  • 服务器以固定速率处理队列中的排队请求,保障了流量的稳定性
  • 可以通过队列实现

image.png

缺点:

  • 不擅长处理流量波动(流量非常小了,仍然需要死板地以固定的速率处理)

2. 令牌桶

消除了漏桶的缺点。

关键词:

  • 以恒定的速率向令牌桶中放入令牌。
  • 令牌桶容量为x,桶满了,后续令牌放不进来。
  • 请求想要被放行,必须获取一个令牌。
  • 如果桶中没有令牌,则该请求被限流(拒绝)

image.png

优点:

  • 对流量波动的应对更加灵活,既能处理高并发场景,又能平滑控制流量。