一.微服务雪崩问题?
微服务模块之间相互调用,因为调用(同步调用)链中的一个服务故障,引起整个链路都无法访问的情况
解决方案:
- 避免服务宕机:流量控制
- 服务已经宕机:熔断降级
Hystrix -----springcloud Sentinel----springcloudaibaba
二.微服务整合sentinel
Sentinel 的流控模式:
- 直接模块
- 关联模式:当/wirte 阈值达到5,对 /read 做限制
- 链路模式:不同的controller 请求调用同一个方法,对controller 请求来源做限制
流控效果:
项目概述:
从源头进行:
我使用sentinel 阿里巴巴服务保护组件(类似于Hystrix),从github 下载 jar 包,
客户端,微服务整合到sentinel 里 显示路径,我可以对url 相关的限制,
三大流控模式,三个流控效果。
降级熔断:
降级:fegin 整合 sentinel 进行降级返回一个回应
熔断:断路器(重要)
总结:
1 . 在源头进行流量控制
微服务整合到sentinel 里 显示路径,我可以对url 相关的限制,
三大流控模式(直接,关联,链路),三个流控效果(直接失败,warm up, 排队等待)
- 通过熔断降级进行服务的保护
断路器,closed ,open ,half-open
当调用触发一个失败的阈值(慢调用,异常比列,异常数),熔断时间