Open beichenhpy opened 3 years ago
你好,Sentinel 的机制与 Hystrix 不同,目前不提供超时掐断线程的功能;可以借助慢调用熔断+并发控制(信号量隔离)来对慢调用进行防护。
Hi, Sentinel is not designed for "cutting-down" slow in-flight requests. You may leverage circuit breaking (based on slow request strategy) and concurrency limiting (aka. semaphore isolation).
你好,Sentinel 的机制与 Hystrix 不同,目前不提供超时掐断线程的功能;可以借助慢调用熔断+并发控制(信号量隔离)来对慢调用进行防护。
Hi, Sentinel is not designed for "cutting-down" slow in-flight requests. You may leverage circuit breaking (based on slow request strategy) and concurrency limiting (aka. semaphore isolation).
您好,我这边用的就是慢调用熔断不生效。。还要结合qps限制吗?
可以发一下对应的规则以及埋点、监控数据,对比下 熔断规则 里面熔断的条件,看看是否满足熔断条件。
我这边是使用openfeign调用的,对应的入口方法没有设置埋点
只是在dashboard中发现了调用另一个服务的url
然后对其设置了慢调用熔断,发现并不生效
@SneakyThrows
@GetMapping("/info/{aid}")
public ResponseEntity<List<Comment>> getCommentInfoByArticleId(@PathVariable("aid") String aid) {
LambdaQueryWrapper<Comment> queryWrapper = Wrappers.lambdaQuery(new Comment());
queryWrapper.eq(Comment::getArticleId, aid);
List<Comment> list = providerService.list(queryWrapper);
//sleep 6000ms
Thread.sleep(6000);
return ResponseEntity
.ok()
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.body(list);
}
@FeignClient(name = "provider",fallback = ProviderFeignServiceImpl.class)
public interface ProviderFeignService {
@GetMapping("/api/v1/info/{aid}")
ResponseEntity<List<Comment>> getCommentInfoByArticleId(@PathVariable("aid") String aid);
}
@GetMapping("/info/{aid}")
public ResponseEntity<Article> info(@PathVariable("aid") String aid) {
ResponseEntity<List<Comment>> response = providerFeignService.getCommentInfoByArticleId(aid);
AssertToolkit.feignResponseFail(response.getStatusCode(),"provider");
Article article = consumerService.getById(aid);
article.setComments(response.getBody());
return ResponseEntity
.ok()
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.body(article);
}
簇点链路
慢调用规则
开发者们您好,这应该是一个
问题
,不是bug
。。 我是从openfeign+ribbon+hystrix
转过来的 这样的在SpringCloud 2020.0 和 SpringCloudAlibaba 2021后 不再支持ribbon+hystrix,转而使用 spring-cloud-loadbalancer 之前使用ribbon+hystrix
时,可以通过ribbon
设置readTimeout
时间来进行超时调用fallback 但是在新版中,没有ribbon
了,我该怎么设置readTimeout来进行超时调用fallback呢? 我进行了尝试: 1.我通过dashboard找到了,簇点链路
中对应feign调用的那个url,进行了降级
操作 配置为我的provider设置了
Thread.sleep(6000)
这里按我的理解,是当有一个请求过来,调用超过3000毫秒就触发fallback,但是事实上,没有触发,还是一直等待直到调用完成 请问是我哪里设置有问题吗?还是没有正确的使用Sentinel 期待您的回复env: Sentinel 1.8.1 SpringCloudAlibaba 2021.1 SpringCloud 2020.0.3