Hystrix服务容错降级使用
来源:互联网 发布:域名价值 编辑:程序博客网 时间:2024/05/17 06:34
maven的集成
<!--断路由,服务容错保护--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId></dependency>
构建Hystrix的Command对象, 调用执行方法.
Hystrix检查当前服务的熔断器开关是否开启, 若开启, 则执行降级服务getFallback方法.
若熔断器开关关闭, 则Hystrix检查当前服务的线程池是否能接收新的请求, 若超过线程池已满, 则执行降级服务getFallback方法.
若线程池接受请求, 则Hystrix开始执行服务调用具体逻辑run方法.
若服务执行失败, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.
若服务执行超时, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.
若服务执行成功, 返回正常结果.
若服务降级方法getFallback执行成功, 则返回降级结果.
若服务降级方法getFallback执行失败, 则抛出异常.
/
** * 服务容错 * Created by gaomin on 2017/12/12. */@Servicepublic class RestTemplateService { @Autowired protected RestTemplate restTemplate; @Autowired protected RedisTemplate<String,Object> redisTemplate; protected static String SERVICE_SPORTS = "http://SERVICE-SPORTS"; @Bean @LoadBalanced //开启负载均衡 RestTemplate restTemplate() { return new RestTemplate(); } @HystrixCommand(fallbackMethod = "getUserErrorBack") public Grade getUser(int userId) { String url = SERVICE_SPORTS+"/sportsrest/getGrade?userId={userId}"; Map<String, Object> uriVariables = new HashMap<String, Object>(); uriVariables.put("userId", userId); Grade grade = restTemplate.getForObject(url, Grade.class, uriVariables); return grade; } /** * 调用别的服务时,如果别的服务未响应,会导致本服务请求阻塞,这个可以解决断路由保护 * 直接返回error,默认请求时间2000毫秒 * @return */ public Grade getUserErrorBack(int userId){ return null; } /** * 更新redis ,失败时回调 * @param user */ @HystrixCommand(fallbackMethod = "UpdateErrorBack") public void updateUserInfoToRedis(User user){ String userkey = RedisStaticUtil.USER_INFO_KEY+user.getId(); redisTemplate.delete(userkey); redisTemplate.opsForValue().set(userkey,user); } public void UpdateErrorBack(User user){ // 暂时不处理 redis更新失败 可以进行多次降级处理, } @HystrixCommand(fallbackMethod = "getTotalDistanceAndTimeErrorBack") public Map getTotalDistanceAndTime(int userId) { String url = SERVICE_SPORTS+"/sportsrest/getTotalDistanceAndTime?userId={userId}"; Map<String, Object> uriVariables = new HashMap<String, Object>(); uriVariables.put("userId", userId); Map map = restTemplate.getForObject(url, HashMap.class, uriVariables); return map; }}
阅读全文
0 0
- Hystrix服务容错降级使用
- Spring Cloud学习--容错机制(Hystrix之服务降级)
- Hystrix服务容错保护使用明细
- 服务容错保护Hystrix
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
- 6.Spring Cloud:服务容错保护(Hystrix服务降级)【Dalston版】
- Spring Cloud构建微服务架构—服务容错保护(Hystrix服务降级)
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- Spring Cloud Hystrix(服务容错保护)
- 高可用服务容错框架Hystrix
- sbc(五)Hystrix-服务容错与保护
- spring cloud--服务容错保护Hystrix
- Spring Cloud中Hystrix的服务降级与异常处理
- 【jQuery】jQuery官方基本教程的学习笔记1-核心Core
- 装箱问题
- Linux下Solr4.10.4搜索引擎的安装与部署图文详解
- Centos7安装mysql
- 菜鸟先飞之二维码zxing生成
- Hystrix服务容错降级使用
- 大型工程代码如何防止头文件被重复包含
- IntelliJ Idea 常用快捷键列表
- Apache Ignite
- Jsoup之NoClassDefFoundError
- linux网络配置
- 如何学习新编程语言
- 如何向后台传递和输出多行文本
- (重要)JS中的构造函数详细解析