sentinel 集群流控 sentinel 持久化到nacos

介绍

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

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

集群流控中共有两种身份:

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

集群限流客户端

要想使用集群限流功能,必须引入集群限流 client 相关依赖:



    com.alibaba.csp
    sentinel-cluster-client-default
    1.8.0


集群限流服务端

要想使用集群限流服务端,必须引入集群限流 server 相关依赖:


    com.alibaba.csp
    sentinel-cluster-server-default
    1.8.0

server和client嵌入式模式,需要同时引入两个依赖

启动方式

Sentinel 集群限流服务端有两种启动方式:

  • 独立模式(Alone),即作为独立的 token server 进程启动,独立部署,隔离性好,但是需要额外的部署操作。独立模式适合作为 Global Rate Limiter 给集群提供流控服务。

sentinel 集群流控 sentinel 持久化到nacos_第1张图片

  • 嵌入模式(Embedded),即作为内置的 token server 与服务在同一进程中启动。在此模式下,集群中各个实例都是对等的,token server 和 client 可以随时进行转变,因此无需单独部署,灵活性比较好。但是隔离性不佳,需要限制 token server 的总 QPS,防止影响应用本身。嵌入模式适合某个应用集群内部的流控。
  • sentinel 集群流控 sentinel 持久化到nacos_第2张图片

属性配置

从 1.4.1 版本开始,Sentinel 支持给 token server 配置最大允许的总 QPS(maxAllowedQps),用于对 Token Server 的资源使用进行限制,防止在嵌入模式下影响应用本身。

sentinel 集群流控 sentinel 持久化到nacos_第3张图片

sentinel 集群流控 sentinel 持久化到nacos_第4张图片

nacos  流控防止重启,配置丢失,通过nacos持久化

https://download.csdn.net/download/lovo1/19991180

参考地址:https://github.com/alibaba/Sentinel/wiki/%E9%9B%86%E7%BE%A4%E6%B5%81%E6%8E%A7

sentinel 集群流控 sentinel 持久化到nacos_第5张图片

我们提供了 HTTP API 用于在 embedded 模式下转换集群流控身份:

http://:/setClusterMode?mode=

你可能感兴趣的:(java)