50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Java 库 Failsafe 2.0 发布,支持组合弹性策略

  • 2019-04-20
  • 本文字数:1217 字

    阅读完需:约 4 分钟

Java库Failsafe 2.0发布,支持组合弹性策略

用于处理失败的零依赖 Java 库Failsafe发布了其 2.0 版本,支持组合弹性策略,提供了一个用于自定义策略服务提供者的可插拔架构。Failsafe 2.0 版本支持的最低 Java 版本为 Java 8。


该库为 Java 应用提供了流畅灵活的 API 用于处理失败。这个功能通过将可执行代码块包在可组合弹性策略中实现。根据说明,2.0 版本针对可组合弹性策略带来了功能提升、行为变更、API 变更和 API 增加。


Failsafe 提供了 3 个主要弹性策略:重试策略、熔断策略和后备策略。


重试策略定义了可执行代码块在何种失败场景下需要重试。API 提供了许多配置选项,例如最大重试次数、重试等待间隔和指数级重试延时,便于开发者调优重试策略。


下面的代码片段展示了一个重试策略,该策略在失败后会重试 3 次,每次间隔 2 秒:


RetryPolicy<Object> retryPolicy = new RetryPolicy<>()        .handle(SocketException.class)        .withDelay(Duration.ofSeconds(2))        .withMaxRetries(3);
Failsafe.with(retryPolicy).run(() -> connect());
复制代码


熔断策略定义了当可执行代码块执行停止阈值。这能够帮助系统快速失败,防止级联失效以及系统过载。断路器在以下三个状态间切换:闭合、打开和半开。


断路器默认状态是闭合,此时包裹的代码块正常执行。当执行触及到预设的阈值时,断路器会进入打开状态。代码块将停止执行,后续的重试都失败并抛出 CircuitBreakerOpenException 异常。一旦开放状态经过指定时间之后,执行环路进入半开状态,此时会允许少量执行用以探测环路是否应该闭合或者打开。


断路器同时提供了指标,用以展示当前状态下执行成功和失败的次数。


以下代码片段展示了一个断路器,它被配置成在 5 次执行失败后打开,在重新尝试闭合前等待 1 分钟,当两次成功执行后闭合:


CircuitBreaker<Object> circuitBreaker = new CircuitBreaker<>()        .handle(SocketException.class)        .withFailureThreshold(5)        .withSuccessThreshold(2)        .withDelay(Duration.ofMinutes(1));
Failsafe.with(circuitBreaker).run(() -> connect());
复制代码


后备策略描述了当发生失败时的备用处理方式。该策略可以用于抑制异常,并提供一个默认值或者抛出自定义异常。


以下代码片段展示了一个后备策略,当发生失败时将会执行另一个方法:


Fallback<Object> fallback = Fallback.of(this::connectToLocal);
复制代码


所有弹性策略都可以通过适当方式组合成新的组合策略。一个典型的组合是使用一个后备策略作为最外层策略,一个断路器作为最内层策略,在二者中间设置一个重试策略。例如:


Failsafe.with(fallbackPolicy, retryPolicy, circuitBreaker);
复制代码


除了这些内置策略,Failsafe 2.0 提供了策略服务提供接口用于插入自定义策略。该库还提供了一些额外的特性,例如可配置执行调度器、事件监听器、异步执行支持和执行追踪。


Failsafe 当前版本是2.0.1,该版本于上个月在 GitHub 上发布。


查看英文原文Failsafe 2.0 Released With Composable Resilience Policies


2019-04-20 08:005899

评论

发布
暂无评论
发现更多内容

事业-最佳实践-个人-做事原则

南山

社区胜于代码,我们在阿帕奇软件基金会亚洲大会聊了聊开源中间件的未来

阿里巴巴云原生

Apache 阿里云 云原生

事业-最佳实践-个人-学会说不

南山

数字货币发行项目开发基本要求及模式创建与海外宣发策略

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 NFT开发 公链开发

Web3 游戏周报(8.11 - 8.17)

Footprint Analytics

链游

虚拟滚动 - 从基本实现到 Angular CDK

PingCode研发中心

大数据 虚拟滚动

这个是我的测试编辑器的内容

网站,小程序,APP开发定制

网速慢影响海外业务?全球应用加速可以解决!

Ogcloud

网络加速 全球应用加速 企业网络加速 网络加速服务

一文讲清 API 接口的概念、设计和实现

Noah

大航杯智造扬中电力AI大赛RANK6思路总结

阿里云天池

数智重庆.全球产业赋能创新大赛总决赛极客奖队伍比赛攻略_球球君

阿里云天池

海外直播对网络的要求有哪些?

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 海外直播网络

Meetup 回顾:存算引擎一体化建设

Databend

2025杭州国际智慧城市展览会

AIOTE智博会

智慧城市展览会 智慧城市展会 智慧城市博览会

华为账号“一键登录”能力让美团用户尽享安全便捷的登录体验

HarmonyOS SDK

HarmonyOS

独家为《白蛇:浮生》提供云渲染服务,腾讯云助力追光动画再现东方美学

ToB行业头条

腾讯云

公链大变局:ETH老态龙钟,SOL势如破竹

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 NFT开发 公链开发

TIANCHI工业 AI- 第 10 名思路分享

阿里云天池

【YashanDB知识库】生成迁移报告失败,"报错未知类型错误异常:"

YashanDB

yashandb 崖山数据库 崖山DB

AI大模型快速生成题库-助力业务人效提升10+倍

京东科技开发者

电商搜索革命:大模型如何重塑购物体验?

京东科技开发者

事业-最佳实践-个人-拥抱变化

南山

必看!时序大模型的发展、玩家与效果对比

Apache IoTDB

阿里巴巴拍立淘API返回值:商品搜索与社交媒体的融合

技术冰糖葫芦

API Explorer API boy API 接口 API 测试

阿里云2024云栖大会,来了!

MasterInTech

AI 实时通话视频生成产品 Tavus:能听说看且有形象;Anthropic 推出 API 长文本缓存功能丨 RTE 开发者日报

声网

Java库Failsafe 2.0发布,支持组合弹性策略_语言 & 开发_Uday Tatiraju_InfoQ精选文章