福州网站网站建设,淄博公司网站建设,羽毛球赛事策划方案,wordpress主动推送所有网址插件Sentinel数据持久化 前面介绍Sentinel的流控、熔断降级等功能#xff0c;同时Sentinel应用也在面临着一个问题#xff1a;我们在Sentinel后台管理界面中配置了一堆流控、降级规则#xff0c;但是Sentinel一重启#xff0c;这些规则全部消失了。那么我们就要考虑Sentinel的持…Sentinel数据持久化 前面介绍Sentinel的流控、熔断降级等功能同时Sentinel应用也在面临着一个问题我们在Sentinel后台管理界面中配置了一堆流控、降级规则但是Sentinel一重启这些规则全部消失了。那么我们就要考虑Sentinel的持久化问题。 Sentinel为我们提供了几种持久化的解决方案
存储到文件使用Redis存储使用Nacos存储使用Zookeeper存储使用Apollo存储
我们这里采用Nacos的方式进行存储这些数据。
Tip:既然使用Nacos进行持久化这些Sentinel规则数据那么你的Nacos首先肯定是已经具备了持久化的环境的~~
实现持久化
pom.xml文件加入Nacos数据源的依赖
!-- sentinel持久化访问Nacos的数据源依赖 --
dependencygroupIdcom.alibaba.csp/groupIdartifactIdsentinel-datasource-nacos/artifactId
/dependency修改bootstrap.yml文件增加datasource的配置
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server并且该服务与Sentinel仪表板进行交互使sentinel可以控制应用若端口占用则87191依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1: # 自定义连接名nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则rule-type中的值可以参考RuleType枚举类 五种规则持久化到Nacos中
authority授权规则degrade降级规则flow流控规则param热点规则system系统规则
当你的rule-type没设置时程序启动时会报空指针异常
在Nacos的控制面板新建sentinel-consumer-ds1的DataId具体配置内容如下
[{resource:/sentinelTestB,limitApp:default,grade: 1,count: 1,strategy: 0,controlBehavior: 0,clusterMode: false}
]首先在Nacos后台管理界面上配置DataId和GroupId一定是和配置文件中一一对应的json中[]表示可以配置多个
resource:表示资源名称limitApp:表示要限制哪些来源的调用grade:阈值类型取值参考RuleConstant类(0–线程数限流 1–QPS限流)count:表示限流阈值strategy:表示流控模式0表示直接1表示关联2表示链路controlBehavior:流控效果(0表示快速失败1表示Warm Up2表示排队等待)
那么这些参数不同的规则该设置哪些参数呢可以去参考某些规则类查看 流控规则FlowRule 熔断降级DegradeRule 字段说明默认值resource资源名即规则的作用对象grade熔断策略支持慢调用比例/异常比例/异常数策略慢调用比例count慢调用比例模式下为慢调用临界 RT超出该值计为慢调用异常比例/异常数模式下为对应的阈值timeWindow熔断时长单位为 sminRequestAmount熔断触发的最小请求数请求数小于该值时即使异常比率超出阈值也不会熔断1.7.0 引入5statIntervalMs统计时长单位为 ms如 60*1000 代表分钟级1.8.0 引入1000 msslowRatioThreshold慢调用比例阈值仅慢调用比例模式有效1.8.0 引入 热点规则ParamFlowRule 字段说明默认值resource资源名即规则的作用对象grade限流模式QPS 模式count限流阈值必填durationInSec统计窗口时间长度单位为秒1.6.0 版本开始支持1scontrolBehavior流控效果支持快速失败和匀速排队模式1.6.0 版本开始支持快速失败maxQueueingTimeMs最大排队等待时长仅在匀速排队模式生效1.6.0 版本开始支持0paramIdx热点参数的索引必填对应 SphU.entry(xxx, args) 中的参数索引位置paramFlowItemList参数例外项可以针对指定的参数值单独设置限流阈值不受前面 count 阈值的限制。仅支持基本类型和字符串类型 这些json的规则除了可以在Sentinel控制面板控制之外还可以用Java代码的方式但是不够灵活。 配置好上面的属性后使用Jmeter请求/sentinelTestB接口测试流控效果。 可以看到流控已经生效了。再到sentinel仪表板中看下 已经生成好了一个流控规则。 再来试试降级规则 bootstrap.yml中增加ds2数据源
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server并且该服务与Sentinel仪表板进行交互使sentinel可以控制应用若端口占用则87191依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则ds2:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds2 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: degrade # degrade表示降级规则
nacos面板中添加sentinel-consumer-ds2文件
[{resource:/sentinelTest,count:1,grade:2,timeWindow:5,minRequestAmount:1}
]timeWindow:表示时间窗口熔断的时间数。count:阈值grade:降级策略参考RuleConstant类(0-RT 1-异常比例 2-异常数)
以上配置我们的/sentinelTest模拟一个异常然后用Jmeter多次请求 进入熔断降级。 最后再来看下系统规则的一个实例 bootstrap.yml中
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server并且该服务与Sentinel仪表板进行交互使sentinel可以控制应用若端口占用则87191依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则ds2:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds2 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: degrade # degrade表示降级规则ds3:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds3 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: system # system表示系统规则
在nacos中新增 ds3的sentinel-consumer-ds3文件
[{qps:1}
]系统规则对应的是SystemRule类有以下几个属性
avgRt:系统平均响应时间highestCpuUsage:CPU使用率highestSystemLoad:负载maxThread:最大线程数qps:每秒处理的请求数量
新增一个/sentinelTestC的资源然后使用Jmeter压测一下系统规则是系统级别的即相对于资源的流控是比较粗粒度的了。 同样地其他的规则可以找到它对应的Java配置方法找到那个类举一反三将对应的配置修改一下就可以了。
有两个点需要注意下
在Nacos控制台修改规则Sentinel这边的规则会即时生效重启服务后依然是有效的毕竟已经做好持久化了在Sentinel控制台修改的规则不会被修改到nacos中重启后还会变为nacos设置的值 文章转载自: http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn http://www.morning.zdydj.cn.gov.cn.zdydj.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.mqnbm.cn.gov.cn.mqnbm.cn http://www.morning.qcdtzk.cn.gov.cn.qcdtzk.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn http://www.morning.jnptt.cn.gov.cn.jnptt.cn http://www.morning.flfxb.cn.gov.cn.flfxb.cn http://www.morning.mjytr.cn.gov.cn.mjytr.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.phechi.com.gov.cn.phechi.com http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.rbkl.cn.gov.cn.rbkl.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.lznfl.cn.gov.cn.lznfl.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.qfrmy.cn.gov.cn.qfrmy.cn http://www.morning.c7493.cn.gov.cn.c7493.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.mkydt.cn.gov.cn.mkydt.cn http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.lngyd.cn.gov.cn.lngyd.cn http://www.morning.zlgth.cn.gov.cn.zlgth.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.tblbr.cn.gov.cn.tblbr.cn http://www.morning.rcrfz.cn.gov.cn.rcrfz.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.qwzpd.cn.gov.cn.qwzpd.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com http://www.morning.chkfp.cn.gov.cn.chkfp.cn http://www.morning.rqnml.cn.gov.cn.rqnml.cn http://www.morning.cpfx.cn.gov.cn.cpfx.cn http://www.morning.zpqk.cn.gov.cn.zpqk.cn http://www.morning.xswrb.cn.gov.cn.xswrb.cn http://www.morning.mjats.com.gov.cn.mjats.com http://www.morning.kzcfr.cn.gov.cn.kzcfr.cn http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn http://www.morning.ltzkk.cn.gov.cn.ltzkk.cn http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn http://www.morning.rmmz.cn.gov.cn.rmmz.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.rmtxp.cn.gov.cn.rmtxp.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.tphjl.cn.gov.cn.tphjl.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.nzkkh.cn.gov.cn.nzkkh.cn http://www.morning.tcxk.cn.gov.cn.tcxk.cn http://www.morning.nhbhc.cn.gov.cn.nhbhc.cn http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn http://www.morning.lwqst.cn.gov.cn.lwqst.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.gctgc.cn.gov.cn.gctgc.cn http://www.morning.hjssh.cn.gov.cn.hjssh.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn http://www.morning.wwkft.cn.gov.cn.wwkft.cn http://www.morning.hqbnx.cn.gov.cn.hqbnx.cn http://www.morning.ktmbr.cn.gov.cn.ktmbr.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn http://www.morning.grryh.cn.gov.cn.grryh.cn http://www.morning.zgnng.cn.gov.cn.zgnng.cn http://www.morning.xnlj.cn.gov.cn.xnlj.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.csnmd.cn.gov.cn.csnmd.cn