SpringCloud+Hystrix服务容错
2018-12-14 08:36:57来源:博客园 阅读 ()
Netflix Hystrix — 应对复杂分布式系统中的延时和故障容错
+
应用场景
分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择
Hystrix的内部处理逻辑
构建Hystrix的Command对象, 调用执行方法.
Hystrix检查当前服务的熔断器开关是否开启, 若开启, 则执行降级服务getFallback方法.
若熔断器开关关闭, 则Hystrix检查当前服务的线程池是否能接收新的请求, 若超过线程池已满, 则执行降级服务getFallback方法.
若线程池接受请求, 则Hystrix开始执行服务调用具体逻辑run方法.
若服务执行失败, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.
若服务执行超时, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.
若服务执行成功, 返回正常结果.
若服务降级方法getFallback执行成功, 则返回降级结果.
若服务降级方法getFallback执行失败, 则抛出异常.
不多说先配置执行一波
Maven
<!--断路由,服务容错保护-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
Java Code
public class BaseService {
@Autowired
protected RestTemplate restTemplate;
protected static String SERVICE_BIZ = "http://service-biz";
@Bean
@LoadBalanced
//开启负载均衡
RestTemplate restTemplate() {
return new RestTemplate();
}
}
/**
* Created by gaomin on 2017/12/24.
*/
@Service
public class RestTemplateServiceImp extends BaseService implements RestTemplateService {
@Override
@HystrixCommand(fallbackMethod = "getBizSerivceDataErrorBack")
public Object getBizSerivceData() {
String url = SERVICE_BIZ+"/index/findUserMenuList";
Map<String,Object> uriVariables = new HashMap<>();
return restTemplate.getForObject(url,Object.class);
}
/**
* getBizSerivceDataErrorBack 和 getBizSerivceData 参数要一样返回类型也要一样
* 服务降级 SERVICE_BIZ服务挂了,自动走这个方法.适用于所有第三方
* 调用别的服务时,如果别的服务未响应,会导致本服务请求阻塞,这个可以解决断路由保护
* 直接返回error,默认请求时间2000毫秒
* @return
*/
public Object getBizSerivceDataErrorBack(){
//可以重新请求,还可以继续降级 ....
return null;
}
}
我们经常调用第三方的东西,如果延迟了,服务挂了,我们不希望会导致自己的接口阻塞,报错等等。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Logback简单使用
- 聊聊微服务架构及分布式事务解决方案! 2020-06-10
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Spring Cloud微服务(一):公共模块的搭建 2020-06-07
- Java生鲜电商平台-微服务生鲜电商系统设计(小程序/APP) 2020-06-04
- 微服务平台技术架构 2020-06-02
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash