spring cloud学习(三) 断路器
在Spring Cloud中使用了Hystrix 来实现断路器的功能。Hystrix是Netflix开源的微服务框架套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。
一、ribbon中使用hystrix
这里继续使用上一篇的client-a。
1.1
pom文件添加hystrix
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
1.2
ClientApplication添加@EnableHystrix开启hystrix功能
1.3
Controller, 使用@HystrixCommand指定回调方法
@RestController
public class TestController {
@Autowired
RestTemplate restTemplate;
@RequestMapping("/hi")
@HystrixCommand(fallbackMethod = "hiFallback")
public String hi(@RequestParam String id){
return restTemplate.getForObject("http://service-a/hi?id="+id, String.class);
}
public String hiFallback(String id) {
return "hi, " + id + ", error!";
}
}
1.4
启动client-a, 然后关闭service-a, 打开页面

可以看到成功返回错误信息,实现断路回调。
二、feign中使用hystrix
2.1
feign是自带断路器功能的,并且默认打开,如果你要关闭的话,需要加上这个配置:
feign:
hystrix:
enabled: false
2.2
这里只需要在@FeignClient注解上加上fallback就可以了
@Component
@FeignClient(value = "service-a", fallback = ServiceAFeignClientFallback.class) //这里的value对应服务的spring.applicatoin.name
public interface ServiceAFeignClient {
@RequestMapping(value = "/hi")
String hi(@RequestParam("id") String id);
}
ServiceAFeignClientFallback:
/**
* @author fengzp
* @date 17/5/9
* @email fengzp@gzyitop.com
* @company 广州易站通计算机科技有限公司
*/
public class ServiceAFeignClientFallback implements ServiceAFeignClient {
@Override
public String hi(String id) {
return "hi, " + id + ", error!";
}
}
spring cloud学习(三) 断路器的更多相关文章
- spring cloud学习(五)断路器 Hystrix
断路器 Hystrix 断路器模式 (云计算设计模式) 断路器模式源于Martin Fowler的Circuit Breaker一文. 在分布式环境中,其中的应用程序执行访问远程资源和服务的操作,有可 ...
- spring cloud学习(三)使用Ribbon实现客户端负载均衡
使用Ribbon实现客户端的负载均衡 * 个人博客空间 : https://zggdczfr.cn/ * Ribbon Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组 ...
- Spring Cloud 学习 (三) Feign
新建 spring-cloud-eureka-feign-client Module pom <parent> <artifactId>spring-cloud-parent& ...
- Spring Cloud学习(一):Eureka服务注册与发现
1.Eureka是什么 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. Eureka ...
- Spring Cloud Gateway的断路器(CircuitBreaker)功能
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Spring Cloud项目之断路器集群监控Hystrix Dashboard
微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完 ...
- 【Spring Cloud笔记】 断路器-hystrix
在微服务架构中,一个微服务的超时失败可能导致瀑布式连锁反映,Spring Cloud Netflix 的断路器Hystrix通过自主反馈,防止了这种情况发生.下面介绍简单的断路器使用方法. [step ...
- spring cloud 学习(9) - turbine stream无法在eureka注册的解决办法
turbine是啥就不多解释了,初次接触的可以移步spring cloud 学习(4) - hystrix 服务熔断处理 拉到最后看一下,turbine stream默认情况下启动成功后,eureka ...
- Spring Cloud(三):服务提供与调用 Eureka【Finchley 版】
Spring Cloud(三):服务提供与调用 Eureka[Finchley 版] 发表于 2018-04-15 | 更新于 2018-05-07 | 上一篇文章我们介绍了 Eureka 服务 ...
随机推荐
- redis2
一.安装redis 1) 下载redis安装包 可去官网http://redis.io ,也可通过wget命令, wget http://download.redis.io/redis-sta ...
- centos7 lvm实例
1.lvm安装 rpm -qa|grep lvm lvm version yum install -y lvm2* 2.磁盘分区 fdisk -l fdisk /dev/xvdb1 #分区结束标记 t ...
- Python开课复习-10/10
1. 什么时匿名函数def 定义 的是有名函数:特点是可以通过名字重复调用 def func(): #func = 函数的内存地址 pass匿名函数就是没有名字的函数:特点是只能在定义时使用一次 2. ...
- oracle 查看数据库版本
select * from v$version;
- 2018.11.06 bzoj1835: [ZJOI2010]base 基站选址(线段树优化dp)
传送门 二分出每个点不需要付www贡献的范围,然后可以推出转移式子: f[i][j]=f[i−1][k]+value(k+1,j)+c[i]f[i][j]=f[i-1][k]+value(k+1,j) ...
- ORACLE 导入的问题
1.导入报错 我将ORACLE12.2 导出的文件,导入到ORACLE12.1 . IMP-00010: 不是有效的导出文件, 标头验证失败 解决办法: 修改 dmp 文件版本,使用UEDITOR打开 ...
- dj django与ajax交互
Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数 ...
- MySQL库中表名忽略大小写设置的影响
前不久,对mysql的lower_case_table_names参数有点小小的疑问: 1.lower_case_table_names是表名忽略大小写还是所有对象(字段.索引等)都忽略大小写? 2. ...
- Html5与Css3知识点拾遗(二)
页面title 选择能简要概括文档内容的文字作为title文字,title核心内容放在前60个字符 分级标题 1.创建分级标题时,避免跳过级别,如h3直接跳到h5,但允许从低级别跳到高级别. 2.不用 ...
- day28(ajax之js原生代码实现)
ajax ajax:异步页面无刷新技术 AJAX:异步的 JavaScript And XML. * 使用的是老的技术,用的是新的思想. AJAX的功能:完成页面的局部刷新,不中断用户的体验. XML ...