SpringCloud成神之路(四)------Hystrix

简单介绍下

在为服务的架构中,我们将系统查分成了很多服务单元,个单元的应用件通过服务注册于订阅的范式相互依赖.由于每个单元都在不同的进程中执行,就会因为网络故障,延迟等出现一些问题.,由于故障导致的任务挤压,最后导致服务瘫痪.
Hystrix实现了断路器,宪政隔离等一系列服务保护功能键,Hystrix具备服务降级,五福熔断,县城和信号隔离,请求缓存,请求合并以及服务监控等强大功能.

回顾下之前的

在进行Hystrix搭建的时候需要开启eureka-server/两台,eureka-client/两台,eureka-consumer-ribbon-hystrix/一台
这里写图片描述

eureka-server 提供服务注册中心
eureka-client 提供两个客户端(检测负载均衡的实现)
ribbon-hystrix 通过ribbon向服务器发起请求,配置hystrix实现熔断/服务降级/县城隔离/请求隔离/请求合并/以及服务监控等强大功能.

具体实现

在pom文件中添加依赖

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

在启动类上添加注解

@SpringBootApplication  //springboot启动注解
@EnableDiscoveryClient  //eureka注册客户端注解
@EnableCircuitBreaker   //hystrix开启注解

这三个注解其实可以用@SpringCloudApplication来代替,通过观察这个注解的构成就可以发现是由这三个注解构成的,也就是说,springcloud的基本启动就会将这三个注解包含进去

/**
 * @author jbzm
 * @date Create on 2018/4/19 17:43
 * 这里使用SpringCloudApplication注解该注解包含了其他的三个注解由此可以见
 * SpringCloud自动的支持了负载均衡/注册/熔断器/springboot
 */
@SpringCloudApplication
public class EurekaConsumerReibbonHystrixApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumerReibbonHystrixApplication.class, args);
    }

创建一个service通过restTemolate来发送请求,并且制定连接超时后的响应结果

    @Service
    class ConsumerService {
        @Autowired
        @LoadBalanced
        private RestTemplate restTemplate;

        @HystrixCommand(fallbackMethod = "fallback")
        public String consumer() {
            return restTemplate.getForObject("http://eureka-client/dc", String.class);
        }

        public String fallback() {
            return "fallback";
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_19663899/article/details/80107120
今日推荐