Sentinel实现动态配置的集群流控

Posted 程序猿小亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sentinel实现动态配置的集群流控相关的知识,希望对你有一定的参考价值。

介绍

为什么要使用集群流控呢?

相对于单机流控而言,我们给每台机器设置单机限流阈值,在理想情况下整个集群的限流阈值为机器数量✖️单机阈值。不过实际情况下流量到每台机器可能会不均匀,会导致总量没有到的情况下某些机器就开始限流。因此仅靠单机维度去限制的话会无法精确地限制总体流量。而集群流控可以精确地控制整个集群的调用总量,结合单机限流兜底,可以更好地发挥流量控制的效果。

基于单机流量不均的问题以及如何设置集群整体的QPS的问题,我们需要创建一种集群限流的模式,这时候我们很自然地就想到,可以找一个 server 来专门统计总的调用量,其它的实例都与这台 server 通信来判断是否可以调用。这就是最基础的集群流控的方式。

原理

集群限流的原理很简单,和单机限流一样,都需要对 qps 等数据进行统计,区别就在于单机版是在每个实例中进行统计,而集群版是有一个专门的实例进行统计。

这个专门的用来统计数据的称为 Sentinel 的 token server,其他的实例作为 Sentinel 的 token client 会向 token server 去请求 token,如果能获取到 token,则说明当前的 qps 还未达到总的阈值,否则就说明已经达到集群的总阈值,当前实例需要被 block,如下图所示:

以上是关于Sentinel实现动态配置的集群流控的主要内容,如果未能解决你的问题,请参考以下文章

Sentinel 发布里程碑版本,添加集群流控功能

Sentinel微服务组件Sentinel控制台的规则配置

Sentinel微服务组件Sentinel控制台的规则配置

Sentinel微服务组件Sentinel控制台的规则配置

【sentinel】深入浅出之原理篇集群流控之Demo

配置容错组件 Sentinel