Closed AugustTuan closed 2 years ago
总结:这一集老师介绍了Sentinel相关的几个专业术语:资源、规则
首先使用Sentinel,只需要在项目中导入Sentinel的核心库,然后可以下载一个可视化的控制台
Sentinel主要就是用来保护资源的,其保护资源的步骤有
定义资源——哪些资源可以被保护(可以使用注解,异常等方式来声明)
定义规则——使用参数来说明怎样保护这些资源(流量控制规则,熔断降级规则,来源访问控制规则等等)
校验规则是否生效
java -jar xxxx.jar --server.port=xxx
让一个jar包以指定端口启动Sentinel的来源访问和网关、拦截器是不是重复了
8:30 为什么老师发了一个请求,而DashBoard却显示分钟通过了多个请求呢?
老师多刷新了几次
所以DashBoard控制台是通过什么和服务进行数据交互的呢?
总结:这一集老师解决了两个DashBoard的细节问题
通过每一个微服务都导入actuator,并进行配置暴露端口后,让DashBoard可以读取SpringBoot的审计数据,从而显示监控信息
通过编写配置类,自定义sentinel的流控返回数据
总结:这一集老师对其他服务都进行了Sentinel的引入,并且解决了一个循环依赖问题
全服务导入sentinel的流程
common中导入starter依赖 spring-cloud-stater-alibaba-sentinel
每一个微服务都导入actuator,并配置暴露审计信息(让监控信息生效)
每一个服务都配置控制台的端口信息
老师通过自己通过@Bean向容器中注入组件的方式解决了循环依赖问题
为什么其他服务都只配置了dashBorad的端口,而没有配置负责数据通信的端口呢?
1:00 老师说这个端口号是默认的
总结:这一集老师对各种流控参数做了介绍
Sentinel提供的流量控制参数有
资源名:请求路径
阈值类型:qps(每秒请求数)、线程并发数
阈值:限制数量
集群模式
流控模式
流控效果
3:45为什么读的频率高会影响写的效率?读不一般都是等着写吗?
不对,读和写是互斥的
4:20 为什么一个服务的流量突然增加会压垮服务? 冷启动多余的流量也是返回失败吗?
feign.sentinel.enabled=true
打开Sentinel对feign的支持,之后控制台就可以监控到远程调用的资源了@FeignClient(value="xxxx",fallback=xxxx)
,设置回调实现类降级参数
@Bean
注入组件总结:这一集老师演示了如何自定义受保护的资源
首先,对于请求的保护,不需要额外声明,主流框架会被自动扫描并保护,但是要在配置类中设置统一的降级返回数据
对于业务代码,则需要进行声明,老师介绍了两种方式‘
用类似异常的方式
try(Entry entry = SphU.entry(name:"xxxxx")){ //创建一个受保护的资源,在控制台设置限流规则
//业务代码
}
catch(Exception e){ //被限流后返回的异常
}
使用注解的方式
@SentinelResource(value="xxxxx",blockHandler="xxxx") //在方法和类上加注解,指定资源名和降级方法
P326 Sentinel-高并发方法论&简介
老师讲了什么?
总结:这一集老师回顾了秒杀服务使用策略,并且引入了Sentinel中间件
秒杀以及所有高并发系统关注的问题就是快和稳,老师回顾了之前秒杀系统引入的设计元素
服务职责单一,独立部署——专门创建一个秒杀模块,即使崩溃了也不会影响其他服务
动静分离——静态资源放在nginx,服务只用处理静态资源的请求,增大了请求的接收能力
秒杀连接加密——这块每懂,大概就是通过随机码,让脚本无法提前抢到商品
引入Redis高速缓存——定期将商品缓存到redis,服务直接和redis交互,处理请求的速度大大提到
登录拦截——在请求访问秒杀服务前,先通过拦截器将不符合要求的请求直接返回,增强服务的请求接收能力
消息队列削峰——秒杀成功以后不再调用创建订单服务,而是给队列发送消息,直接返回,增加请求处理速度。由队列再去创建订单,锁定库存(防止订单服务崩溃)
除此之外呢,老师再次强调了以上策略虽然让服务可以更快的处理请求,但是服务器的资源是有上限的,必须要对请求进行限流&熔断&降级处理。
熔断——某个服务多次超时以后,直接认为该服务断路,凡是调用该服务的,直接返回降级数据。(熔断是为了防止一个服务故障导致整个调用链不断地等待)
降级——再流量高峰期,停止部分次要服务,腾出资源给核心服务,请求访问次要服务返回降级数据
限流,被访问服务的请求进行控制,让服务器承担地请求一直在处理能力范围内
熔断和降级的联系
因此老师专门引入了Alibaba的限流中间件,Sentinel。
学习策略:
掌握程度
课程评价
时间花费
课程收获
遗留问题