Resilience4j 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Resilience4j 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: 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);
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

Resilience4j 的相关博客

Resilience4j 熔断器

主要讲解 resilience4j-spring-boot2: 1、依赖导入 dependencies { compile "io.github.resilience4j:resilience4j-spring-b...

resilience4j小试牛刀

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

聊聊resilience4j的CircuitBreaker

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

聊聊resilience4j的fallback

序 本文主要研究一下resilience4j的fallback 使用实例 @Test public void testFallback(){ // Execute the decorated supplie...

聊聊resilience4j的Retry

序 本文主要研究一下resilience4j的Retry Retry resilience4j-retry-0.13.0-sources.jar!/io/github/resilience4j/retry/Ret...

聊聊resilience4j的CircuitBreakerStateMachine

序 本文主要研究一下resilience4j的CircuitBreakerStateMachine CircuitBreakerStateMachine resilience4j-circuitbreaker-0...

聊聊resilience4j的bulkhead

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

聊聊resilience4j的CircuitBreakerConfig

序 本文主要研究一下resilience4j的CircuitBreakerConfig CircuitBreakerConfig resilience4j-circuitbreaker-0.13.0-source...

图解resilience4j容错机制

Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计。轻量级,因为库只...

图解resilience4j容错机制

Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计。轻量级,因为库只...

Resilience4j 的相关问答

还没有任何问答,马上提问

评论 (4)

加载中
Hystrix不增加新功能了,它也推荐用这个了
2018/11/29 15:20
回复
举报
有空看看
2018/09/07 20:03
回复
举报
i6u
打分: 力荐
2018/09/06 10:26
回复
举报
打分: 力荐
这个项目很有用!
2018/08/22 07:49
回复
举报
更多评论
4 评论
84 收藏
分享
返回顶部
顶部