

谈阿里Sentinel流控组件(12.26)
source link: http://blog.sina.com.cn/s/blog_493a84550102z6ee.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 作为阿里巴巴“大中台、小前台”架构中的基础模块,覆盖了阿里的所有核心场景,也因此积累了大量的流量归整场景以及生产实践。
在过去的 10 多年里,阿里巴巴投入了集团大量的精英人力用于提升淘宝、天猫平台服务的稳定性,正是有了多年来上万名阿里技术人才的持续创新和技术沉淀,在一系列秒杀大促中,特别是双11 这样现象级的电商大促中,才打造出了今天大家所看到的可轻松应对双11的平台稳定性体系,包括限流和降级、流量调度、业务开关、容量压测和评估、全链路压测、业务一致性平台等,而Sentinel正是在这种背景下产生的限流降级框架,目前已接入集团几乎所有的核心应用。
对于Sentinel组件可以实现限流,熔断降级,塑性,系统负载保护四个关键功能。
➤ 限流
当我们设计了一个函数,准备上线,这时候这个函数会消耗一些资源,处理上限是1秒服务3000个QPS,但如果实际情况遇到高于3000的QPS该如何解决呢?Sentinel提供了两种流量统计方式,一种是统计并发线程数,另外一种则是统计 QPS,当并发线程数超出某个设定的阀值,新的请求会被立即拒绝,当QPS超出某个设定的阀值,系统可以通过直接拒绝、冷启动、匀速器三种方式来应对,从而起流量控制的作用。
➤ 熔断降级:
接触过Spring Cloud、Service Mesh的同学,都知道熔断降级的概念。服务之间会有相互依赖关系,例如服务A做到了1秒上万个QPS,但这时候服务B并无法满足1秒上万个QPS,那么如何保证服务A在高频调用服务B时,服务B仍能正常工作呢?一种比较常见的情况是,服务A调用服务B时,服务B因无法满足高频调用出现响应时间过长的情况,导致服务A也出现响应过长的情况,进而产生连锁反应影响整个依赖链上的所有应用,这时候就需要熔断和降级的方法。Sentinel通过并发线程数进行限制和响应时间对资源进行降级两种手段来对服务进行熔断或降级。
➤ 塑形
通常我们遇到的流量具有随机性、不规则、不受控的特点,但系统的处理能力往往是有限的,我们需要根据系统的处理能力对流量进行塑形,即规则化,从而根据我们的需要来处理流量。Sentinel通过资源的调用关系、运行指标、控制的效果三个维度来对流量进行控制,开发者可以自行灵活组合,从而达到理想的效果。
1. 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
2. 运行指标,例如 QPS、线程池、系统负载等;
3. 控制的效果,例如直接限流、冷启动、排队等。
➤ 系统负载保护
平时系统运行都没问题,但遇到大促的时候,发现机器的load非常高,这时候对系统的负载保护就显得非常重要,以防止雪崩。Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。需要注意的是,Sentinel在系统负载保护方面的判断机制是根据系统能够处理的请求,和允许进来的请求,来做平衡,而不是根据一个间接的指标(系统load)来做限流。因为我们最终追求的目标是在系统不被拖垮的情况下,提高系统的吞吐率,而不是load一定要到低于某个阀值。
Recommend
-
44
前情提要: 《
-
27
作者简介:盛科网络 王俊杰 1.流控技术概要 1.1.流控技术与RDMA 随着数据中心网络技术和带宽不断发展,流控技术在网络中发挥着越来越重要的作用,但一直...
-
19
前言 微服务成了互联网架构的标配模式,对微服务之间的调用的流量治理和管控就尤为重要。 哪些场景需要流量防控,针对这些场景又有哪些应对措施。 有没有一个通用的措施来降低风险呢...
-
13
本系列上一篇文章:【代码鉴赏】简单优雅的JavaScript代码片段(一):异步控制流控(又称限流,控制调用频率)后端为了保证系统稳定运行,往往会对调用...
-
6
作者:涂鸦 微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。应用高可用服务 AHAS (Application High Availability...
-
5
作者 | 一锤、明济阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施。为了更方便大家使用和扩展,RSS在2022年初开源,欢迎各路开发者共建。RSS的整体架构请参考[1]...
-
6
高性能分布式流控组件 发表于 201...
-
9
Sentinel流控和降级方案 发表于 2020-04-14 ...
-
4
什么!Sentinel流控规则可以这样玩?-51CTO.COM
-
8
sentinel的四种流控规则介绍 今天的内容我们主要围绕四个点进行展开介绍。 流控模式 :关联、链路 流控效果 :Warm Up、排队等待
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK