Sentinel 是怎么实现集群限流的?

Sherwin.Wei Lv7

Sentinel 是怎么实现集群限流的?

回答重点

Sentinel 通过选举一个集群限流服务端(Token Server),由服务端来集中管理限流策略,从而协调多个实例的流量控制,实现更精确的流量管理。

在 Sentinel 的集群限流模式中,所有实例会被划分为Token ServerToken Client 两种角色。

  • Token Server 负责集中管理限流的令牌,它会接收来自多个 Token Client 的请求,并判断是否发放令牌。如果请求成功获取到令牌,则表示请求通过;否则,表示请求被限流。
  • Token Client 是各个服务实例,它们在发起资源请求时,会先向 Token Server 请求令牌,如果获得许可,就继续处理请求,否则请求会被拒绝或进入降级逻辑。

集群限流流程如下

  • 当一个服务实例(Token Client)有请求进来时,它会首先向 Token Server 发送一个令牌申请请求。
  • Token Server 根据预设的限流规则,判断当前请求是否可以通过,并返回结果给 Token Client
  • 如果请求获得了令牌,Token Client 就允许继续处理该请求;如果未获得令牌,则根据设定的限流策略(如直接拒绝、排队等待等)进行相应处理。

65305357-8f39bc80-dbb5-11e9-96d6-d1111fc365a9.png

Sentinel 支持对多个 Token Server 进行配置,实现多 Token Server 模式,从而避免单点故障。多个 Token Server 可以对令牌请求进行负载均衡,提高系统的可靠性。
当 Token Server 出现故障时,可以自动切换到其他可用的 Token Server,以保证集群限流的持续性。

扩展知识

Sentinel 集群限流的配置步骤

配置 Token Server 和 Token Client

  • 在集群限流中,需要先确定哪些实例作为 Token Server,并在 Sentinel 控制台中配置这些实例的 IP 和端口。
  • 然后,将其他实例配置为 Token Client,并指定其连接的 Token Server 地址。

集群限流规则的定义

  • 登录 Sentinel Dashboard,进入流控规则配置页面。
  • 选择流控类型为 Cluster Flow Control(集群流控),设置流控的资源名称、阈值类型(如 QPS)、限流策略(如匀速排队)。
  • 保存规则后,规则将自动下发到 Token Server,Token Server 会根据这些规则管理流量。

集群限流的动态调整

  • Sentinel 支持通过配置中心动态调整限流规则,开发者可以在 Sentinel 控制台上实时修改流控规则,而不需要重启服务。
  • 通过这种动态调整方式,可以更灵活地应对系统流量的变化,尤其是应对流量高峰期的流量突增。
Comments