Sentinel入门-具体应用:

下载与启动:

java -jar sentinel-dashboard-1.6.3.jar

引入依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
添加配置
spring:
application:
name: sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8080 # dashboard服务地址
port: 8719 #??

限流

先访问,后设置规则。
@GetMapping("/byResource")
@SentinelResource(value = "根据资源", blockHandler = "handleRateLimit")
public String getResource() {
return "byResource";
}
@GetMapping("/byUrl")
public String getByUrl() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return "byUrl";
}
public String handleRateLimit(BlockException exception) {
return "被流控了!";
}
规则持久化
1. 添加依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2. 在流控应用中添加配置 所谓流控应用,就是要施加持久流控规则的应用。在其
application.yml 中添加:
spring:
cloud:
sentinel:
datasource:
ds1:
nacos:
server-addr: localhost:8848
data-id: ${spring.application.name}
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
3. nacos 中添加对应的配置 服务名使用上述 ${spring.application.name} 指定的 user( 我的应
用服务名为 user).
[
{
"resource": "/user/{id}",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]

熔断

1. RestTemplate 熔断
使用 @SentinelRestTemplate 修饰 RestTemplate 实现
@Bean
@SentinelRestTemplate
public RestTemplate restTemplate() {
return new RestTemplate();
}
2. Feign 熔断 记得在配置中打开
feign:
sentinel:
enabled: true
定义接口
@FeignClient(value="", fallback=UserServiceFallback.class)
public interface UserService {
}

降级

Feign也支持服务降级,本质上它就是使用Hystrix来实现的。
修改Feign接口
@FeignClient(name="house", fallback = HouseFeignServiceFallback.class)
新建降级fallback类
降级类要实现上面定义的接口,并实现降级方法,另外注意在降级类上添加@Service注解,以纳入spring管理
@Service
public class OrderServiceCallback implements OrderServiceFeign{
    @Override
    public Integer getOrderNumberOfUser(Long id) {
        return 22;
    }

    @Override
    public Map postOrderNumberOfUser(Long id) {
        Map result = new HashMap();
        result.put("number",23);

        return result;
    }
}

改配置

因为feign也是使用hystrix实现的降级,且默认没有打开降级支持,所以这里需要打开hystrix功能

feign:
  hystrix:
    enabled: true
打开日志

打开Feign调用日志,方便查找问题。

//注意,需要放在被@Configuration修饰的类中
@Bean
Logger.Level feignLogLevel() {
    return Logger.Level.FULL;
}

同时,需要配置yml文件中的日志等级。

logging:
  level:
    org.example.service: debug

上一篇:vue3从精通到入门7:ref系列


下一篇:【ElasticSearch】ElasticSearch安装-3. Elasticsearch 辅助插件安装