服务治理-Resilience4j(熔断)-创新互联

Hystrix官方已停止维护,官方推荐使用Resilience4j来替代Hystrix实现服务治理,今天我们看看如何使用Resilience4j。

创新互联公司是一家集网站建设,永清企业网站建设,永清品牌网站建设,网站定制,永清网站建设报价,网络营销,网络优化,永清网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

介绍

1、一款受 Hystrix 启发的轻量量级且易于使用的容错库
2、针对 Java 8 与函数式编程设计
3、github地址:https://github.com/resilience4j/resilience4j
4、核心组件:
服务治理-Resilience4j(熔断)

如何基于Resilience4j实现断路器

断路器

1、Resilience4j的circuitbreaker组件实现了断路器功能,他是基于内存的断路器,采用
ConcurrentHashMap来实现的。

2、断路器的功能主要是处理熔断,当客户端调用服务端出现问题时进行拦截,直接返回,不再发送请求给服务端,减少下游服务的冲击。

实验环境

1、基于Eureka的服务注册和发现
2、提供服务的waiter-service
3、客户端调用customer-service

关键代码

1、启动waiter-service和customer-service服务,分别注册到Eureka,这里不再介绍,可以参考之前的博客。

2、waiter-service作为服务提供方,不涉及到配置代码

3、关键代码在客户端customer-service

3.1、断路器的配置:application.properties
规则取名为-order

resilience4j.circuitbreaker.backends.order.failure-rate-threshold=50
resilience4j.circuitbreaker.backends.order.wait-duration-in-open-state=5000
resilience4j.circuitbreaker.backends.order.ring-buffer-size-in-closed-state=5
resilience4j.circuitbreaker.backends.order.ring-buffer-size-in-half-open-state=3
resilience4j.circuitbreaker.backends.order.event-consumer-buffer-size=10

3.2、使用注解的方式实现断路器

@GetMapping("/getCoffee1")
    @io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker(name = "order")
    public Coffee getCoffee1() {
        Coffee list = coffeeService.getById(1l);
        log.info("Read coffee: {} coffee", list);
        return list;
    }

3.3、使用注册方式,实现断路器,短路之后默认返回空的list

private CircuitBreaker circuitBreaker;
    public CustomerController(CircuitBreakerRegistry registry) {
        circuitBreaker = registry.circuitBreaker("order");
    }
    @GetMapping("/getCoffee2")
    public List<Coffee> getCoffee2() {
        return Try.ofSupplier(
                CircuitBreaker.decorateSupplier(circuitBreaker,
                        () -> coffeeService.getAll()))
                .recover(CircuitBreakerOpenException.class, Collections.emptyList())
                .get();
    }

3.4、关闭waiter-service,模拟服务宕机,展示效果

连续请求3次,服务调用失败
服务治理-Resilience4j(熔断)

失败超过50%,第4次触发短路器打开:
服务治理-Resilience4j(熔断)

等待5秒钟,断路器尝试重连:
服务治理-Resilience4j(熔断)

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。

本文题目:服务治理-Resilience4j(熔断)-创新互联
网址分享:https://www.cdcxhl.com/article18/cepggp.html

成都网站建设公司_创新互联,为您提供动态网站面包屑导航外贸网站建设自适应网站品牌网站设计定制网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计