概述
springcloud alibaba-服务容错
1.雪崩效应
微小的变化就会引起输出的巨变,例如不合理的设计容量设计,或者高并发下某一个方法响应时间慢,或者某台机器资源耗尽都会发生雪崩效应。
2.设计目的
为了保护自己防止雪崩效应的扩散
3.常见对容错思路有隔离,超时,限流,熔断,降级
(1)隔离:按照一定的原则将系统氛围若干个模块,各个模块之间相互独立,没有依赖关系,当某一个模块发生问题,能将问题封锁在该模块中,不波及其他模块,常见当隔离方式有:线程池隔离(Hystrix)和信号量隔离(Sentinel)
(2)超时:是指上游服务访问下游服务,设置一个响应时间,如果下游服务在规定的时间内未返回数据,那么就断开连接并释放线程
(3)限流:是指限制系统的输入量和输出量,以达到保护程序的目的,一旦达到相应的流量,就会采取相应的措施
(4)熔断:当下游服务因访问压力过大而相应过慢或者失败,上游服务为了保护系统整体当可用性,可以暂时切断对下游服务对调用,这种牺牲局部,保护整体对行为成为熔断
服务熔断对三种状态:
熔断关闭状态:服务没有故障时,熔断器所处对状态,对调用方对调用不做任何限制
熔断开启状态:后续对该服务接口对调用不再经过网络,直接执行本地的fallback方法
半熔断状态:尝试恢复服务的调用,允许有限的流量调用该服务,并监控调用的成功率,如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态,如果成功率依旧很低,则静如熔断开启状态
(5)降级:降级其实就是为服务提供的一种托底方案,一旦服务无法调用,就使用托底方案
4.sentinel
是阿里开发的服务容错的综合性解决方案,它以流量为切入点,从流量控制,熔断降级,系统负载保护等多个维度来保护服务的稳定性
(1)特征
丰富的应用场景
完备的实时监控
广泛的开源状态
完善的spi扩展点
(2)组成部分
核心库(java客户端):不依赖任何框架,能够运行于所有java运行时环境
控制台(Dashboard):基于springboot开发,打包后可直接运行,不需要tomcat容器
5.基本概念
(1)资源
就是sentinel需要保护的东西
(2)规则
就是定义如何保护资源(流量控制规则,熔断降级规则,系统保护规则)
(3)重要功能
流量控制:sentinel作为一个调配器,可以根据需要把随机的请求调整成合适的形状
熔断降级:当请求时间过长,或者异常比例升高,则对这个资源进行限制,让请求快速失败,避免影响其他程序引起系统崩溃
系统负载保护:让系统的入口流量和系统的负载达到一个平衡点,保护系统在能力范围之类处理最多的请求
6@SentinelResource
指定义一个资源出现异常时的处理逻辑
blockHandler:定义当资源内部发生了BlockException应该进入的方法(捕获的是sentinel定义的异常)
要求:
(1)当前方法的返回值和参数要跟原方法一致
(2)但是允许在参数列表最后加入一个参数BlockException,用来接收原方法中的异常
fallback:定义当资源内部发生了Throwable应该进入的方法
7.sentinel规则持久化
(1)代码网上有
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZTsKoSV-1595842748357)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709114852230.png)]
(2)添加配置
在resources下新建目录META-INF,然后添加文件com.alibaba.csp.sentinel.init.InitFunc
在文件添加配置类的全路径com.freeht.config.FilePersistence
8.feign整合sentinel整合
(1)添加sentinel依赖
(2)开启fegin对sentinel的支持
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pc3s32A3-1595842748359)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709114937876.png)]
(3)创建容错类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpZ4v0Sr-1595842748360)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709114954821.png)]
(4)为容器的接口指定容错类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8VgkVYR-1595842748362)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709115016600.png)]
9.显示fegin异常
(1)定义一个容错类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gA9VgOmS-1595842748365)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709115249367.png)]
(2)指定fallback调用的方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VtqfXcax-1595842748366)(C:UsersEDZAppDataRoamingTyporatypora-user-imagesimage-20200709115304720.png)]
最后
以上就是虚拟糖豆为你收集整理的springcloud alibaba-服务容错springcloud alibaba-服务容错的全部内容,希望文章能够帮你解决springcloud alibaba-服务容错springcloud alibaba-服务容错所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复