雪崩效应

在微服务架构中通常会有多个服务层调用,大量的微服务通过网络进行通信,从而支撑起整个系统。各个微服务之间也难免存在大量的依赖关系。然而任何服务都不是100%可用的,网络往往也是脆弱的,所以难免有些请求会失败。基础服务的故障导致级联故障,进而造成了整个系统的不可用,这种现象被称为服务雪崩效应。服务雪崩效应描述的是一种因服务提供者的不可用导致服务消费者的不可用,并将不可用逐渐放大的过程。

Netflix Hystrix 断路器

Netflix的Hystrix类库实现了断路器模式,在microservice架构中有多个层的服务调用。一个低水平的服务群中一个服务挂掉会给用户导致级联失效。调用一个特定的服务达到一定阈值(在Hystrix里默认是5秒内20个失败),断路由开启并且调用没有成功的。开发人员能够提供错误原因和开启一个断路由回调。

这里写图片描述

如何使用Hystrix

1、添加Hystrix依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>

2、在启动类上添加注解:@EnableCircuitBreaker

这里写图片描述

3、在controller控制器类上使用注解:@HystrixCommand

    @RequestMapping(value = "saveOrUpdateMenu", method = RequestMethod.POST)
    @ResponseBody
    @HystrixCommand(fallbackMethod = "saveOrUpdateMenuFallback")
    public Boolean saveOrUpdateMenu(MenuModel menuModel){

        ResponseResult responseResult = menuClient.saveOrUpdateMenu(menuModel);

        System.out.println(JSON.toJSONString(responseResult));

        return true;
    }


    public Boolean saveOrUpdateMenuFallback(MenuModel menuModel){
        System.out.println("服务不可用。。");
        return false;
    }

这里写图片描述

传播安全上下文或使用Spring Scopes

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐