springcloud小结

关于Hystrix

服务熔断:

概念:服务消费链上,下游服务因访问压力过大而出现响应变慢或失败不可用,上游服务为了保护系统整体的可用性(避免无效重试及长时等待等情况),可以暂时切断对下游服务的调用,直接快速返回fallback的默认值

熔断关闭状态(Closed):服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。

熔断开启状态(Open):在固定时间窗口内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开启状态。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法。

半熔断(半开启)状态(Half-Open):在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。

服务降级:

概念:尽可能的把系统资源让给优先级高的服务。资源有限,而请求是无限的。

如何使用?

1.Feign集成了Hystrix,直接开启服务
引入spring-cloud-starter-openfeign

feign.hystrix.enabled=true

2.配置回滚服务

@FeignClient(value = "cloud-provider", fallback = FindServiceImpl.class)
//指出是哪个服务
public interface FindService {
    @GetMapping("/cloud/find/{id}")
    //这个路径一定要和provider的路径保持一致
     String find(@PathVariable("id") long id);
}

@Component
class FindServiceImpl implements FindService {
    public String find(long id) {
        return "原服务失效";
    }
}

3.服务提供者provide controller抛出异常

   @GetMapping("/cloud/find/{id}")
    public String m1(@PathVariable("id") Long id) throws Exception {
        if (System.currentTimeMillis() % 2 == 0) {
            throw new Exception("服务出错,去返回回调方法内容吧");
        }
        return "8001" + iCloudTestService.getById(id).toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值