美文网首页架构
spring-cloud-gateway使用-熔断

spring-cloud-gateway使用-熔断

作者: sleepforests | 来源:发表于2019-07-18 16:02 被阅读0次

    代码在:
    https://gitee.com/sleepforests/spring-cloud-gateway-demo

    熔断和限流是保护系统的2个方面。

    限流可以简单的理解是对下游服务的保护,防止流量激增的情况下大量的请求将下游服务打垮。

    熔断主要保护的是调用方服务,如某A服务调用B服务的rpc接口,突然B服务接口不稳定,表现为接口延迟或者失败率变大。这个时候如果对B服务调用不能快速失败,那么会导致A服务大量线程资源无法释放导致最终A服务不稳定,故障点由B服务传递到A服务,故障扩大。熔断就是在B服务出现故障的情况下,断开对B的调用,通过快速失败来保证A服务的稳定。

    scg作为网关入口,必须考虑对自己的保护,所以必须考虑接入熔断组件。
    目前熔断组件可以使用下面2个
    sentinel
    https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81
    hystrix https://github.com/Netflix/Hystrix

    其中,scg对于hystrix是开箱即用的支持,配置如下:

    spring:
      cloud:
        gateway:
          routes:
          - id: hystrix_route
            uri: http://example.org
            filters:
            - Hystrix=myCommandName
    

    具体用法可以查看scg官方文档。

    这里主要是对于hystrix几点使用心得:
    1、hystrix很香,建议在同步开发模式下大量的使用;这句话什么意思呢?其实反过来说就是,在scg(webflux)模式下建议不要大量使用。
    2、同步模式下规划好线程池,对于调用的每个服务,都使用command模式封装好,设置好线程数、超时、fallback等等。这个是在实际项目大量使用过,当然当时业务的qps不高,没有过万的qps场景。

    阿里开源的sentinel没有深入研究,也没有大量使用。但是阿里的文档有对比,写的很清楚,理论上是具有hystrix的优点且具不使用线程池模型,具有更好的性能。
    https://github.com/alibaba/Sentinel/wiki/Sentinel-%E4%B8%8E-Hystrix-%E7%9A%84%E5%AF%B9%E6%AF%94

    这次公司的业务场景qps比较高,http接口几十万的qps,所以得看看sentinel的一些使用,后面有具体的使用再整理发出来。

    相关文章

      网友评论

        本文标题:spring-cloud-gateway使用-熔断

        本文链接:https://www.haomeiwen.com/subject/lsktcctx.html