JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

微服务中的服务降级熔断限流技术:Hystrix

wys521 2024-11-17 16:58:13 精选教程 17 ℃ 0 评论

技术/杨33


Hystrix是一个用于处理分布式系统的延迟和容错的开源库。在分布式系统里,由于网络原因或者自身原因,服务并不能保证100%可用,假如某个服务出现问题,这个服务再次被请求就会出现线程阻塞,请求的数量越来越多,把线程池资源消耗完毕,服务就会出现瘫痪,由于微服务的服务与服务之间存在依赖性,所以故障会传播,最终整个微服务体系瘫痪,这就是“雪崩”效应。

Hystrix能够保证某个服务出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

某个服务发生故障时,通过Hystrix的故障监控,向调用方返回一个符合预期的、可处理的备选响应,而不是长时间的等待或者抛出调用方无法处理的异常。这样就保证了服务调用方的线程不会被长时间、不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。


一、服务降级、服务熔断、服务限流

  • 服务降级

服务不可用、代码异常、接口等待时间长的时候,不让客户端等待,立刻返回一个友好的提示。

  • 服务熔断

达到服务的最大访问能力后,直接拒绝再次被访问,然后调用服务降级的方法返回友好提示。

  • 服务限流

秒杀高并发等操作,限制一定时间内可以访问多少服务,有序进行。

二、Java中如何使用Hystrix

Hystrix都是在服务消费者的模块进行断路器的相关配置。

1、pom.xml文件依赖包引入

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

2、主启动类必须添加注解@EnableCircuitBreaker,激活服务降级。

3、fallbackMethod参数指定系统出现问题,服务降级调用的方法名,@HystrixProperty注解可以约定该方法被调用的时间限制,比如超过3秒,就使用服务降级,调用友好提示的方法。

/**
     * 系统正常提供的方法
     * @return
     */
    @HystrixCommand(fallbackMethod = "handler", commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")
    })
    public String test() {
        return "系统目前正常";
    }

    /**
     * test()方法出现问题后被调用
     * @return
     */
    public String handler() {
        return "系统繁忙,请稍后再试!";
    }

还可以这是全局的服务降级注解@DefaultProperties(defaultFallback = "handler"),对所有方法提供统一的服务异常处理提示。



作者:杨33,北京互联网公司在职Java开发,专注分享写作干货。欢迎关注我,期待你的点赞评论。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表