sentinel的认识和简单使用

什么是Sentinel

  1. 分布式系统的流量防卫兵:随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。

  2. 特点:

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

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

  5. 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C++ 等多语言的原生实现。

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

  7. 官网文档:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

Sentinel好处

​ 分布式系统面临的问题:复杂的体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败,比如如下的例子中,当我们调用A、E、F、J、K这几个服务的时候如果其中一个服务出现问题会造成什么问题?其实就会出现整体系统效率全部下降,而且严重就会出现服务雪崩的问题!
在这里插入图片描述

服务雪崩:

​ 多个微服务之间调用的时候,假设A调用B和C,B和C又调用其他的微服务,这就是所谓的扇出。如果扇出的某个链路上某个微服务调用的响应时间过程或者不可用,微服务A的调用就用占用越来越多的系统资源,从而引起系统崩溃,这也就是服务雪崩。其实就是服务的高可用遭到了破坏。

​ 对于高流量的应用来说,单一的后端依赖可能会导致服务器上的所有资源都在几秒钟内饱和。同时还有可能造成这些应用程序导致服务之间的延迟增加,备份列队,线程和其他的系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系失败,不能取消整个应用程序或系统,所以通常发生了一个模块的某个实例失败后,这时候这个模块依然还会接受流量,然后这个有问题的模块还调用其他的模块,这样就会发生级联故障,或者叫做雪崩

​ 要解决这种问题的出现我们就需要用到服务降级,而Sentinel就可以保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,提高分布式系统的弹性。

Sentinel的熔断降级通过断路器实现:

​ 断路器:它本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似于熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法出的异常,这样就保证了服务调用方的不会被长时间、不必要的占用,从而避免了故障在分布式系统中蔓延(类似于病毒传染),从而避免了故障在系统中蔓延,乃至崩溃。

好处体现:

​ 对比与其他的产品而言,比如说Hystrix,他不需要我们自己手动搭建监控平台,而且它有一套类似于Nacos的Web界面,可以让我们进行更加细粒度的配置流控、速率、服务熔断、服务降级等

​ 目前主流编程都是 约定>配置>代码,虽然我们的配置都可以写在代码中,但是我们还是要大面积的学习配置和注解的方式,尽量少些代码,这也是Sentinel的理念和初衷。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i0FyQm17-1687792831461)(file://D:\msb\笔记资料\Sentinel基础应用\01-Sentinel介绍\image-20211005004311575.png?msec=1687742208433)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1HE76vqW-1687792831462)(file://D:\msb\笔记资料\Sentinel基础应用\01-Sentinel介绍\image-20211005004335733.png?msec=1687742208445)]

Sentinel下载和安装

​ 下载地址:https://github.com/alibaba/Sentinel/releases

在这里插入图片描述

官方提供的手册:https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html#_spring_cloud_alibaba_sentinel

Sentinel 分为两个部分

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

启动步骤

  • 前提:jdk1.8环境和8080端口不能被占用

  • 启动命令:java -jar sentinel-dashboard-1.8.2.jar

  • 访问地址:localhost:8080

  • 输入默认账号密码:sentinel/sentinel

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到这里为止,我们的Sentinel安装成功。

Sentinel初始化监控

Sentinel初始化工程演示

​ 我们现在通过一个案例来让大家了解Sentinel的初始化演示,现在我们需要做几件事:

  1. 启动Nacos8848成功
  2. 创建新的Module
  3. 启动Sentinel
  4. 启动微服务
  5. 启动微服务后查看Sentinel控制台

搭建Sentinel项目

  1. Sentinel的官方文档网址:https://sentinelguard.io/zh-cn/docs/quick-start.html
  2. 创建项目cloudalibaba-sentinel-service8401
  3. 导入依赖:
<!-- Nacos客户端依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- sentinel依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  1. 配置yaml文件,目的是让当前服务注册进Nacos,然后被Sentinel8080进行监控
server:
  port: 8001
spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        service: msb-order
    sentinel:
      transport:
       # 默认8719端口,键入被占用会自动从8719+1,直到找到未被占用的端口
        port: 8719
         # 配置Sentinel dashboard地址
        dashboard: localhost:8080
      web-context-unify: false
  application:
    name: msb-order
  1. 编写FlowControllerEffectController
@RestController
public class FlowControllerEffectController {


    @GetMapping("/warmup")
    public String threads(){
        try{
            Thread.sleep(200);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        return "测试流控效果===热启动";
    }
}

测试

  1. 当以上的这些配置配置好以后,我们就可以进行测试了,那我们的测试方式就是,首先保证Nacos和Sentinel都是启动状态,然后再来启动项目,按照我们的理解这个时候,就应该在Sentinel的dashboard上能体现出它监控的服务,但是此时并没有,原因是因为Sentinel本身采用的是懒加载机制,所以我们需要首先访问服务对应的接口,Sentinel才能工作。
    在这里插入图片描述
    调用一次被监控的接口
    在这里插入图片描述

再次查看监控平台,
在这里插入图片描述
那么这个时候我们频繁快速的访问twarmup那么我们再来查看实时监控的时候,就会出现波动,体现此时Sentinel正在监控这我们的8001这个服务
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值