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

 

posted @ 2020-05-07 17:38  IT路上的小白  阅读(204)  评论(0编辑  收藏  举报