Soul的限流断路器的使用和流程

2021-01-28  本文已影响0人  赵镇

Soul的限流断路器的使用和流程

由于之前并没有使用过Hystrix,Resilience4j和sentinel中的任何一种,此处仅对三种流控和断路器插件做一个流程分析

Soul中Hystrix的使用和操作流程

file

Soul中Resilience4j的使用和操作流程

    protected Mono<Void> doExecute(final ServerWebExchange exchange, final SoulPluginChain chain, final SelectorData selector, final RuleData rule) {
        final SoulContext soulContext = exchange.getAttribute(Constants.CONTEXT);
        assert soulContext != null;
        Resilience4JHandle resilience4JHandle = GsonUtils.getGson().fromJson(rule.getHandle(), Resilience4JHandle.class);
        if (resilience4JHandle.getCircuitEnable() == 1) {
            return combined(exchange, chain, rule);
        }
        return rateLimiter(exchange, chain, rule);
    }

根据CircuitEnable属性的值来决定只是做流控还是同时同时做流控和断流两个方向。但是这个规则的配置是基于数字配置的。是不是可以优化为boolean类型的,这可能是个可以优化的方向


file

Soul中sentinel插件的使用和流程

三个断路器的控制基本就是这样, 后续对三个断路器有了使用经验再来具体进行对比。

欢迎关注和点赞,以及总结的分类面试题https://github.com/zhendiao/JavaInterview

上一篇 下一篇

猜你喜欢

热点阅读