• Spring Cloud Alibaba(9)---Sentinel概述


    Sentinel概述

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统自适应保护、热点防护等多个维度来帮助业务保障微服务的稳定性。

    官方文档 分布式系统的流量防卫兵

    Sentinel系列笔记 Awesome Sentinel

    一、Sentinel介绍

    1、Sentinel 是什么?

    Sentinel译为“哨兵”,顾名思义,面对您后台的大量服务/微服务,前置一个哨兵,但面对大量请求时,让后台服务有序被调用,但某些服务的不可用时,采用服务熔断降级等措施,让系统仍能平稳运行,不至于造成系统雪崩。

    典型应用场景

    限流: MQ中消息在某些时间段(比如行情交易的高峰期,秒杀期等)消息并发量非常大时,通过Sentinel起到“削峰填谷”的作用;

    熔断: 某个业务服务非常复杂,需要调用大量微服务,其中某服务不可用时,不影响整体业务运行,如提交某个订单,需要调用诸如验证库存,验证优惠金额,支付,验证手机号等,其中验证手机号服务不可用时,采用降级的方式让其通过,

    不影响整个提交订单的业务;

    2、Sentinel特征

    Sentinel 具有以下特征

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

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

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

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

    Sentinel 的主要特性

    Sentinel 分为两个部分

    核心库:(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

    控制台:(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。


    二、Sentinel基本概念

    这里先介绍一下Sentinel的一些基本概念,方便读者理解,引用内容都是主要来自官方文档

    资源

    资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。
    只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。
    

    规则

    围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。
    

    举个简单的例子,我们提供的一个接口 127.0.0.1:8808/getUser 我们可以把它设置成一个资源。我们为这个接口设置每秒qps不能大于5,这个就是一个流量控制规则。


    三、Sentinel 重要功能

    1、流量控制

    思想保证自己不被上游服务压垮

    任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel可以根据需要把随机的请求调整成合适的形状。

    2、熔断降级

    思想保证自己不被下游服务拖垮

    当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。

    3、系统负载保护

    思想:保证外界环境良好(CPU、内存)

    当系统负载较高的时候,如果还持续让请求进入可能会导致系统崩溃,无法响应。在集群环境下,会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候,Sentinel 提供了对应的保护机制,

    让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。


    四、Sentinel 对比 Hystrix

    从图中可以看出Sentinel相比于Hystrix功能更强大。

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

    而 Sentinel 的侧重更多 包括:多样化的流量控制、熔断降级、系统负载保护、实时监控和控制台。而对于熔断本身而言 Hystrix只支持基于失败比例熔断,而Sentinel除了支持基于失败比例熔断,还支持超时熔断。

    参考

    1、分布式系统的流量防卫兵

    2、Sentinel的概念和功能

    3、Sentinel+学习笔记

    4、Sentinel 对比 Hystrix



    少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(9)
    
  • 相关阅读:
    mongoose中的versionKey
    Mongodb查询引用
    Mogondb笔记
    jquery.roundabout.js图片叠加3D旋转
    win7下安装curl
    express4.x中路由中间件和挂载路径的关系
    express 设置node_env的环境变量
    ie浏览器不兼容css媒体查询的解决办法
    利用python求解物理学中的双弹簧质能系统详解
    详解用python实现简单的遗传算法
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/14718138.html
Copyright © 2020-2023  润新知