在经过数月的打磨后,Sentinel 1.8.0 版本正式发布!该版本是本年度最重要的版本之一,包含大量特性改进与 bug 修复,尤其是针对熔断降级特性的完善升级(支持任意统计时长、慢调用比例降级策略、熔断器事件监听);同时该版本进一步扩充了开源生态,提供对 Java EE (JAX-RS, CDI), Quarkus, HTTP client 等体系的原生支持。详细特性列表请参考 Release Notes,欢迎大家使用并提出建议。

下面我们来一起探索一下 Sentinel 1.8.0 的重要特性。

熔断降级改进

一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

现代微服务架构都是分布式的,由非常多的服务组成。不同服务之间相互调用,组成复杂的调用链路。以上的问题在链路调用中会产生放大的效果。复杂链路上的某一环不稳定,就可能会层层级联,最终导致整个链路都不可用。因此我们需要对不稳定的弱依赖服务进行自动熔断,暂时切断不稳定调用,避免局部不稳定因素导致整体的雪崩。

Sentinel 1.8.0 版本对原有的熔断降级模块进行了重构和升级,重新以熔断器(cicuit breaker)的形式进行抽象,并进一步完善了熔断器的能力。新版熔断降级支持任意统计时长,用户可以根据接口的场景灵活配置统计维度为秒级或者分钟级;同时我们也引入了用户需要的半开启探测恢复支持。新版熔断降级还对原有的秒级平均 RT 策略进行了升级,原有 RT 策略对稀疏请求不友好,并且采用平均 RT 可能会被某个特别慢的调用影响。1.8.0 版本将基于响应时长的策略升级为慢调用比例策略,用户指定响应时长超出多少记为慢调用(即稳态 RT 的上界),同时配置慢调用比例阈值,结合场景配置统计时长维度,即可更好地针对慢调用进行熔断。用户可以结合 Sentinel 控制台的实时监控来决定稳态 RT 的阈值。

同时考虑到用户可能需要感知熔断器的状态变化以进行一些日志记录或其它的操作,Sentinel 提供了熔断器的事件监听器扩展,用户可以注册自定义的事件监听器以感知熔断器状态变化。示例:

EventObserverRegistry.getInstance().addStateChangeObserver("logging",

(prevState, newState, rule, snapshotValue) -> {if (newState == State.OPEN) {// 变换至 OPEN state 时会携带触发时的值System.err.println(String.format("%s -> OPEN at %d, snapshotValue=%.2f", prevState.name(),TimeUtil.currentTimeMillis(), snapshotValue));} else {System.err.println(String.format("%s -> %s at %d", prevState.name(), newState.name(),TimeUtil.currentTimeMillis()));}
});

至此,Sentinel 已提供三种熔断策略:慢调用比例、异常比例和异常数。有关熔断降级特性的更多信息请参考 熔断降级文档。

开源生态与云原生

Sentinel 1.8.0 进一步扩充了开源生态。Sentinel 1.8.0 引入了 Java EE 原生支持,提供对 JAX-RS Web 应用的原生支持(sentinel-jax-rs-adapter),以及基于 CDI 的注解埋点支持(sentinel-annotation-cdi-interceptor),对于采用原生 Java EE 架构的服务可以更方便地接入。


Quarkus 作为广受关注的云原生微服务框架,在微服务框架中活跃度排名前列。Sentinel 1.8.0 提供了针对 Quarkus 的适配模块,支持 Quarkus Web 服务无缝集成(基于 JAX-RS 适配),并且通过 CDI 注解埋点支持和 Reactor 适配,可以针对 Quarkus 服务中的任意逻辑进行流控。Quarkus 适配模块支持构建 native image,感兴趣的开发者欢迎参考 demo 进行尝试。

至此,Sentinel 的开源生态得到进一步扩充:

其它重要特性/改进

  • @SentinelResource 注解支持配置类级别统一的 defaultFallback
    修复 Dubbo 2.7.x 适配模块 Entry 泄漏可能导致 FGC 的 bug

修复 Spring Web 适配模块在内部转发请求时可能导致 ErrorEntryFreeException 的 bug
支持通过 properties 配置文件配置 project.name(至此所有启动配置项均可通过文件配置)
新增 Eureka 数据源支持
更多信息请参考 Release Notes。

Start hacking

Sentinel 1.8.0 是社区一起定义的年度版本,近 80% 的特性都是社区开发者贡献的。感谢各位贡献者的付出!同时我们非常欢迎大家持续参与社区贡献,一起来参与未来版本的演进。若您有意愿参与社区贡献,欢迎联系我们加入 Sentinel 贡献小组一起成长(Sentinel 开源讨论钉钉群:30150716)。我们会定期给活跃贡献者寄送小礼品,核心贡献者会提名为 committer,一起主导社区的演进。同时,也欢迎大家通过 AHAS Sentinel 控制台 来快速体验 Sentinel 的能力。Now let's start hacking!

原文链接
本文为阿里云原创内容,未经允许不得转载。

Sentinel 1.8.0 年度版本发布,熔断降级重构升级!相关推荐

  1. gateway sentinel 熔断 不起作用_Sentinel 1.8.0 年度版本发布,熔断降级重构升级

    简介:在经过数月的打磨后,Sentinel 1.8.0 版本正式发布!该版本是本年度最重要的版本之一,包含大量特性改进与 bug 修复,尤其是针对熔断降级特性的完善升级(支持任意统计时长.慢调用比例降 ...

  2. Fluid 0.5 版本发布:开启数据集缓存在线弹性扩缩容之路

    作者 | 顾荣  南京大学PASALab, Fluid项目co-founder 来源 | 阿里巴巴云原生公众号 导读:为了解决大数据.AI 等数据密集型应用在云原生场景下,面临的异构数据源访问复杂.存 ...

  3. ZLMS教学管理平台系统V1.2.0最新版本发布,支持纯Web视频直播点播,还带运营在线支付功能!完全免费提供!...

    ZLMS教学管理平台系统V1.2.0最新版本发布,支持纯Web视频直播,点播!还带在线支付功能! ZLMS 开发团队在综合参考了各方面的合理建议之后,经过两个多月的紧张开发及测试,终于发布V1.2.0 ...

  4. JeeWx捷微3.0多触点版本发布,支持微信公众号,微信企业号,支付窗——喜迎双“旦”

    喜迎双旦,JeeWx捷微3.0多触点版本发布^_^ JeeWx捷微V3.0--多触点版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.0.0版本是一个颠覆和跨时代版本,官方团队历 ...

  5. P3-weixin-2.0.1 版本发布,JAVA微信插件框架

    P3-weixin-2.0.1版本发布(JAVA微信插件框架) P3-Weixin是轻量级Java插件开发框架,采用主流JAVA技术,集成强大代码生成器,增删改查一键生成,封装统一后台管理系统,不仅适 ...

  6. jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)

    JeeWx-api 1.0.5 版本发布,微信SDK接口封装 1.jeewx-api为何诞生 现在微信越来越火,基于微信的公众号和服务号越来越丰富,虽然微信帮助文档已经提供了相关的接口,但是接口比较多 ...

  7. 字幕助手 FastTitle 0.0.3 版本发布

    FastTitle 也叫字幕助手,当前发布版本是0.0.3,是一款根据视频语音自动视频生成字幕的辅助软件. 和其他同类型软件比较,具有不用注册登陆,本地操作不用上传,完全免费,流程人性化,易于编辑等优 ...

  8. Rasa课程、Rasa培训、Rasa实战Rasa 3.1.0最新版本发布 2022-03-25

    Rasa课程.Rasa培训.Rasa实战Rasa 3.1.0最新版本发布 2022-03-25 Rasa 3.1.0 新版本升级内容 10203:为库日志添加配置选项(通过 env 变量). 1047 ...

  9. Unc0ver-v5.0.1版本发布,报错原因以及广告问题

    unc0ver-v5.0.1版本发布 "通过Cydia和调整注入对iOS 11.0-13.5上的所有设备提供全面支持 启用对越狱应用程序的不受限制的存储访问,以实现沙盒向后兼容性,同时通过为 ...

最新文章

  1. AngularJs学习笔记--expression
  2. JavaScript 验证API
  3. Hadoop学习:Map/Reduce初探与小Demo实现
  4. 【Boost】boost库asio详解2——strand与io_service区别
  5. springboot-添加拦截器
  6. **Java有哪些悲观锁的实现_「Java并发编程」何谓悲观锁与乐观锁,Java编程你会吗...
  7. 『SQL Server 2000 Reporting Services学习笔记』(1)报表管理器的使用 与 通过角色分配配置安全性...
  8. python颜色识别原理_用opencv-python实现颜色检测
  9. 基于Linux的小项目-在线词典
  10. linux触摸屏两指缩放_Linux内核触摸屏驱动--多点触摸 【转】
  11. 《说服力》读后总结摘录
  12. 智能眼镜的两种显示方式
  13. OpenCL设备存储形式
  14. 旋转变换,变换后改变图片大小
  15. MYSQL 从PS说起,但不止于PS , IS 中innodb buffer 分析(5) -- 附加招聘DEVOPS DBA
  16. Apache Dubbo(概念篇)
  17. Android Spans介绍(转)
  18. 详解冬奥冠军背后的AI黑科技
  19. au3 ui html,AutoIt UI及常用操作
  20. Linux 查看usb设备信息

热门文章

  1. 【LeetCode笔记】160. 相交链表(Java、链表)
  2. 网站漏洞扫描工具_如何实现免费网站漏洞扫描?推荐一款神器给你
  3. java重定向代码_Java程序员经典面试题集大全 (三十四)
  4. 计算机网络中ping命令的使用方法,ping命令的基础使用技巧
  5. 编译php时的configure,PHP编译configure时常见错误
  6. pdo 错误 php,多语句查询中的PHP PDO错误
  7. php rewinddir(),PHP rewinddir() 函数 ——jQuery中文网
  8. java单链表节点翻转_Java数据结构01-链表基础(讲解+代码+面试题)
  9. wlan端口服务器无响应,wlan项目遇到的问题,总结
  10. linux定时结束java进程_使用zt-exec库定时清理linux休眠进程