【转】Sentinel 快速入门

摘要:
Sentinel也因此积累了大量的流量归整场景以及生产实践。2018年,Sentinel开源,并持续演进。Sentinel适配目前多种的主流框架,包括SpringCloud,Dubbo等。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel通过并发线程数进行限制和响应时间对资源进行降级两种手段来对服务进行熔断或降级。支持实时监控Sentinel同时提供实时的监控功能。

标签:降级服务入门Spring流量熔断Sentinel快速

提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix。

不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项目将处于维护模式。官方表示 1.5.18 版本的 Hystrix 已经足够稳定,可以满足 Netflix 现有应用的需求,所以接下来其会把焦点转向对于自适应的实现,更多关注对应用程序的实时性能做出响应。对于新应用的熔断需求,将采用其它项目实现,Netflix 推荐了 Resilience4j。

作为 Spring Cloud Netflix 重要套件,Hystrix已经成为保障微服务稳定性的首选应用。其实除了 Netflix 和 Resilience4j,限流降级还有一个新的选择,就是阿里巴巴的Sentinel组件。

Sentinel官方文档

一、阿里开源 Sentinel 简介

2018年8月,阿里巴巴宣布将 Sentinel 进行开源,同时推出了结合Dubbo的适配器,捐赠给了Apache Dubbo社区。
在这里插入图片描述
1.Sentinel 的历史
2012 年,Sentinel 诞生,主要功能为入口流量控制。
2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。
2018 年,Sentinel 开源,并持续演进。

2.Sentinel对主流框架的适配
Sentinel 分为两个部分:

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

Sentinel适配目前多种的主流框架,包括Spring Cloud,Dubbo等。Sentinel的开源丰富了阿里巴巴微服务开源体系,对稳定性组件提供了更多的解决方案。

二、Sentinal 解决什么问题

在大规模微服务架构的场景下,避免服务出现雪崩,要减少停机时间,要尽可能的提高服务可用性。限流和降级是一个非常重要的手段,具体实施方法可以归纳为八字箴言,分别是限流,降级,熔断和隔离。
Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

限流
限流顾名思义,提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。
Sentinel提供了两种流量统计方式,一种是统计并发线程数,另外一种则是统计 QPS,当并发线程数超出某个设定的阀值,新的请求会被立即拒绝,当QPS超出某个设定的阀值,系统可以通过直接拒绝、冷启动、匀速器三种方式来应对,从而起流量控制的作用。

熔断降级
如果某个目标服务调用慢或者有大量超时,此时熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。熔断一般需要设置不同的恢复策略,如果目标服务情况好转则恢复调用。
服务之间会有相互依赖关系,例如服务A做到了1秒上万个QPS,但这时候服务B并无法满足1秒上万个QPS,那么如何保证服务A在高频调用服务B时,服务B仍能正常工作呢?
一种比较常见的情况是,服务A调用服务B时,服务B因无法满足高频调用出现响应时间过长的情况,导致服务A也出现响应过长的情况,进而产生连锁反应影响整个依赖链上的所有应用,这时候就需要熔断和降级的方法。Sentinel通过并发线程数进行限制和响应时间对资源进行降级两种手段来对服务进行熔断或降级。

塑形
通常我们遇到的流量具有随机性、不规则、不受控的特点,但系统的处理能力往往是有限的,我们需要根据系统的处理能力对流量进行塑形,即规则化,从而根据我们的需要来处理流量。
下面这张图片对流量整形做了一个很好的演示:

在这里插入图片描述
Sentinel通过资源的调用关系、运行指标、控制的效果三个维度来对流量进行控制,使用中可以自行灵活组合。

系统负载保护
微服务非常容易出现雪崩效应,需要避免服务宕机这种最危险的情况发生。

防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应。
Sentinel 同时提供系统维度的自适应保护能力,在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。

三、Sentinel 主要特性

在这里插入图片描述

应用场景
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

支持实时监控
Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

适配多种开源组件
Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

支持SPI ,扩展简单
Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

四、Sentinel 开源生态

在这里插入图片描述
Sentinel支持当前的主流微服务开发套件,特别对Dubbo和Spring Cloud 做了比较好的支持,并且作为 Spring Cloud Alibaba套件的重要实现。

五、Sentinel对比Hystrix

Hystrix 的关注点在于以 隔离 和 熔断 为主的容错机制,超时或被熔断的调用将会快速失败,并可以提供 fallback 机制。

而 Sentinel 的侧重点在于:

  • 多样化的流量控制
  • 熔断降级
  • 系统负载保护
  • 实时监控和控制台
    一图胜前言,对 Sentinel和Hystrix的特性做一个表格来对比。

在这里插入图片描述

免责声明:文章转载自《【转】Sentinel 快速入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《深入浅出WPF》学习笔记二数据绑定(Binding)、依赖属性和附加属性codeblocks---常用快捷键,折叠所有函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

网关的超时层级

网关的超时层级 zuul zuul: max: host: connections: 500 host: socket-timeout-millis: 60000 connect-timeout-millis: 60000 ribbon ribbon: ReadTimeout: 10000 Connect...

深入剖析全链路灰度技术内幕

作者:扬少 当服务有新版本要发布上线时,通过引流一小部分流量到新版本,可以及时发现程序问题,有效阻止大面积故障的发生。业界上已经有比较成熟的服务发布策略,比如蓝绿发布、A/B 测试以及金丝雀发布,这些发布策略主要专注于如何对单个服务进行发布。在微服务体系架构中,服务之间的依赖关系错综复杂,有时某个功能发版依赖多个服务同时升级上线。我们希望可以对这些服务的新...

dubbo心跳机制 (3)

此文已由作者赵计刚授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 二、consumer端心跳机制 //创建ExchangeClient,对第一次服务发现providers路径下的相关url建立长连接 -->getClients(URLurl) -->getSharedClient(URLurl) -->Ex...

dubbo-常用配置

一、启动时检查 官网说明: Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"。 可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。 另外,如果你的 Spring 容器是懒加载的,或...

启动dubbo消费端过程提示No provider available for the service的问题定位与解决

文/朱季谦 某次在启动dubbo消费端时,发现无法从zookeeper注册中心获取到所依赖的消费者API,启动日志一直出现这样的异常提示 Failed to check the status of the service com.fte.zhu.api.testService. No provider available for the service c...

容灾切换必备——全局流量管理介绍

如今人们对互联网服务的依赖越来越重,提供低延时高可用的服务成为越来越多互联网服务厂商的迫切需求。您是否也遇到过以下问题:1、需要降低网络耗时,却不知道怎么实现用户服务的就近访问?2、需要对服务进行灰度验证,却不知道如何控制各个节点的流量比重,不知道如何资源分配?3、知道保障服务的可用性非常重要,却在遇到故障时,不知道如何快速将流量引流到其他可用节点?您需要...