博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA 多用户商城系统b2b2c-API网关服务(Spring Cloud Gateway)
阅读量:7208 次
发布时间:2019-06-29

本文共 1745 字,大约阅读时间需要 5 分钟。

应用场景

需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码:壹零叁八柒柒肆六二六

分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择.

Hystrix的内部处理逻辑

构建Hystrix的Command对象, 调用执行方法.

Hystrix检查当前服务的熔断器开关是否开启, 若开启, 则执行降级服务getFallback方法.

若熔断器开关关闭, 则Hystrix检查当前服务的线程池是否能接收新的请求, 若超过线程池已满, 则执行降级服务getFallback方法.

若线程池接受请求, 则Hystrix开始执行服务调用具体逻辑run方法.

若服务执行失败, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.

若服务执行超时, 则执行降级服务getFallback方法, 并将执行结果上报Metrics更新服务健康状况.

若服务执行成功, 返回正常结果.

若服务降级方法getFallback执行成功, 则返回降级结果.

若服务降级方法getFallback执行失败, 则抛出异常.

不多说先配置执行一波

Maven

org.springframework.cloud
spring-cloud-starter-hystrix
Java Codepublic 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. */@Servicepublic class RestTemplateServiceImp extends BaseService implements RestTemplateService { @Override @HystrixCommand(fallbackMethod = "getBizSerivceDataErrorBack") public Object getBizSerivceData() { String url = SERVICE_BIZ+"/index/findUserMenuList"; Map
uriVariables = new HashMap<>(); return restTemplate.getForObject(url,Object.class); } /** * getBizSerivceDataErrorBack 和 getBizSerivceData 参数要一样返回类型也要一样 * 服务降级 SERVICE_BIZ服务挂了,自动走这个方法.适用于所有第三方 * 调用别的服务时,如果别的服务未响应,会导致本服务请求阻塞,这个可以解决断路由保护 * 直接返回error,默认请求时间2000毫秒 * @return */ public Object getBizSerivceDataErrorBack(){ //可以重新请求,还可以继续降级 .... return null; } }复制代码

转载地址:http://lylum.baihongyu.com/

你可能感兴趣的文章
JQuery URL的GET参数值获取方法
查看>>
关于Char* ,CString ,WCHAR*之间的转换问题
查看>>
第十二天--Property List和NSUserDefaults
查看>>
JS Bin Tips and Bits • About
查看>>
Sharepoint学习笔记—习题系列--70-576习题解析 -(Q40-Q44)
查看>>
nodejs发展
查看>>
Fragment过度动画分析一
查看>>
UBI文件系统简介
查看>>
《现代操作系统》精读与思考笔记 第一章 引论
查看>>
System.out.print实现原理猜解
查看>>
每日英语:The Invasion of the Online Tutors
查看>>
codepage IMLangCodePages
查看>>
Leetcode: Valid Parentheses
查看>>
JavaScript Structure
查看>>
java 流媒体服务器Red5 FQA
查看>>
mysql--SQL编程(关于mysql中的日期) 学习笔记2
查看>>
jquery 请求jsp传递json数据的方法
查看>>
Repeater绑定事件ItemDataBound中获取数据库中数据
查看>>
草长莺飞,总归一字
查看>>
HDOJ 2097
查看>>