来源:https://blog.csdn.net/ohh_lang/article/details/136384205
注意:Nacos配置的时候,不能要//注释,必须是纯JSON字符串,以下JSON上的注释是为了说明字段而已。
bootstrap.yaml中的配置示例
注意:Nacos配置的时候,不能要//注释,必须是纯JSON字符串,以下JSON上的注释是为了说明字段而已。
bootstrap.yaml中的配置示例
server: port: 8001 spring: application: # Nacos添加配置,格式:${prefix}-${spring.profiles.active}.${file-extension} # 示例:cloud-order-service-dev.yaml name: cloud-order-service profiles: active: dev # 配置环境变量,Nacos配置DataId的一部分。自定义例如:dev test pro cloud: nacos: discovery: server-addr: localhost:8848 # Nacos作为服务中心地址 config: server-addr: localhost:8848 # Nacos作为配置中心地址 file-extension: yaml # Nacos配置后缀 group: DEFAULT_GROUP # Nacos配置分组 namespace: 8e23ce60-9f28-4fa7-875a-5e0d61b533d5 # Nacos配置命名空间的id,默认public username: nacos # Nacos登录账户 password: 123456 # Nacos登录密码 sentinel: # enable: true # filter: # enable: false # eager: true # 立即加载 transport: web-context-unify: false # 默认true 将调用链路收敛, 导致链路流控效果无效 dashboard: localhost:8080 # 配置sentinel dashboard地址。 port: 8719 # 默认8719端口,如果被占用,则从8719递增检查未被占用的端口 # sentienl 数据源配置 参考:https://blog.csdn.net/qq_42402854/article/details/127379403 datasource: flow: # 自定义数据源名称,可以随便定义,目的是为了区分出每条规则,无实际应用。 nacos: server-addr: localhost:8848 # Nacos地址 username: nacos # Nacos账户 password: 123456 # Nacos密码 namespace: 8e23ce60-9f28-4fa7-875a-5e0d61b533d5 # Nacos命名空间必须使用id groupId: DEFAULT_GROUP # Nacos配置分组 dataId: cloud-order-service-flow # Sentinel需要同步Nacos创建的流控配置DataId rule-type: flow # 规则类型 flow:流控规则 data‐type: json # 默认值json,可以不填。 param-flow: nacos: server-addr: localhost:8848 # Nacos地址 username: nacos # Nacos账户 password: 123456 # Nacos密码 namespace: 8e23ce60-9f28-4fa7-875a-5e0d61b533d5 # Nacos命名空间必须使用id groupId: DEFAULT_GROUP # Nacos配置分组 dataId: cloud-order-service-param-flow # Sentinel需要同步Nacos创建的流控配置DataId rule-type: param-flow # 规则类型 param-flow:热点规则 data‐type: json # 默认值json,可以不填。 # feign开启Sentinel支持 feign: sentinel: enabled: true # Nacos配置DataId命名说明 # ${prefix}-${spring.profiles.active}.${file-extension} # prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。 # spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension} # file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
Nacos中添加的配置
命名空间:8e23ce60-9f28-4fa7-875a-5e0d61b533d5
Data ID:cloud-order-service-param-flow
Group:DEFAULT_GROUP
配置格式:JSON
配置内容:
[ { "resource": "cloud-order-service-TestController-getHobbies", "grade": 1, "paramIdx": 0, "count": 1, "durationInSec": 1, "clusterMode": false, "burstCount": 0, "clusterConfig": { "fallbackToLocalWhenFail": true, "flowId": 2, "sampleCount": 10, "thresholdType": 0, "windowIntervalMs": 1000 }, "controlBehavior": 0, "limitApp": "default", "maxQueueingTimeMs": 0, "paramFlowItemList": [ { "classType": "int", "count": 2, "object": "2" } ] } ]
五种规则的json串及yml配置,需要自己删除掉json串的注释之后再添加到nacos中的配置中。
1.流控规则
[ { // 资源名 "resource": "/test1", // 针对来源,若为 default 则不区分调用来源 "limitApp": "default", // 限流阈值类型(1:QPS;0:并发线程数) "grade": 1, // 阈值 "count": 1, // 是否是集群模式 "clusterMode": false, // 流控效果(0:快速失败;1:Warm Up(预热模式);2:排队等待) "controlBehavior": 0, // 流控模式(0:直接;1:关联;2:链路) "strategy": 0, // 预热时间(秒,预热模式需要此参数) "warmUpPeriodSec": 10, // 超时时间(排队等待模式需要此参数) "maxQueueingTimeMs": 500, // 关联资源、入口资源(关联、链路模式) "refResource": "rrr" } ]
yaml
spring: cloud: sentinel: datasource: flow: #流控规则 nacos: namespace: public server-addr: localhost:8848 dataId: ${spring.application.name}-flow-rules groupId: DEFAULT_GROUP data-type: json rule-type: flow
2.熔断规则
[ { // 资源名 "resource": "/test2", "limitApp": "default", // 熔断策略(0:慢调用比例,1:异常比率,2:异常计数) "grade": 0, // 最大RT、比例阈值、异常数 "count": 200, // 慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入) "slowRatioThreshold": 0.2, // 最小请求数 "minRequestAmount": 5, // 当单位统计时长(类中默认1000) "statIntervalMs": 1000, // 熔断时长 "timeWindow": 10 } ]
yaml
spring: cloud: sentinel: datasource: degrade: #熔断规则 nacos: namespace: public server-addr: localhost:8848 dataId: ${spring.application.name}-degrade-rules groupId: DEFAULT_GROUP data-type: json rule-type: degrade
3.热点规则
[ { // 资源名 "resource": "/test3", // 限流模式(QPS 模式,不可更改) "grade": 1, // 参数索引 "paramIdx": 0, // 单机阈值 "count": 13, // 统计窗口时长 "durationInSec": 6, // 是否集群 默认false "clusterMode": false, "burstCount": 0, // 集群模式配置 "clusterConfig": { "fallbackToLocalWhenFail": true, "flowId": 2, "sampleCount": 10, "thresholdType": 0, "windowIntervalMs": 1000 }, // 流控效果(支持快速失败和匀速排队模式) "controlBehavior": 0, "limitApp": "default", "maxQueueingTimeMs": 0, // 高级选项 "paramFlowItemList": [ { // 参数类型 "classType": "int", // 限流阈值 "count": 222, // 参数值 "object": "2" } ] } ]
yaml
spring: cloud: sentinel: datasource: param-flow: #热点参数规则 nacos: namespace: public server-addr: localhost:8848 dataId: ${spring.application.name}-param-flow-rules groupId: DEFAULT_GROUP data-type: json rule-type: param-flow
4.系统规则
[ { // RT "avgRt": 1, // CPU 使用率 "highestCpuUsage": -1, // LOAD "highestSystemLoad": -1, // 线程数 "maxThread": -1, // 入口 QPS "qps": -1 } ]
yaml
spring: cloud: sentinel: datasource: system: #系统规则 nacos: namespace: public server-addr: localhost: 8848 dataId: ${spring.application.name}-system-rules groupId: DEFAULT_GROUP data-type: json rule-type: system
5.授权规则
[ { // 资源名 "resource": "/test4", // 流控应用 "limitApp": "app1,app2", // 授权类型(0代表白名单;1代表黑名单。) "strategy": 0 } ]
yaml
spring: cloud: sentinel: datasource: authority: #授权规则 nacos: namespace: public server-addr: localhost:8848 dataId: ${spring.application.name}-authority-rules groupId: DEFAULT_GROUP data-type: json rule-type: authority
rule-type说明 flow:流控规则。degrade:熔断规则。param-flow:热点规则。system:系统规则。authority:授权规则。