zoukankan      html  css  js  c++  java
  • SpringCloud服务安全之hystrix

    首先了解一下分布式系统最常见的面临的问题:

     

     


     介绍:(现在好像已经停止更新了)

     

    hystrix可以用来做什么?

    服务降级,服务熔断,接近实时的监控

    服务降级

    现象:服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,fallback

    哪些情况会发出降级:程序运行异常,超时,服务熔断触发服务降级,线程池/信号量也会导致服务降级

    服务熔断

    现象:类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示

               就是保险丝,流程是:服务的降级->进而熔断->恢复调用链路

    服务限流:秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行


    服务降级:

    怎么使用?:

    1.在使用的方法上加上@HystrixCommand注解即可,一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbckMethod调用类中的指定方法

    2.记得在主启动类中激活@EnableCircuitBreaker

    如果是在消费端使用也是需要引入pom和修改yml的

    pom:

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

    yml:

    server:
      port: 80
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: true
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
    feign:
      hystrix:
        enabled: true
     
    View Code

    主启动类:@Enablehystrix


     目前问题:

    • 每个业务方法对应一个兜底的方法,代码膨胀.
    • 统一和自定义的分开

    解决办法:

    每一个方法配置一个? 如果有多个就出现膨胀

     


     服务熔断

      断路器:一句话就是家里的保险丝

      熔断是什么?

      

     

    熔断的三种类型:

    •  熔断打开:请求不再调用当前服务,内部设置一般为MTTR(平均故障处理时间),当打开长达导所设时钟则进入半熔断状态
    •  熔断关闭: 熔断关闭后不会对服务进行熔断
    •  熔断半开 :部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

     


     断路器打开之后:

     


     服务监控  hystrixDashboard

  • 相关阅读:
    449. Serialize and Deserialize BST
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    240. Search a 2D Matrix II
    5. Longest Palindromic Substring
    数位DP专题(开坑。
    POJ 2356
    HDU 4055
    HDU 4054
    HDU 1559
  • 原文地址:https://www.cnblogs.com/cb1186512739/p/12750847.html
Copyright © 2011-2022 走看看