- 浏览: 188221 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Hystrix断路器简介
2. 服务雪崩效应
3. Hystrix服务熔断和服务降级
4. Hystrix服务熔断和服务降级实例
4.1) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004搭建
4.2) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的pom.xml增加hystrix依赖
4.3) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的application.yml修改下端口和实例名称
4.4) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的启动类StudentProviderHystrixApplication_1004.java增加注解@EnableCircuitBreaker和getInfo方法
4.5) 服务消费者microservice-student-consumer-80的StudentConsumerController.java增加getInfo方法
5. hystrix默认超时时间的设置
5.1) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004修改application.yml配置
hystrix对应的中文名字是"豪猪",豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋而合,因此Netflix团队将该框架命名为Hystrix,并使用了对应的卡通形象做作为logo。 在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。
2. 服务雪崩效应
1.1 当一个请求依赖多个服务的时候:正常情况下的访问 1.2 当请求的服务中出现无法访问、异常、超时等问题时,那么用户的请求将会被阻塞 1.3 如果多个用户的请求中,都存在无法访问的服务,那么他们都将陷入阻塞的状态中 2.1 Hystrix的引入,可以通过服务熔断和服务降级来解决这个问题
3. Hystrix服务熔断和服务降级
Hystrix服务熔断@HystrixCommand Hystrix服务降级fallbackMethod 熔断机制是应对雪崩效应的一种微服务链路保护机制。 当某个服务不可用或者响应时间超时,会进行服务降级,进而熔断该节点的服务调用,快速返回自定义的错误影响页面信息。
4. Hystrix服务熔断和服务降级实例
4.1) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004搭建
new -> Maven Module -> create a simple project Module Name:microservice-student-provider-hystrix-1004 Parent Project:microservice Working set:SpringCloud -> Artifact Group Id:com.andrew.springcloud Artifact Id:microservice-student-provider-hystrix-1004 Version:0.0.1-SNAPSHOT Packaging:jar 代码与microservice-student-provider-1001相同
4.2) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的pom.xml增加hystrix依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
4.3) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的application.yml修改下端口和实例名称
port: 1004 instance-id: microservice-student-hystrix:1004 #客户端实例名称
4.4) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004的启动类StudentProviderHystrixApplication_1004.java增加注解@EnableCircuitBreaker和getInfo方法
@ResponseBody @GetMapping(value="/getInfo") @HystrixCommand(fallbackMethod="getInfoFallback") public Map<String,Object> getInfo() throws InterruptedException{ Thread.sleep(2000); Map<String,Object> map=new HashMap<String,Object>(); map.put("code", 200); map.put("info", "业务数据xxxxx"); return map; } public Map<String,Object> getInfoFallback() throws InterruptedException{ Map<String,Object> map=new HashMap<String,Object>(); map.put("code", 500); map.put("info", "系统出错,稍后重试"); return map; }
4.5) 服务消费者microservice-student-consumer-80的StudentConsumerController.java增加getInfo方法
@SuppressWarnings("unchecked") @GetMapping(value="/getInfo") @ResponseBody public Map<String,Object> getInfo(){ return restTemplate.getForObject(PRE_HOST+"/student/getInfo/", Map.class); }
正常访问返回的是200业务数据xxxxx 这里使用Thread.sleep(2000)模拟超时 加上@HystrixCommand注解以及fallbackMethod表明这个方法在没有异常以及没有超时(hystrix默认1秒算超时)的情况,才返回正常的业务数据; 否则进入fallback指定的本地方法 启动microservice-eureka-server-2001 启动microservice-eureka-server-2002 启动microservice-eureka-server-2003 启动microservice-student-provider-hystrix-1004 启动microservice-student-consumer-80 测试服务提供者: http://localhost/student/getInfo 使用Thread.sleep(500);测试正常 {"code":200,"info":"业务数据xxxxx"} 使用Thread.sleep(2000);测试超时 {"code":500,"info":"系统出错,稍后重试"}
5. hystrix默认超时时间的设置
Hystrix默认超时时间是1秒,我们可以通过hystrix源码看到 hystrix-core.jar -> com.netflix.hystrix -> HystrixCommandProperties类 -> default_executionTimeoutInMilliseconds属性 默认的超时时间
5.1) 带服务熔断的服务提供者项目microservice-student-provider-hystrix-1004修改application.yml配置
hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 3000
启动microservice-eureka-server-2001 启动microservice-eureka-server-2002 启动microservice-eureka-server-2003 启动microservice-student-provider-hystrix-1004 启动microservice-student-consumer-80 测试服务提供者: http://localhost/student/getInfo 使用Thread.sleep(2000);测试正常 {"code":200,"info":"业务数据xxxxx"} 使用Thread.sleep(4000);测试超时 {"code":500,"info":"系统出错,稍后重试"}
发表评论
-
Config Server使用
2019-03-21 10:31 4771. SpringCloud Config简介 Spri ... -
Zuul API路由网关服务
2019-03-20 14:09 4861. Zuul API路由网关服务简介 这里的API路由 ... -
Feign与Hystrix服务熔断服务降级解耦
2019-03-20 13:56 6171. Feign与Hystrix服务熔断服务降级解耦 用 ... -
Hystrix的Dashboard仪表盘与turbine集群监控
2019-03-20 13:39 5271. Hystrix服务监控Dashboard仪表盘 H ... -
Feign声明式服务调用
2019-03-20 09:09 4021. Feign声明式服务调用简介 Feign是一个声明 ... -
Ribbon负载均衡器
2019-03-19 15:19 3771. Ribbon简介 Ribbon是Netflix发布 ... -
Eureka服务注册与发现组件
2019-03-19 14:22 3851. 服务注册与发现组件Eureka简介 Eureka gi ... -
服务消费者microservice-student-consumer-80
2019-03-19 13:17 3551. 服务消费者项目microservice-student- ... -
服务提供者microservice-student-provider-1001
2019-03-19 11:59 3281. 服务提供者项目microservice-student- ... -
SpringCloud建立父项目、公共模块项目
2019-03-19 09:54 13091. SpringCloud简介 springcloud项目 ...
相关推荐
断路器
Spring Cloud 提供了断路器模式的实现,名为 Hystrix,用于防止服务间的级联故障,提高系统的容错性。断路器模式的核心思想是在调用远程服务时,通过一个中间层(即断路器)来监控调用的健康状况。当服务出现故障时...
Spring Cloud Netfix Hystrix断路器例子工程。使用Spring Cloud Netflix Hystrix以及Spring RestTemplate或Spring Cloud Netflix Feign实现断路器模式。
**Hystrix 断路器详解** 在分布式系统中,Hystrix 是一款非常重要的容错管理工具,由 Netflix 开源。它通过提供断路器模式来隔离服务间的调用,防止因某个服务不可用而影响整个系统的稳定。断路器机制在微服务架构...
"spring cloud Hystrix断路器的使用" spring cloud Hystrix断路器是Netflix开发的一种断路器模式,用于防止级联故障在微服务架构中。断路器的使用可以防止服务之间的级联故障,使得系统更加稳定和可靠。 Hystrix...
“断路器”本身是一种开关装置,当某个服务单元发生故障监控(类似熔断保险丝),向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务...
Spring Cloud Hystrix断路器实现容错和降级 Spring Cloud Hystrix断路器是一种实现容错和降级的机制,它可以在服务不可用时,对配置了断路器的方法实行降级策略,临时调用备用方法。这种机制可以避免服务雪崩效应,...
spring cloud微服务框架demo完整可用2版 比第一版多集成了mybatis...(注册中心+生产者+消费者+feign负载均衡+hystrix断路器+仪表盘+gate路由网关+config配置中心+mybatis+oracle+mybatisPlus generator代码自动生成)
Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性。复杂分布式...
在分布式系统中,Spring Cloud Hystrix 是一个关键的组件,它作为一个断路器来防止服务雪崩。断路器模式是微服务架构中的一个重要概念,用于提高系统的容错性和稳定性。下面我们将深入探讨 Spring Cloud Hystrix 的...
骆驼hystrix端点 将子端点包装到同步hystrix断路器中的骆驼端点。 该项目可将hystrix组件轻松集成到骆驼路线中。 一个非常简单的示例可能如下所示:private class TestRoute extends RouteBuilder {@Overridepublic ...
通过以上步骤,我们可以构建一个利用Hystrix断路器的Feign客户端,实现对故障服务的智能处理,提高系统的整体稳定性和可靠性。 总结来说,Spring Cloud Hystrix是一个强大的工具,它通过断路器模式有效地解决了...
Feign使得编写消费其他服务的客户端变得更简单,同时也内置了Hystrix断路器,以确保高可用性。 总之,Spring Cloud Hystrix作为微服务架构中的关键组件,通过断路器机制提高了系统的稳定性和容错性。结合Eureka ...
Hystrix是Netflix开源的一款强大的断路器库,它适用于Java环境,并且广泛应用于Spring Cloud框架中。本教程将深入探讨如何使用Hystrix在微服务中实现断路器功能。 首先,让我们理解断路器的工作原理。断路器在正常...
本篇主要介绍的是SpringCloud中的断路器(Hystrix)和断路器指标看板(Dashboard)的相关使用知识,需要的朋友可以参考下
在本文中,我们将深入探讨“Spring Cloud Hystrix 断路器”的概念及其在实际应用中的工作原理。 首先,我们来理解什么是断路器模式。断路器模式是软件设计模式的一种,用于在系统中引入故障保护机制。当服务出现...
3. `eureka-consumer-feign-hystrix`:这是一个服务消费者,它使用Feign客户端和Hystrix断路器来调用`eureka-producer`提供的服务。Feign是一个声明式Web服务客户端,使得编写Web服务客户端变得简单。而Hystrix则是...