创建集群流控规则¶
流控规则、熔断规则、授权规则、热点规则和系统规则只能统计本地的资源调用信息,使用于单机应用。但是在如今的云原生时代下,很多应用都是部署在集群中,可能分布在不同的机器上。在分布式场景下,上述规则存在一些缺点。例如,路由到集群中每台机器的流量不均衡,可能尚未达到整个集群的阈值总和时,某一台机器就因此超出阈值而停止服务。
集群流控模式正是为了解决这种问题而设计的。在集群流控模式下,需要理解两个概念:
- TokenServer: 统计集群中所有实例的 QPS 并进行加总求和,将总值与集群整体阈值(单机阈值✖️机器数量)进行比较。如果尚未达到集群整体的阈值,则向客户端发送 Token。
- TokenClient:即应用分布在不同机器上的各个实例。客户端会向 TokenServer 请求 Token。如果能成功获得 Token,说明尚未达到整体阈值,该实例可以继续处理请求。如果不能获得 Token,表示已经达到了整体的阈值,对该实例的请求会直接失败。
Note
- TokenSever 需要配置在 Nacos 的
public
命名空间,分组(Group)应为SENTINEL_GROUP
。 - TokenSever 是单点的,一旦 TokenSever 宕机,集群流控模式就会退化成单机限流模式。
创建集群流控规则的方式如下:
-
点击目标托管注册中心的名称,然后在左侧导航栏点击 微服务列表 ,在最右侧点击更多按钮选择 治理 。
注意需要治理的微服务在 是否可以治理 一栏应该显示为
是
,才能进行后续步骤。 -
选择 集群流控 ,然后在右侧点击 创建集群流控 。
-
参考下列说明填写规则配置,并在右下角点击 确定 。
- 服务器名称:Token 服务器的名称
- TokenServer IP:Token 服务器的 IP 地址
- TokenServer 端口:Token 服务器的端口号
-
Client 选择:集群流控客户端,用于向所属 TokenServer 通信请求 Token。
-
创建完成后可以在系统规则列表中查看新建的规则。在右侧点击更多按钮可以更新规则或者删除该规则。