sentinel基于Nacos数据持久化
1.引入依赖
java
<!-- 持久化用到 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2.yml配置
java
server:
port: 8091
tomcat:
max-threads: 10 #最大线程数设置为10,默认200
spring:
application:
name: service-order
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Shanghai
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8080 #提交数据到控制台
port: 9999 #设置通信端口,任意一个未被使用的端口
datasource: # 规则持久化
ds1:
nacos:
server-addr: localhost:8848 #nacos地址
dataId: service-order #微服务名称
groupId: DEFAULT_GROUP #默认分组
data-type: json #数据格式
rule-type: flow #流控规则
service-product: #服务提供者名称 负载均衡的策略
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
3.Nacos添加配置
点击加+号
配置内容
java
[
{
"resource": "/msg1",
"limitApp": "default",
"count": 1,
"grade": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
配置内容解释
java
resource:资源名称;
limitApp:来源应用;
grade:阈值类型,0表示线程数,1表示QPS;
count:单机阈值;
strategy:流控模式,0表示直接,1表示关联,2表示链路;
controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;
clusterMode:是否集群。
其实就是Sentinel控制台如下配置:
演示结果