java B2B2C springmvc mybatis仿淘宝电子商城系统-Hystrix服务容错

应用场景html

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

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

Hystrix的内部处理逻辑bash

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

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

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

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

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

若服务执行超时, 则执行降级服务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;
    }
 
}
复制代码

java B2B2C springmvc mybatis仿淘宝电子商城系统

相关文章
相关标签/搜索