您当前的位置: 首页 > 

恐龙弟旺仔

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hystrix服务容错保护使用明细

恐龙弟旺仔 发布时间:2017-11-30 19:01:05 ,浏览量:2

1.微服务服务依赖的风险
    在微服务架构中,系统被拆成了很多单元,各单元的应用间通过服务注册与订阅的方式互相依赖。依赖通过远程调用的方式来执行。
    有可能因为网络原因或者依赖服务自身问题出现调用故障或延迟,而这些问题也会导致调用方的对外服务也出现延迟,此时若调用方的请求不断增加,最后会导致自身服务的瘫痪
2.断路器模式
    断路器本身是一种开关装置,用于在电路上保护线路过载,当线路中有电路发生短路时,断路器能够及时切断故障电路,防止过载
    分布式架构的断路器模式也是类似的作用,当某个服务单元发生故障后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待,及时的释放了调用方线程。这样就避免了故障在分布式系统中的蔓延。
2.Hystrix的使用
    准备工作:
    *  启动一个高可用的Eureka-server
    * 创建一个服务应用,以对外提供接口服务
    * 创建项目part-1-website项目充当客户端(以下几种方式都是在该项目中实现,注意:同样需要注册到eureka中)     具体可参考笔者另一篇文章 http://blog.csdn.net/qq_26323323/article/details/78652849  
    1)在website项目中添加Hystrix依赖
		
		
		    org.springframework.cloud
		    spring-cloud-starter-hystrix
		
    2)在Application中添加@EnableHystrix
@EnableHystrix
@SpringBootApplication
@EnableEurekaClient
public class WebsiteApp {
}
    3)创建Controller
@RestController
@RequestMapping("/hystrix")
public class TestHystrixController {

	@Autowired
	private 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.cloud
		    spring-cloud-starter-hystrix
		
		
		
		
		    org.springframework.cloud
		    spring-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 参数配置可参考此文 
关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0409s