Hystrix服务容错保护使用明细
来源:互联网 发布:李化宇李化雷炫踪网络 编辑:程序博客网 时间:2024/05/17 07:18
1.微服务服务依赖的风险
在微服务架构中,系统被拆成了很多单元,各单元的应用间通过服务注册与订阅的方式互相依赖。依赖通过远程调用的方式来执行。
有可能因为网络原因或者依赖服务自身问题出现调用故障或延迟,而这些问题也会导致调用方的对外服务也出现延迟,此时若调用方的请求不断增加,最后会导致自身服务的瘫痪
2.断路器模式
断路器本身是一种开关装置,用于在电路上保护线路过载,当线路中有电路发生短路时,断路器能够及时切断故障电路,防止过载
分布式架构的断路器模式也是类似的作用,当某个服务单元发生故障后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待,及时的释放了调用方线程。这样就避免了故障在分布式系统中的蔓延。
2.Hystrix的使用
准备工作:
* 启动一个高可用的Eureka-server
* 创建一个服务应用,以对外提供接口服务
* 创建项目part-1-website项目充当客户端(以下几种方式都是在该项目中实现,注意:同样需要注册到eureka中)
具体可参考笔者另一篇文章 http://blog.csdn.net/qq_26323323/article/details/78652849
具体可参考笔者另一篇文章 http://blog.csdn.net/qq_26323323/article/details/78652849
1)在website项目中添加Hystrix依赖
<!-- spring-cloud-starter-hystrix --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId></dependency>2)在Application中添加@EnableHystrix
@EnableHystrix@SpringBootApplication@EnableEurekaClientpublic class WebsiteApp {}3)创建Controller
@RestController@RequestMapping("/hystrix")public class TestHystrixController {@Autowiredprivate RestTemplate restTemplate;@Value("${part-1-sms}")private String part1sms;@RequestMapping("/test")@HystrixCommand(fallbackMethod="errorTest",commandKey="testKey",threadPoolProperties={@HystrixProperty(name="coreSize",value="20"),//命令执行最大并发数@HystrixProperty(name="maxQueueSize",value="50"),//线程池最大队列大小@HystrixProperty(name="queueSizeRejectionThreshold",value="30")//为队列设置拒绝阈值})public String testSms(){return restTemplate.getForObject("http://"+ part1sms +"/sms/test", String.class);}public String errorTest(){return "call test method error!";}}
注意:
* RestTemplate即使用了@LoadBalanced的
* part1sms即提供服务的项目名称
* 在调用sms服务的方法testSms上添加@HystrixCommand注解,要明确定义fallbackMethod方法,(注意:errorTest和testSms方法的参数和返回值类型要保持一致)
* 一系列的HystrixProperties可参考其他文章自定义
4)验证 启动sms服务时,每次都会正确返回,当关闭sms服务时,不会报其他异常或一直等待,而是报errorTest方法的返回信息
3.Hystrix仪表盘
仪表盘以UI的方式展示关于请求命令的指标度量。
SpringCloud亦完美整合了Hystrix仪表盘
使用方式如下:
1)创建一个新项目hystrix-dashboard,用于监控其他项目的hystrix使用情况,添加依赖如下
<!-- spring-cloud-starter-hystrix --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId></dependency><!-- spring-cloud-starter-hystrix --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId></dependency>
注意:同样需要引入parent依赖,为spring-cloud-starter-parent Brixton.SR5版本
2)在Application上添加@EnableHystrixDashBoard,启动dashboard功能
@EnableHystrixDashboardpublic class WebsiteApp {}
3)设置server.port=8080,用于访问该项目
4)启动该项目,并访问http://localhost:8080/hystrix,可看到页面如下
5)在输入框里添加需要进行监控的IP及host
注意:
* 可添加集群监控,此时需要整合Turbine
* 也可添加单个应用监控,被监控的项目需要添加hystrix依赖,在相关方法上需要添加@HystrixCommand
6)点击Monitor Stream,可看到以下界面
注意:以上图片是笔者连续访问被监控项目的某个接口时形成的效果图
效果图简介:实心圆和曲线是最重要的图形信息
* 实心圆:通过颜色的变化代表了示例的健康程度,健康度从绿色、黄色、橙色、红色递减;实心圆越大,代表请求流量越大
* 曲线图:用来记录2分钟内流量的相对变化
* 其他信息
参考: Spring Cloud微服务实战
http://blog.csdn.net/harris135/article/details/77879148?locationNum=3&fps=1 参数配置可参考此文
阅读全文
0 0
- Hystrix服务容错保护使用明细
- 服务容错保护Hystrix
- Spring Cloud Hystrix(服务容错保护)
- sbc(五)Hystrix-服务容错与保护
- spring cloud--服务容错保护Hystrix
- Hystrix服务容错降级使用
- springcloud微服务四:服务容错保护Hystrix断路器
- springcloud-hystrix容错保护注解方式的使用
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
- 6.Spring Cloud:服务容错保护(Hystrix服务降级)【Dalston版】
- Spring Cloud构建微服务架构—服务容错保护(Hystrix服务降级)
- Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)
- SpringCloud学习笔记之Feign结合Hystrix实现服务容错保护
- 05.Spring Cloud学习笔记之服务容错保护组件Hystrix
- Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)
- Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
- Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】
- 让阿里京东疯狂掐架的方兴东,究竟是何方神圣?
- 为什么现在的监控系统容易硬盘坏?附原理解析
- 马斯克澄清“我不是中本聪”,比特币创始人究竟是谁?
- 如何在CentOS 5/6上安装EPEL 源
- Xcode无法用真机运行的问题
- Hystrix服务容错保护使用明细
- 马云再出新语录:月入一两百万很高兴,挣一二十亿很难受
- 北漂的程序员们,这寒冬你是否“有枝可依”?
- 天天 Java、C/C++,可这五种编程语言你知道吗?
- 关于Ubuntu系统下Apache2的404自定义页面设置
- 大数据、人工智能如何融合?来自微软、阿里、滴滴、科大讯飞等的 120 多位专家要用 3 天为你解答!
- 刚刚,百度和小米宣布在一起,我还以为是谁收购了谁
- 干不过微信,又抢钉钉地盘!中移动砸下 8400 万重做飞信
- 62 岁的比尔·盖茨当选外籍院士,但却与微软无关