轻量级的容错组件 Resilience4j

轻量级的容错组件 Resilience4j

Apache
Java
跨平台
2018-08-21
红薯

Resilience4j 是一个轻量级的容错组件,其灵感来自于 Hystrix,但主要为 Java 8 和函数式编程所设计。轻量级体现在其只用 Vavr 库(前身是 Javaslang),没有任何外部依赖。而 Hystrix 依赖了 Archaius ,Archaius 本身又依赖很多第三方包,例如 Guava、Apache Commons Configuration 等。

限速组件架构:

Resilience4j 提供了如下几款核心组件

  • resilience4j-circuitbreaker: Circuit breaking

  • resilience4j-ratelimiter: Rate limiting

  • resilience4j-bulkhead: Bulkheading

  • resilience4j-retry: Automatic retrying (sync and async)

  • resilience4j-cache: Response caching

附件组件包括:

  • resilience4j-reactor: Spring Reactor adapter

  • resilience4j-rxjava2: RxJava2 adapter

  • resilience4j-micrometer: Micrometer Metrics exporter

  • resilience4j-metrics: Dropwizard Metrics exporter

  • resilience4j-prometheus: Prometheus Metrics exporter

  • resilience4j-spring-boot: Spring Boot Starter

  • resilience4j-ratpack: Ratpack Starter

  • resilience4j-retrofit: Retrofit Call Adapter Factories

  • resilience4j-vertx: Vertx Future decorator

  • resilience4j-consumer: Circular Buffer Event consumer

使用示例:

使用 Resilience4j 实现请求调用频率限制的示例代码:

// Create a custom RateLimiter configuration
RateLimiterConfig config = RateLimiterConfig.custom()
    .timeoutDuration(Duration.ofMillis(100))
    .limitRefreshPeriod(Duration.ofSeconds(1))
    .limitForPeriod(1)
    .build();
// Create a RateLimiter
RateLimiter rateLimiter = RateLimiter.of("backendName", config);

// Decorate your call to BackendService.doSomething()
Supplier<String> restrictedSupplier = RateLimiter
    .decorateSupplier(rateLimiter, backendService::doSomething);

// First call is successful
Try<String> firstTry = Try.ofSupplier(restrictedSupplier);
assertThat(firstTry.isSuccess()).isTrue();

// Second call fails, because the call was not permitted
Try<String> secondTry = Try.of(restrictedSupplier);
assertThat(secondTry.isFailure()).isTrue();
assertThat(secondTry.getCause()).isInstanceOf(RequestNotPermitted.class);
的码云指数为
超过 的项目
加载中

评论(4)

君枫
君枫
Hystrix不增加新功能了,它也推荐用这个了
金贞花
金贞花
有空看看
witt-z
witt-z
鉴客
鉴客
这个项目很有用!

Resilience4j v0.13.2 发布,面向 Java 8 和函数式编程的容错库

Resilience4j v0.13.2 发布了,Resilience4j 是一个轻量级的容错组件,其灵感来自于 Hystrix,但主要为 Java 8 和函数式编程所设计。轻量级体现在其只用 Vavr 库(前身是 Javaslang),没有任...

2018/11/20 07:22

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

聊聊resilience4j的Retry

序 本文主要研究一下resilience4j的Retry Retry resilience4j-retry-0.13.0-sources.jar!/io/github/resilience4j/retry/Retry.java /** * A Retry instance is thread-safe can be used to...

2018/07/14 23:19
69
0
聊聊resilience4j的CircuitBreakerStateMachine

序 本文主要研究一下resilience4j的CircuitBreakerStateMachine CircuitBreakerStateMachine resilience4j-circuitbreaker-0.13.0-sources.jar!/io/github/resilience4j/circuitbreaker/int...

2018/07/12 10:35
31
0
聊聊resilience4j的bulkhead

序 本文主要研究一下resilience4j的bulkhead Bulkhead resilience4j-bulkhead-0.13.0-sources.jar!/io/github/resilience4j/bulkhead/Bulkhead.java /** * A Bulkhead instance is thread-s...

2018/07/13 10:49
40
0
resilience4j小试牛刀

序 本文主要研究下resilience4j的基本功能 maven <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-circuitbreaker</artifactId> ......

2018/07/09 22:53
133
0
聊聊resilience4j的CircuitBreakerConfig

序 本文主要研究一下resilience4j的CircuitBreakerConfig CircuitBreakerConfig resilience4j-circuitbreaker-0.13.0-sources.jar!/io/github/resilience4j/circuitbreaker/CircuitBreakerC...

2018/07/10 16:35
54
0
Hystrix停止开发,我们该何去何从?

是的,Hystrix停止开发了。官方的新闻如下: 考虑到之前Netflix宣布Eureka 2.0孵化失败时,被业界过度消费(关于Eureka 2.x,别再人云亦云了!),为了防止再度出现类似现象,笔者编写了这篇...

2018/11/29 11:46
895
0
聊聊resilience4j的fallback

序 本文主要研究一下resilience4j的fallback 使用实例 @Test public void testFallback(){ // Execute the decorated supplier and recover from any exception String result = Try.ofS......

2018/07/15 21:27
35
0
Spring Cloud Netflix项目进入维护模式之我见

这两天看到一则新闻:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode 。 其中说到: Spring Cloud...

2018/12/26 01:10
73
0
Hystrix 停止开发。。。Spring Cloud 何去何从?

栈长得到消息,Hystrix 停止开发了。。。 大家如果有对 Hystrix 不清楚的,请看下这篇文章:分布式服务防雪崩熔断器,Hystrix理论+实战。 来看下 Hystrix 停止开发官宣: https://github.com...

2018/11/30 08:54
1K
0
八月新增开源项目:假装自己是图形界面的 Git 命令行工具

每月新增开源项目。顾名思义,每月更新一期。我们会从社区上个月新收录的开源项目中,挑选出有价值的、有用的、优秀的、或者好玩的开源项目来和大家分享。数量不多,但我们力求推荐的都是精品...

2018/09/18 23:38
6.7K
8

没有更多内容

加载失败,请刷新页面

返回顶部
顶部