Hystrix入门教程

Hystrix入门教程

一·什么是Hystrix?Hystrix有什么作用?使用Hystrix有哪些适用场景

Hystrix是springCloud的组件之一,Hystrix 可以让我们在分布式系统中对服务间的调用进行控制
加入一些调用延迟或者依赖故障的容错机制。Hystrix 通过将依赖服务进行资源隔离
进而阻止某个依赖服务出现故障时在整个系统所有的依赖服务调用中进行蔓延;
同时Hystrix 还提供故障时的 fallback 降级机制。
通过这些方法帮助我们提升分布式系统的可用性和稳定性。
在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,
但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等.

二·导入Hystrix相关依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

三·在启动类上加上@EnableHystrix

@SpringBootApplication
@EnableFeignClients
@EnableApolloConfig
@ComponentScan(basePackages = "com.demo.Hystrix")
@EnableHystrix
public class ApiApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {



        SpringApplication.run(ApiApplication.class, args);

    }

四·在需要限流的方法中使用Hystrix

        @HystrixCommand(groupKey="test-provider",
            threadPoolKey="test-provider",
            threadPoolProperties = {
            @HystrixProperty(name = "coreSize", value = "20"),//线程池大小
            @HystrixProperty(name = "maximumSize", value = "30"),//最大线程池大小
            @HystrixProperty(name = "maxQueueSize", value = "20"),//最大队列长度
            @HystrixProperty(name =  "keepAliveTimeMinutes", value = "2")//线程存活时间
            },commandProperties = {
            @HystrixProperty(name = "execution.isolation.strategy",value = "THREAD"),
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "60000" ),
            //此处有坑,若中断时间不设置,上面所有参数都可能失效
            @HystrixProperty(name = "execution.isolation.thread.interruptOnTimeout",value = "300000" )
             },
             //fallbackMethod必须重写,否则直接进入fallback方法中!!!!!!
             //此处的testfallback,为第五步中重写的方法!!!!!!
            fallbackMethod = "testfallback")

    @ApiOperation(value = "Hystrix测试接口")
    @PostMapping("/testHystrix")
    @Log(value = "Hystrix测试接口")
    public DefaultResponse<orderResponse> testHystrix(@RequestBody orderRequestVO req) {
        //
        ......
    }

五·重写fallback方法

     public DefaultResponse<Response> testfallback(HttpServletRequest request, HttpServletResponse response, @RequestBody OrderReq req) {
        DefaultResponse defaultResp = new DefaultResponse();
        defaultResp.setCode(Integer.parseInt(ServiceStatus.RankFAIL.getCode()));
        defaultResp.setMessage("系统繁忙,请稍后再试");
        return defaultResp;
    }

六· 使用总结,此处介绍三个使用过程中的三个大坑

1.必须设置中断时间,若不设置所有参数都可能失效

2.第四步中的@HystrixCommand等注解只能在service层中使用,在controller中使用,hystrix的限流作用会失效

3.必须重写fallbackMethod的fallback方法,不重写的话默认直接进入fallback方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于Spring Cloud入门教程,你可以参考以下步骤: 1. 安装Java开发环境:确保你的机器上已经安装了Java Development Kit(JDK)。 2. 创建Spring Boot项目:使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目。在这个页面上,你可以选择使用的Spring Boot版本、添加的依赖以及其他项目配置。 3. 添加Spring Cloud依赖:在创建项目时,你可以选择添加Spring Cloud的依赖。选择适合你需求的Spring Cloud组件,如Eureka、Zuul、Feign等。 4. 配置Spring Cloud组件:根据你选择的Spring Cloud组件,进行相应的配置。比如使用Eureka作为服务注册中心,需要配置Eureka Server;使用Feign进行服务调用,需要配置Feign Client等。 5. 创建微服务:根据你的业务需求,创建相应的微服务。每个微服务都是一个独立的Spring Boot应用。 6. 注册微服务到服务注册中心:在每个微服务启动时,将自己注册到服务注册中心。这样其他微服务就可以通过服务注册中心来发现和调用该微服务。 7. 实现服务间通信:使用Spring Cloud提供的组件进行服务间通信。比如使用Feign调用其他微服务提供的接口。 8. 配置负载均衡:可以使用Spring Cloud提供的负载均衡组件(如Ribbon)来实现负载均衡。 9. 实现服务容错:使用Spring Cloud提供的熔断器(如Hystrix)来实现服务容错。 10. 部署和测试:将微服务部署到服务器上,并进行测试验证。 这只是一个简单的入门教程的大致流程,具体的实现细节和配置可能因你的需求和环境而有所不同。你可以根据这个流程逐步学习和实践Spring Cloud,进一步深入了解和应用它。 希望对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值