前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentinel集群流控参数说明

Sentinel集群流控参数说明

作者头像
瓜农老梁
发布2020-11-03 14:57:14
1.4K0
发布2020-11-03 14:57:14
举报
文章被收录于专栏:瓜农老梁瓜农老梁

前言

本文解读sentinel中涉及到集群限流的相关参数。

一、集群流控参数

1.参数说明

当流控规则FlowRule#clusterMode设置为true时,开启集群流控。集群流控ClusterFlowConfig属性如下。

属性

说明

flowId

全局唯一标识

thresholdType

0:单机均摊,1:全局阈值,默认为单机均摊

fallbackToLocalWhenFail

集群流控失败是否降级为单机流控,默认true

strategy

策略目前只支持普通策略0

sampleCount

滑动窗口统计采样窗口数量,默认10个

windowIntervalMs

滑动窗口大小,默认1秒

2.生效方式

集群流控的生效与其他规则生效方式相同,例如: 流控动态加载:FlowRuleManager#register2Property 热点动态加载:ParamFlowRuleManager.register2Property 示例见:DemoClusterInitFunc#initDynamicRuleProperty()

二、client/server数据格式

集群流控中,client、server的数据组织格式,对应为ClusterGroupEntity的属性。

ClusterGroupEntity的属性

属性

说明

machineId

server节点,格式为:112.12.88.68@8728

ip

server IP

port

server 端口

clientSet

client节点集合,格式为:["112.12.88.66@8729","112.12.88.67@8727"]

代码语言:javascript
复制
[
    {
        "clientSet": [
            "112.12.88.66@8729",
            "112.12.88.67@8727"
        ],
        "ip": "112.12.88.68",
        "machineId": "112.12.88.68@8728",
        "port": 11111
    }
]

三、token client配置参数

当前token client配置参数当前主要为requestTimeout,即:请求超时时间。

1.参数说明

属性

说明

requestTimeout

请求超时时间,默认20毫秒。超时会抛出”request time out“的异常SentinelClusterException

2.生效方式明

动态加载:ClusterClientConfigManager.registerClientConfigProperty

示例见:DemoClusterInitFunc#initClientConfigProperty()

3.实现方式

通过动态监听ClusterClientConfig变更,更新ClusterClientConfigManager#requestTimeout。在netty客户端NettyTransportClient发请求时promise.await使用。

四、token server地址与端口

当token server的IP和端口变更时,token client需要重新连接到新的server地址。

1.参数说明

server的地址和端口通过ClusterClientAssignConfig属性设置。

属性

说明

serverHost

server IP

serverPort

server 端口

2.生效方式

动态加载:ClusterClientConfigManager.registerServerAssignProperty 示例见:DemoClusterInitFunc#initClientServerAssignProperty()

3.实现方式

token client(DefaultClusterTokenClient)在初始化时,注册server变更观察者。当变更时,通过ClientAssignPropertyListener回调观察者,完成新server的重连。

五、token server端口与空闲时间

当token server参数主要是端口和空闲时间变化,需要重启server。

1.参数说明

ServerTransportConfig属性如下:

属性

说明

port

server端口

idleSeconds

client连接空闲,默认10分钟。超过后会关闭连接

2.生效方式

ClusterServerConfigManager.registerServerTransportProperty 示例见:DemoClusterInitFunc#initServerTransportConfigProperty()

3.实现原理

token server(SentinelDefaultTokenServer)在初始化时,注册ServerTransportConfig变更观察者,当配置发生变更时,通过ServerGlobalTransportPropertyListener回调观察者,完成token server端口或者空时间的变更,端口变更需要重启服务端。

六、client/server角色切换

集群流控使用内嵌模式时,client/server可能会在应用的节点之间切换。

1.生效方式

ClusterStateManager.registerProperty 示例见:DemoClusterInitFunc#initStateProperty()

2.实现原理

通过动态监听cluster集群节点变化,通过ClusterStatePropertyListener中提供的setToClient、setToServer实现角色切换。

七、namespace变更

集群流控中使用namespace的概念,通常为appName,可以动态监听一组namespace的变化。通过ClusterFlowRuleManager.setPropertySupplier加入监听,并通过FlowRulePropertyListener#applyClusterFlowRule生效。构建namespace、flowId、FlowRule、flowIdSet在缓存中的关系以及为每个flowId准备集群流控统计ClusterMetric, 示例详见:DemoClusterInitFunc#registerClusterRuleSupplier。

作者丨梁勇 来源丨瓜农老梁

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档