首页 > 其他分享 >七、Spring Cloud Alibaba Sentinel简介

七、Spring Cloud Alibaba Sentinel简介

时间:2023-06-20 22:14:52浏览次数:39  
标签:index Spring sentinel Dashboard 规则 Sentinel Cloud dashboard

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

一、特性

丰富的场景:Sentinel支持阿里巴巴双11购物节的关键场景超过10年,如秒杀(即控制突然爆发的流量,使其在系统容量的可接受范围内)、消息负载转移、不可靠的下游应用断路。

全面的实时监控:Sentinel提供实时监控功能。您可以以秒为单位查看服务器的监控数据,甚至可以查看节点少于500个的集群的总体运行时状态。

广泛的开源生态系统:Sentinel提供开箱即用的模块,可以轻松地与其他开源框架/库集成,如Spring Cloud、Dubbo和gRPC。要使用Sentinel,您只需要引入相关的依赖项并进行一些简单的配置。

完善的SPI扩展:Sentinel提供易于使用的完善的SPI扩展接口。您可以使用SPI扩展快速定制逻辑,例如,您可以定义自己的规则管理,或者适应特定的数据源。

二、使用Sentinel Dashboard

Sentinel仪表板是一个轻量级控制台,提供机器发现、单服务器资源监控、集群资源数据概述以及规则管理等功能。需要下载Sentinel Dashboard jar包。下载地址是:https://github.com/alibaba/Sentinel/releases。下载完成后,用以下命令启动:

java -Dserver.port=9000 -Dcsp.sentinel.dashboard.server=localhost:9000 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.4.jar 

这里选择的端口是9000。sentinel-dashboard版本是1.8.4。

 

启动成功后,访问http://localhost:9000/,默认登陆的用户名和密码是sentinel/sentinel
 

 

三、资源与规则

的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码。使用 Sentinel 来进行资源保护,主要分为几个步骤:

  1. 定义资源
  2. 定义规则
  3. 检验规则是否生效

先把可能需要保护的资源定义好,之后再配置规则。也可以理解为,只要有了资源,我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源。

 

定义资源有很多方式,可以参考 https://sentinelguard.io/zh-cn/docs/basic-api-resource-rule.html 。最方便可能是使用@SentinelResource注解,通过 @SentinelResource 注解定义资源并配置 blockHandler 和 fallback 函数来进行限流之后的处理。注意 blockHandler 函数会在原方法被限流/降级/系统保护的时候调用,而 fallback 函数会针对所有类型的异常。

规则的种类

Sentinel 的所有规则都可以在内存态中动态地查询及修改,修改之后立即生效。同时 Sentinel 也提供相关 API,供您来定制自己的规则策略。

Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。

四、简单使用

要在Spring Cloud Alibaba中使用Sentinel,只需要加入依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

这里用Consumer模块做演示。启动nacos和Sentinel Dashboard并加入依赖后在application.properties配置:

spring.cloud.sentinel.transport.port=8719
spring.cloud.sentinel.transport.dashboard=localhost:9000

spring.cloud.sentinel.transport.dashboard配置Sentinel Dashboard的ip和端口,spring.cloud.setinel.transport.port中指定的端口号将在应用程序的相应服务器上启动HTTP服务器,该服务器将与sentinel仪表板交互。例如,如果在Sentinel仪表板中添加了流控规则,则规则数据将被推送到HTTP服务器并由其接收,然后HTTP服务器将规则注册到Sentinel。

 

在HelloConsumer增加:

@RequestMapping("/index")
@SentinelResource("HelloConsumer-index")
public String index() {
    return "index";
}

指定资源名是HelloConsumer-index。启动后访问Sentinel Dashboard,如果看不到Consumer,可以访问http://localhost:7001/consumer/index,重启Sentinel Dashboard或Consumer:
 

 
看到簇点链路什么都没有,在浏览器访问http://localhost:7001/consumer/index,再看Sentinel Dashboard:
 

 

现在看到记录了。

 

设置HelloConsumer-index的流控规则:
 

 

 

设置QPS为10。用jmeter访问,设置QPS为20,访问后:
 

 

看到异常率是45%。流控已生效。

标签:index,Spring,sentinel,Dashboard,规则,Sentinel,Cloud,dashboard
From: https://www.cnblogs.com/shigongp/p/17471905.html

相关文章

  • 微服务 - Spring Cloud - Eureka Server单机和集群搭建、单机服务注册和集群服务注册
    Eureka服务管理Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能Eureka服务注册与发现Eur......
  • 使用python对AWS-CloudTrail-Json-日志文件key字段名称的提取
    关于AWS CloudTrail-在Console界面,默认只能看到最近90天的数据如果需要追踪更早的操作记录,得需要配置CloudTrail日志输出保存到s3在s3上不同的region位于不同的目录,最后会将某一天的日志,存放到那一天的目录/文件夹中,目录路径格式(部分)如:aws-account-xxx/CloudTrail/cn-nort......
  • SpringBoot学习笔记
    SpringBoot学习笔记学习资料分享,一定要点!!!示例代码跳转链接无效,查看完整笔记点击:https://gitee.com/pingWurth/study-notes/blob/master/springboot/spring-boot-demo/SpringBoot学习笔记.md官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/index......
  • Springboot web,三层架构, IOC&DI 使用总结2023
    Springbootweb,三层架构,IOC&DI使用总结2023一.spring.io全家桶springbootspringframework基础框架,配置繁琐,入门难度大--》springbootspringcloudspringsecurityspringdataspring发展到今天是一个生态圈,提供了若干个子项目,每个子项目用于完成特定的功能。二.sp......
  • Springboot实现WebSocket
    一、什么是webSocketWebSocket是HTML5下一种新的协议(Websocket协议本质上是一个基于tcp的协议),它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,WebSocket是一个持久化的协议。二、修改配置文件在application.properties,修改内容为:server.port=......
  • Spring依赖注入(三) - 注入来源
    Spring依赖注入来源上一章中,我们在第三步的代码分析中可看到,在进行注入的依赖查找的时候,查找来源会从如下几个方式去查找:• 1、先看注入是否是外部化配置,如果是,则注入(@Value的方式)• 2、遍历看注入的对象是否是resolvableDependencies中包含的对象,如果是则返回(非Spring容器管理的......
  • 5步带你玩转SpringBoot自定义自动配置那些知识点
    目前SpringBoot框架真的深受广大开发者喜爱,毕竟它最大的特点就是:快速构建基于Spring的应用程序的框架,而且它提供了各种默认的功能和配置,可以让开发者快速搭建应用程序的基础结构。但是,当我们需要自定义一些配置时,我们就需要使用自定义自动配置。今天一定让大家深刻体验干货知识点......
  • springboot+websocket简单使用
    一、引入依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.o......
  • springboot简易配置
    server:port:8089servlet:encoding:charset:UTF-8tomcat:uri-encoding:UTF-8spring:datasource:type:com.zaxxer.hikari.HikariDataSourcejdbc-url:jdbc:mysql://localhost:3306/mydb_base?serverTimezone=UTC&useUnicode=t......
  • SpringMVC中接收前端传递的参数,设置了编码过滤器filter,但在控制台中还是出现乱码问题
    SpringMVC中接收前端传递的参数,设置了编码过滤器filter,但在控制台中还是出现乱码问题。 在SpringMVC中遇到乱码问题不要慌,先配个SpringMVC的自带编码过滤器试试 <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.spr......