Spring Cloud Alibaba Sentinel 介绍、简单使用

    科技2022-08-07  111

    转载声明 : 该文章出处为 扛麻袋的少年

    本文目录:

    写在开头1.Sentinel 是什么?2.安装Sentinel控制台 2.1 安装2.2 Sentinel图形管理界面 3.微服务项目整合Sentinel 3.1 添加pom依赖3.2 application.yml 配置3.3 主启动类添加 @EnableDiscoveryClient 注解3.4 来个业务类3.5 启动项目,查看Sentinel是否成功监控


    写在开头

      接上一篇文章:Nacos 集群搭建和持久化配置。掌握了 Nacos 用于 服务注册和配置中心,了解了 Nacos 集群环境的搭建和数据持久化到 MySQL 的配置。在服务治理(服务熔断、降级、限流)领域,带你来了解全新的 Spring Cloud Alibaba Sentinel。

      本文仅介绍 Sentinel 是什么,有哪些特性,在项目中的简单实用。

      附官网:Sentinel GitHub 官网

      中文介绍文档:Sentinel Wiki中文介绍文档

      Sentinel 使用介绍:Spring Cloud 关于 Sentinel 使用文档

    1.Sentinel 是什么?

      (本段内容摘自:Sentinel Wiki 中文文档,一句话解释Sentinel,就是之前介绍过的:Hystrix 实现服务降级、服务熔断、服务限流,Sentinel 后起之秀,更香)

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

    Sentinel 具有以下特征:

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

    Sentinel 的主要特性: Sentinel 的开源生态: Sentinel 分为两个部分:

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

    Sentinel 下载地址:

      Sentinel Dashboard 下载地址,选好版本后,选择 sentinel-dashboard-1.7.2.jar 进行下载。截止发文最新版本:1.7.2

    2.安装Sentinel控制台

    2.1 安装

      下载 sentinel-dashboard-1.7.2.jar ,环境:JDK 8,端口:8080 不被占用。进入 cmd 控制台,使用 java -jar sentinel-dashboard-1.7.2.jar 方式直接运行。

    2.2 Sentinel图形管理界面

      使用 http://localhost:8080 访问 Sentinel 图形管理界面。登陆账号、密码均为:sentinel

    3.微服务项目整合Sentinel

      使用 Sentinel 最好配好 Nacos 一起使用。

      此处以模块:cloudalibaba-sentinel-service8401 进行整合介绍。此处关于 Nacos 相关的配置就不过多赘述,你可以参考:Spring Cloud Alibaba Nacos 用于服务注册和配置中心,也可以转至文末下载本文代码。

    3.1 添加pom依赖

    <!--引入 sentinel 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!--nacos服务注册依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--sentinel持久化需要的依赖(后续持久化会用到,此处可有可无)--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>

    3.2 application.yml 配置

    server: port: 8401 spring: application: name: cloudalibaba-sentinel-service cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服务注册中心地址 # 添加sentinel相关配置 sentinel: transport: dashboard: localhost:8080 #配置sentinel dashboard地址 port: 8719 #sentinel默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口 #暴露,用于监控等 management: endpoints: web: exposure: include: '*'

    3.3 主启动类添加 @EnableDiscoveryClient 注解

    @EnableDiscoveryClient @SpringBootApplication public class SentinelMain8401 { public static void main(String[] args) { SpringApplication.run(SentinelMain8401.class, args); } }

    3.4 来个业务类

    @RestController public class FlowLimitController { @GetMapping("/testA") public String testA() { return "-----testA"; } @GetMapping("/testB") public String testB(){ return "-----testB"; } }

    3.5 启动项目,查看Sentinel是否成功监控

      此时进入 Sentinel 图形管理界面,并没有看到关于微服务任何信息。这是因为 Sentinel 采用的懒加载机制,只有执行一次方法调用,才能被Sentinel监控到。 然后多次调用 /testA 接口,在实时监控便能够看到接口 调用时间、QPS、响应时间 等内容。 说明:Sentinel 8080 已经在监控微服务 8401,监控会有一丁点的延迟。服务一段时间不调用,实时监控会消失哦 本文为Sentinel入门使用,比较简单,以下提供代码下载。谢谢Thanks♪(・ω・)ノ

    本文代码下载地址:Spring Cloud Alibaba Sentinel 简单使用 (提取码:nfmb)

    下一篇:Spring Cloud Alibaba Sentinel 规则(流控规则、降级规则、热点规则、系统规则)介绍

    Processed: 0.009, SQL: 8