1.雪崩问题------原因分析
2.雪崩问题------解决方案

3.Sentinel------快速入门

本地启动:从资料里面获取jar包并且把版本后缀去掉和命令的名称一致
powershell
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

http://localhost:8090 访问sentinel
cart服务整合sentinel
xml
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
yaml
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8090



yaml
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8090
http-method-specify: true # 开启请求方式前缀

4.Sentinel------请求限流



用户信息
5.Sentinel------线程隔离


6.Sentinel------Fallback




java
@Slf4j
public class ItemClientFallback implements FallbackFactory<ItemClient> {
@Override
public ItemClient create(Throwable cause) {
return new ItemClient() {
@Override
public List<ItemDTO> queryItemByIds(Collection<Long> ids) {
log.error("远程调用ItemClient#queryItemByIds方法出现异常,参数:{}", ids, cause);
// 查询购物车允许失败,查询失败,返回空集合
return CollUtils.emptyList();
}
@Override
public void deductStock(List<OrderDetailDTO> items) {
// 库存扣减业务需要触发事务回滚,查询失败,抛出异常
throw new BizIllegalException(cause);
}
};
}
}
放置DefaultFeignConfig中进行声明
java
@Bean
public ItemClientFallback itemClientFallback(){
return new ItemClientFallback();
}
java
@FeignClient(value = "item-service",
configuration = DefaultFeignConfig.class,
fallbackFactory = ItemClientFallback.class)
public interface ItemClient {
@GetMapping("/items")
List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
@PutMapping("/items/stock/deduct")
void deductStock(@RequestBody List<OrderDetailDTO> items);
}
yaml
feign:
okhttp:
enabled: true # 开启OKHttp功能
sentinel:
enabled: true

 |
7.Sentinel------服务熔断



20s后熔断结束后会发送一个请求看商品服务查询是否正常,如果不正常继续熔断,反之。。。。。。
