开发者社区> 阿里云云原生小助手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里开源分布式限流框架 -Sentinel Go 0.3.0 发布,支持熔断降级能力

简介: 近期,Sentinel Go 0.3.0 正式发布,带来了熔断降级特性支持,可以针对 Go 服务中的不稳定调用进行自动熔断,避免出现级联错误/雪崩,是保障服务高可用重要的一环。
+关注继续查看

头图.png

作者 | 宿何  阿里巴巴高级开发工程师

Sentinel 是阿里巴巴开源的,面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统自适应保护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 承接了阿里巴巴近 10 年的 双11 大促流量的核心场景,例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服务等,是保障微服务高可用的利器,原生支持 Java/Go/C++ 等多种语言,并且提供 Istio/Envoy 全局流控支持来为 Service Mesh 提供高可用防护的能力。

近期,Sentinel Go 0.3.0 正式发布,带来了熔断降级特性支持,可以针对 Go 服务中的不稳定调用进行自动熔断,避免出现级联错误/雪崩,是保障服务高可用重要的一环。结合 Sentinel Go 已经提供的 gRPC、Gin、Dubbo 等框架组件的适配模块,开发者可以快速在 Web、RPC 调用层面配置熔断降级规则来保护自身服务的稳定性。同时 0.3.0 版本也带来了 etcd 动态数据源模块,开发者可以方便地通过 etcd 来动态调整熔断降级策略。

Sentinel Go 项目地址:https://github.com/alibaba/sentinel-golang

为什么需要熔断降级

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

1.png

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

Sentinel Go 熔断降级特性基于熔断器模式的思想,在服务出现不稳定因素(如响应时间变长,错误率上升)的时候暂时切断服务的调用,等待一段时间再进行尝试。一方面防止给不稳定服务“雪上加霜”,另一方面保护服务的调用方不被拖垮。Sentinel 支持两种熔断策略:基于响应时间(慢调用比例)和基于错误(错误比例/错误数),可以有效地针对各种不稳定的场景进行防护。

2.png

下面我们介绍一下 Sentinel 流控降级的一些最佳实践。

流控降级最佳实践

在服务提供方(Service Provider)的场景下,我们需要保护服务提供方不被流量洪峰打垮。我们通常根据服务提供方的服务能力进行流量控制,或针对特定的服务调用方进行限制。为了保护服务提供方不被激增的流量拖垮影响稳定性,我们可以结合前期的容量评估,通过 Sentinel 配置 QPS 模式的流控规则,当每秒的请求量超过设定的阈值时,会自动拒绝多余的请求。

在服务调用端(Service Consumer)的场景下,我们需要保护服务调用方不被不稳定的依赖服务拖垮。借助 Sentinel 的信号量隔离策略(并发数流控规则),限制某个服务调用的并发量,防止大量慢调用挤占正常请求的资源;同时,借助熔断降级规则,当异常比率或业务慢调用比例超过某个阈值后将调用自动熔断,直到一段时间过后再尝试恢复。熔断期间我们可以提供默认的处理逻辑(fallback),熔断期间的调用都会返回 fallback 的结果,而不会再去尝试本已非常不稳定的服务。需要注意的是,即使服务调用方引入了熔断降级机制,我们还是需要在 HTTP 或 RPC 客户端配置请求超时时间,来做一个兜底的保护。

同时 Sentinel 还提供全局维度的系统自适应保护能力,结合系统的 Load、CPU 使用率以及服务的入口 QPS、响应时间和并发量等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。系统规则可以作为整个服务的一个兜底防护策略,保障服务不挂。

3.png

Let's start hacking!

Sentinel Go 版本正在快速演进中,我们非常欢迎感兴趣的开发者参与贡献,一起来主导未来版本的演进。Sentinel Go 版本的演进离不开社区的贡献。若您有意愿参与贡献,欢迎联系我们加入 Sentinel 贡献小组一起成长(Sentinel 开源讨论钉钉群:30150716)。

同时,一年一度的阿里巴巴编程之夏(Alibaba Summer of Code)开始啦!如果你是在校的学生,有兴趣参与 Sentinel 项目的开发和演进,不要错过此次机会,欢迎 pick 感兴趣的 issue 提交提案:https://github.com/alibaba/Sentinel/issues/1497

Now let's start hacking!

第 3 期云原生网络研讨会邀您参加

今晚 19:00 - 20:00,阿里云技术专家将为大家带来《如何为云原生应用带来稳定高效的部署能力?》,届时将会介绍阿里经济体大规模应用上云过程中遇到的核心部署问题、采取的对应解决方案,以及这些方案沉淀为通用化能力输出开源后,如何帮助阿里云上的用户提升应用部署发布的效率与稳定性。

听众可获取以下收益:

• 了解阿里经济体大规模应用上云的实践经验,如何解决原生 K8s workload 不满足场景需求的问题;
• 作为外部用户,如何体验和使用上阿里经济体上云所沉淀下来的应用部署发布能力;
• 演示阿里巴巴针对大规模 K8s 集群如何做到 DaemonSet 高可用的灰度升级(即将开源!)

点击链接即可预约直播:https://yq.aliyun.com/live/2898

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Sentinel 服务降级之错误次数 | 学习笔记
快速学习 Sentinel 服务降级之错误次数
0 0
Sentinel 服务降级之错误比例 } 学习笔记
快速学习 Sentinel 服务降级之错误比例
0 0
Sentinel 实现服务降级效果 | 学习笔记
快速学习 Sentinel 实现服务降级效果
0 0
【微服务~Sentinel】Sentinel降级、限流、熔断
【微服务~Sentinel】Sentinel降级、限流、熔断
0 0
SpringCloud Alibaba——Sentinel服务熔断与限流(二、降级规则)
SpringCloud Alibaba——Sentinel服务熔断与限流(二、降级规则)
0 0
SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)
SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)
0 0
SpringCloud微服务实战——搭建企业级开发框架(十五):集成Sentinel高可用流量管理框架【熔断降级】
Sentinel除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断。
0 0
Sentinel快速入门:这可能是目前最好的分布式系统限流降级框架
在分布式系统中,许多服务之间通过远程调用实现信息交互,调用时难免会出现调用失败的情况,Sentinel能保证在一个服务出现问题的情况下,不会导致整体服务失败,防止服务雪崩,提高分布式系统的可用性。
0 0
阿里 双11 同款流控降级组件 Sentinel Go 正式 GA,助力云原生服务稳稳稳
微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。
0 0
Sentinel 1.8.0 年度版本发布,熔断降级重构升级
在经过数月的打磨后,Sentinel 1.8.0 版本正式发布!该版本是本年度最重要的版本之一,包含大量特性改进与 bug 修复,尤其是针对熔断降级特性的完善升级(支持任意统计时长、慢调用比例降级策略、熔断器事件监听)。
0 0
+关注
文章
问答
来源圈子
更多
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
Sentinel-Sentinel :保障微服务高可用的利器
立即下载
流量太大容易挂?接入Sentinel让N个9成为可能!
立即下载
流量太大容易挂?接入 Sentinel 让 N 个 9 成为可能!
立即下载