热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hystrix服务容错保护使用明细

1.微服务服务依赖的风险在微服务架构中,系统被拆成了很多单元,各单元的应用间通过服务注册与订阅的方式互相依赖。依赖通过远程调用的方式来执行。有可能因为网
1.微服务服务依赖的风险




在微服务架构中,系统被拆成了很多单元,各单元的应用间通过服务注册与订阅的方式互相依赖。依赖通过远程调用的方式来执行。


有可能因为网络原因或者依赖服务自身问题出现调用故障或延迟,而这些问题也会导致调用方的对外服务也出现延迟,此时若调用方的请求不断增加,最后会导致自身服务的瘫痪





2.断路器模式




断路器本身是一种开关装置,用于在电路上保护线路过载,当线路中有电路发生短路时,断路器能够及时切断故障电路,防止过载


分布式架构的断路器模式也是类似的作用,当某个服务单元发生故障后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待,及时的释放了调用方线程。这样就避免了故障在分布式系统中的蔓延。








2.Hystrix的使用




    准备工作:


启动一个高可用的Eureka-server


    * 创建一个服务应用,以对外提供接口服务


    * 创建项目part-1-website项目充当客户端(以下几种方式都是在该项目中实现,注意:同样需要注册到eureka中)
    具体可参考笔者另一篇文章 http://blog.csdn.net/qq_26323323/article/details/78652849  





    1)在website项目中添加Hystrix依赖

org.springframework.cloudspring-cloud-starter-hystrix    2)在Application中添加@EnableHystrix

@EnableHystrix
@SpringBootApplication
@EnableEurekaClient
public 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使用情况,添加依赖如下

org.springframework.cloudspring-cloud-starter-hystrixorg.springframework.cloudspring-cloud-starter-hystrix-dashboard

注意:同样需要引入parent依赖,为spring-cloud-starter-parent Brixton.SR5版本

    2)在Application上添加@EnableHystrixDashBoard,启动dashboard功能

@EnableHystrixDashboard
public 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 参数配置可参考此文 




推荐阅读
author-avatar
mmakarlen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有