Spring Cloud Hystrix--熔断器
2016-12-13 16:39
555 查看
一、Hystrix 熔断器
1、引入pom
service
启动了两个service服务,当未加hystrix断路器前,关闭compute-service服务,访问http://localhost:3333/add,页面直接error page,当如上,加上hystrix断路器后,虽然compute-service服务仍处于关闭状态,调用时直接返回程序指定的error信息。
二、Hystrix流程分析
1、在启动类上添加@EnableCircuitBreaker 注解,表示本类开启熔断器功能。
2、在原来controller的基础上,添加一层ComputeService类,在服务调用方法上,添加@HystrixCommand(fallbackMethod = "addServiceFallback")并指定回调方法addServiceFallback。
三、How does Hystrix work?
服务均可用下,用户请求状态 某个服务延迟或不可用时用户请求状态 服务延迟且多用户同时访问
所以当某个服务不可用时,所有用户请求均block阻塞到当前一个service处。后果可想
Hystrix的出现如同保险丝一样,在危机时刻及时解决阻塞-且不停发送服务访问请求问题。
1、Hystrix可配置依赖调用超时时间,当调用超时时,直接返回或执行fallbackMethod逻辑
2、为每一个依赖提供一个线程池,调用次数大于线程数量时,立即拒绝连接。
3、提供近实时依赖调用情况统计和监控。
所以如图每个服务都已thread pool形式给出,分发到某单个thread实例,当某个服务(thread)不可用时,立即fail fast、fail silent、fallback。并近实时监控服务当前情况。
1、引入pom
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <!--熔断器 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>2、编写业务类
service
@Service public class ComputeService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "addServiceFallback") public String addService() { return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody(); } public String addServiceFallback() { return "error"; } }controller
@RestController public class ConsumerController { @Autowired private ComputeService computeService; @RequestMapping(value = "/add", method = RequestMethod.GET) public String add() { return computeService.addService(); } }启动类
@SpringBootApplication @EnableEurekaClient @EnableCircuitBreaker public class RibbonHystrixApplication { @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(RibbonHystrixApplication.class, args); } }3、添加配置
spring.application.name=ribbon-Hystrix server.port=3333 eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/刷新http://localhost:1111/ 可见
启动了两个service服务,当未加hystrix断路器前,关闭compute-service服务,访问http://localhost:3333/add,页面直接error page,当如上,加上hystrix断路器后,虽然compute-service服务仍处于关闭状态,调用时直接返回程序指定的error信息。
二、Hystrix流程分析
1、在启动类上添加@EnableCircuitBreaker 注解,表示本类开启熔断器功能。
2、在原来controller的基础上,添加一层ComputeService类,在服务调用方法上,添加@HystrixCommand(fallbackMethod = "addServiceFallback")并指定回调方法addServiceFallback。
三、How does Hystrix work?
服务均可用下,用户请求状态 某个服务延迟或不可用时用户请求状态 服务延迟且多用户同时访问
所以当某个服务不可用时,所有用户请求均block阻塞到当前一个service处。后果可想
Hystrix的出现如同保险丝一样,在危机时刻及时解决阻塞-且不停发送服务访问请求问题。
1、Hystrix可配置依赖调用超时时间,当调用超时时,直接返回或执行fallbackMethod逻辑
2、为每一个依赖提供一个线程池,调用次数大于线程数量时,立即拒绝连接。
3、提供近实时依赖调用情况统计和监控。
所以如图每个服务都已thread pool形式给出,分发到某单个thread实例,当某个服务(thread)不可用时,立即fail fast、fail silent、fallback。并近实时监控服务当前情况。
相关文章推荐
- springcloud(四):熔断器Hystrix
- spring cloud Hystrix断路器的使用(熔断器)
- springcloud(4):熔断器Hystrix
- Spring-Cloud 熔断器 Hystrix
- springcloud(四):熔断器Hystrix
- springcloud 熔断器Hystrix的具体使用
- Spring Cloud Hystrix——熔断器
- 干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)
- SpringCloud学习笔记-Hystrix熔断器
- spring cloud: Hystrix断路器(熔断器)
- spring cloud: Hystrix断路器(熔断器)
- springcloud(四):熔断器Hystrix
- spring cloud: Hystrix断路器(熔断器)
- springcloud-熔断器Hystrix的原理
- [转]spring cloud之熔断器 Hystrix 的原理与使用
- 五、Spring Cloud 的 Hystrix 组件
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(九)服务容错保护(Hystrix断路器)【Dalston版】
- SpringCloud 学习 | 第五篇: ribbon断路器使用(hystrix)
- [bigdata-110] spring-cloud-06 Hystrix断路器
- SpringCloud 学习 | 第六篇: feign断路器使用(hystrix)