发表于: 2017-08-09 23:13:19

1 970


一、今天完成的事情:

     介绍一下spring cloud的断路器(Hystrix)。

     在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务又必须集群部署。由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累计,导致服务瘫痪,甚至导致服务“雪崩”。

为了解决这个问题,就出现断路器模型。

Netflix已经创建了一个名为Hystrix的库来实现断路器模式。 在微服务架构中,多层服务调用是非常常见的。

HystrixGraph.png

较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用达到一个阀值(hystric 是5秒20次) 断路器将会被打开。

HystrixFallback.png

断路打开后,可用避免连锁故障,fallback方法可以直接返回一个固定值。

2、我们需要的配置:

首先我们需要配置一下pom文件:

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-hystrix</artifactId>

</dependency>

载我们前面搭建的ribbon里面的application中加入

@SpringBootApplication

@EnableDiscoveryClient

@EnableHystrix

public class ServiceRibbonApplication {

    public static void main(String[] args) {

        SpringApplication.run(ServiceRibbonApplication.class, args);

    }

    @Bean

    @LoadBalanced

    RestTemplate restTemplate() {

        return new RestTemplate();

    }

}

注解

改造一下service:


@Service

public class HelloService {

    @Autowired

    RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "hiError")

    public String hiService(String name) {

        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);

    }

    public String hiError(String name) {

        return "hi,"+name+",sorry,error!";

    }

}

启动service

当我们关闭serrvice的时候就会启动说明服务错误。

二、遇到的问题:无

三、明天计划的事情:

四、收获:


返回列表 返回列表
评论

    分享到