> 技术文档 > 【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护


1.雪崩问题——原因分析

【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护

2.雪崩问题——解决方案

【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

3.Sentinel——快速入门

【黑马SpringCloud微服务开发与实战】(五)微服务保护

本地启动:从资料里面获取jar包并且把版本后缀去掉和命令的名称一致

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

【黑马SpringCloud微服务开发与实战】(五)微服务保护
http://localhost:8090 访问sentinel

cart服务整合sentinel

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
spring: cloud: sentinel: transport: dashboard: localhost:8090

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

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

【黑马SpringCloud微服务开发与实战】(五)微服务保护

4.Sentinel——请求限流

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

用户信息
【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护

5.Sentinel——线程隔离

【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护
【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

6.Sentinel——Fallback

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

@Slf4jpublic 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中进行声明

 @Bean public ItemClientFallback itemClientFallback(){ return new ItemClientFallback(); }
@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);}
feign: okhttp: enabled: true # 开启OKHttp功能 sentinel: enabled: true

【黑马SpringCloud微服务开发与实战】(五)微服务保护

![

在这里插入图片描述 ](https://i-blog.csdnimg.cn/direct/a0e64688bd644f5881334da5a2866c37.png)

7.Sentinel——服务熔断

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

【黑马SpringCloud微服务开发与实战】(五)微服务保护

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

【黑马SpringCloud微服务开发与实战】(五)微服务保护