【sentinel】sentinel 集群流控中的Token Server与Token Client的含义(七)

前言

官网
https://github.com/alibaba/Sentinel/wiki/集群流控
首先,通过流控规则,我们已经可以实现集群流控。那么控制台最下方的集群流控Token ServerToken Client是干嘛的呢?

官方介绍
为什么要使用集群流控呢?假设我们希望给某个用户限制调用某个 API 的总 QPS 为 50,但机器数可能很多(比如有 100 台)。这时候我们很自然地就想到,找一个 server 来专门来统计总的调用量,其它的实例都与这台 server 通信来判断是否可以调用。这就是最基础的集群流控的方式。

另外集群流控还可以解决流量不均匀导致总体限流效果不佳的问题。假设集群中有 10 台机器,我们给每台机器设置单机限流阈值为 10 QPS,理想情况下整个集群的限流阈值就为 100 QPS。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。

集群流控中共有两种身份

  • Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。
  • Token Server:即集群流控服务端,处理来自 Token Client 的请求,根据配置的集群规则判断是否应该发放 token(是否允许通过)。

官方demo
sentinel-demo-cluster 提供了嵌入模式和独立模式的示例:

实现token-servertoken-client

白话文:
比如有一个dubbo消费端,三个dubbo服务端。这时候要做集群流控,实现token-server和token-client。

  • 首先,我们要把三个dubbo服务端都注册到sentinel控制台。
    要求:-Dproject.name的值一样才能注册到一块;或者如果不加它,那么启动类的名字要一样也可以。这里特别说明一下,如果项目是springcloud,不加-Dproject.name配置的话,好像默认是服务名称。如果不是,可以通过源码中的sentinel-core中的SentinelConfigLoader来查看配置,逐步修改
  • 然后,添加token-server

在这里插入图片描述

剩余问题

  1. 集群限流 - Token Server 列表中的qps总览数值变化
  2. 集群限流时,如果当前服务已被限流,则可以自动 failover 到其它机器
  3. Token Server 自动管理(分配/选举 Token Server)

最后

不写了,从入门,到放弃。 免费的(sentinel)和收费的(ahas)就是不一样。问题太多。

备注

教程1:https://blog.csdn.net/qq_26323323/article/details/103935230


版权声明:本文为s1441101265原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。