sentinel是什么

  • 随着微服务的流行,服务和服务之间的稳定性变得越来越重要,sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性

sentinel具有以下特性:

1.丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等
2.完备的实时监控:sentinel同时提供实时的监控功能,可以在控制台中看到单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况
3.广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel
4.完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等

sentinel分为两个部分:

  • 核心库(java客户端):不依赖任何框架,能够运行于所有java运行时环境,同时对dubbo、springCloud等框架也有较好的支持
  • 控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器

熔断降级

  • 由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积
  • 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果
  • 通过并发线程数进行限制

Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响,当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求

  • 通过响应时间对资源进行降级

Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复

流量控制-QPS 或并发线程数

  • 其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性

防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应。在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用。

针对这个情况,Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求

  • 一条限流规则主要由下面几个因素组成,我们可以组合这些元素来实现不同的限流效果

resource:资源名,即限流规则的作用对象
count: 限流阈值
grade: 限流阈值类型(QPS 或并发线程数),流量控制主要有两种统计类型,一种是统计并发线程数,另外一种则是统计 QPS
limitApp: 流控针对的调用来源,若为 default 则不区分调用来源
strategy: 调用关系限流策略
controlBehavior: 流量控制效果(直接拒绝、Warm Up、匀速排队),注意:若使用除了直接拒绝之外的流量控制效果,则调用关系限流策略(strategy)会被忽略

  • 并发线程控制

并发数控制用于保护业务线程池不被慢调用耗尽。例如,当应用所依赖的下游应用由于某种原因导致服务不稳定、响应延迟增加,对于调用者来说,意味着吞吐量下降和更多的线程数占用,极端情况下甚至导致线程池耗尽。为应对太多线程占用的情况,业内有使用隔离的方案,比如通过不同业务逻辑使用不同线程池来隔离业务自身之间的资源争抢(线程池隔离)。这种隔离方案虽然隔离性比较好,但是代价就是线程数目太多,线程上下文切换的 overhead 比较大,特别是对低延时的调用有比较大的影响。Sentinel 并发控制不负责创建和管理线程池,而是简单统计当前请求上下文的线程数目(正在执行的调用数目),如果超出阈值,新的请求会被立即拒绝,效果类似于信号量隔离

  • QPS流量限制

当 QPS 超过某个阈值的时候,则采取措施进行流量控制。流量控制的效果包括以下几种:直接拒绝、Warm Up、匀速排队。对应 FlowRule 中的 controlBehavior 字段

直接拒绝:默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException

Warm up:当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。Warm Up(冷启动,预热)模式就是为了实现这个目的的

匀速排队:严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法,这种方式主要用于处理间隔性突发的流量,例如消息队列。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求

流量控制-基于调用关系的流量控制

流控规则中的 limitApp 字段用于根据调用来源进行流量控制。该字段的值有以下三种选项,分别对应不同的场景

default:表示不区分调用者,来自任何调用者的请求都将进行限流统计。如果这个资源名的调用总和超过了这条规则定义的阈值,则触发限流
some_origin_name:表示针对特定的调用者,只有来自这个调用者的请求才会进行流量控制
other:表示针对除 {some_origin_name} 以外的其余调用方的流量进行流量控制
同一个资源名可以配置多条规则,规则的生效顺序为:{some_origin_name} > other > default

阿里巴巴sentinel限流相关推荐

  1. 阿里巴巴开源限流系统 Sentinel 全解析

    今年下半年阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系列高大山的名词诸如 限流.熔断降级.流量塑形.系统负载保护等,还有漂亮的形容词诸如 轻巧.专业.实时等 ...

  2. 三、Sentinel限流熔断

    Sentinel限流熔断 文章目录 Sentinel限流熔断 一.Sentinel简介 1. 背景分析 2. Sentinel概述 3. 安装Sentinel服务 4. 访问Sentinal服务 二. ...

  3. 构建SpringCloud 项目初始环境(四)—Sentinel限流熔断应用实践

    一.Sentinel简介 1.背景分析 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时 ...

  4. Sentinel限流熔断应用实践

    文章目录 一.Sentinel 1.Sentinel简介 背景分析 Sentinel概述 安装Sentinel服务 idea配置sentinel启动: 访问Sentinal服务 2.Sentinel限 ...

  5. Java学习四阶段-09 Sentinel限流熔断

    Sentinel简介 背景分析 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时候还要帮 ...

  6. 九.Sentinel限流熔断应用实践

    Sentinel简介 背景分析 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时候还要帮 ...

  7. Alibaba Sentinel限流功能

    以下文章来源方志朋的博客,回复"666"获面试宝典 前言 上周经历了合作方未按照约定在客户端进行缓存,以高QPS调用我这边某个接口的问题,当时带来的影响是接口RT变高,当时如果QP ...

  8. Sentinel限流熔断

    Sentinel作用:当我们 在系统负载过高时,可以通过Sentinel进行限流.降级.熔断三种措施来保护系统其提供了一个轻量级的控制台,提供机器发现,单机资源实时监控预计规则管理等功能. Senti ...

  9. sentinel限流入门

    为什么限流 前端时间遇到的一次大型故障:订单服务应查询量巨大拖垮服务,导致公司核心系统系统瘫痪.那么如何避免此类事情再次发生,公司内部做了大量的服务下线或者尽可能减少服务调用的工作:除此之外,服务提供 ...

  10. Sentinel限流规则使用总结

    文章目录 一.Sentinel限流/熔断规则 二.网关限流原理 三.自问自答QA 四.总结 一.Sentinel限流/熔断规则 目前Sentinel支持以下五种限流/熔断规则:基于资源限流(FlowR ...

最新文章

  1. 完全理解Python迭代对象、迭代器、生成器
  2. 剑指offer面试题6:重建二叉树
  3. Windows 8的圣战
  4. Oracle 数据类型及存储方式
  5. oracle数据库相关知识,Oracle数据库相关知识点复习
  6. Spring源码:ApplicationContextInitializer
  7. 区块链开发人员短缺?各大公司献上连环招
  8. java queue通信_Java -- 使用阻塞队列(BlockingQueue)控制线程通信
  9. Android 自定义UI--电池
  10. window添加右键菜单
  11. 前端全栈必会node框架koa。。。
  12. es 1.7 ik 配置
  13. Excel内容自动翻译
  14. IP is locked 的解决办法 Vivado
  15. 假货泛滥是淘宝的毒瘤
  16. Java 数据结构-循序表
  17. 找不到anaconda prompt
  18. supervisor 的 web 管理工具 cesi
  19. 《寒江独钓windows内核安全编程》学习笔记之一
  20. 运维工程师是桥的护栏_运维工程师职务说明书

热门文章

  1. ​模拟人生3 Mac版自由性超高的模拟游戏
  2. Python实现网页自动截图
  3. 车市冷车道 这6款紧凑车苦坐板凳寻伯乐(一)
  4. 工人物语5战役攻略_工人物语5_工人物语5专区_工人物语5下载_逗游网
  5. 2020 东京奥运会直播/回放观看途径
  6. ecs云服务器操作系统选择
  7. PVID和VID的理解
  8. .博弈论之Best Response
  9. 万字综述自动驾驶数据闭环
  10. OA协同办公系统未来的趋势