Spring Cloud Alibaba——Sentinel流量控制框架

简介: Sentinel被称为分布式系统的流量防卫兵,是阿里开源流控框架,从服务限流、降级、熔断等多个维度保护服务,Sentinel提供了简洁易用的控制台,可以看到接入应用的秒级数据,并且可以在控制台设置一些规则保护应用,它比Hystrix支持的范围广,如Spring Cloud、Dubbo、gRPC都可以整合。资源是Sentinel最关键的概念,遵循Sentinel API的开发规范定义资源,就能将应用保护起来。而规则可以通过控制面板配置,也可以和资源联合起来,规则可以在控制台修改并且即时生效。
  1. Sentinel简介

Sentinel被称为分布式系统的流量防卫兵,是阿里开源流控框架,从服务限流、降级、熔断等多个维度保护服务,Sentinel提供了简洁易用的控制台,可以看到接入应用的秒级数据,并且可以在控制台设置一些规则保护应用,它比Hystrix支持的范围广,如Spring Cloud、Dubbo、gRPC都可以整合。
资源是Sentinel最关键的概念,遵循Sentinel API的开发规范定义资源,就能将应用保护起来。
而规则可以通过控制面板配置,也可以和资源联合起来,规则可以在控制台修改并且即时生效。
名词解释:

限流:不能让流量一窝蜂的进来,否则可能会冲垮系统,需要限载流量,一般采用排队的方式有序进行

对应生活中的小例子:比如在一个景区,一般是不会让所有人在同一时间进去的,会限制人数,排队进入,让景区内人数在一个可控范围,因为景区的基础设施服务不了那么多人。

降级:即使在系统出故障的情况下,也要尽可能的提供服务,在可用和不可用之间找一个平衡点,比如返回友好提示等。

例如现在稍有规模的电商系统,为了给用户提供个性化服务,一般都有推荐系统,假设现在推荐系统宕机了,不应该在推荐商品一栏不给用户展示商品,反而可以降低一点要求,保证给用户看到的是友好界面,给用户返回一些准备好的静态数据。

熔断:直接拒绝访问,然后返回友好提示,一般是根据请求失败率或请求响应时间做熔断。

熔断好比家里的保险盒,当线路过热时,就会跳闸,以免烧坏电路。

  1. Sentinel和同类产品对比

Sentinel、Hystrix、Resilience4j的异同

基础特性SentinelHystrixResilience4j限流QPS、线程数、调用关系有限的支持Rate LImiter注解的支持支持支持支持动态规则配置支持多种数据源支持多种数据源有限支持实时统计信息滑动窗口滑动窗口Ring Bit Buffer熔断降级策略平均响应时间、异常比例、异常数异常比例平均响应时间、异常比例控制台可配置各种规则,接口调用的秒级信息,机器发现等简单监控不提供控制台,可对接其它监控平台流量整形支持预热、排队模式不支持简单的Rate Limiter模式系统自适应限流支持不支持不支持扩展性多个扩展点插件的形式接口的形式常用适配框架Servlet、Spring Cloud、Dubbo、gRPC等Servlet、Spring Cloud、NetflixSpring Boot、Spring Cloud

  1. 下载和运行

github地址
github.com/alibaba/Sen…
可以直接下载jar包运行jar包,也可以下载源码编译运行
因为它是springboot项目,下载jar包后直接运行jar包即可
java -jar sentinel-dashboard-1.8.3.jar

默认端口8080,如果需要修改,可以增加-Dserver.port参数,启动命令修改为java -jar -Dserver.port=9000 sentinel-dashboard-1.8.3.jar ,即可将程序端口改为9000
默认账号sentinel,默认密码sentinel,登录后页面是空白的,是因为sentinel采用懒加载的方式,只有证正使用它,功能才会展示出来

  1. 项目集成Sentinel

4.1 创建提供者服务
pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- 热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <!-- 健康监控 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!-- 服务注册/服务发现需要引入的 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- nacos配置中心依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!-- sentinel组件依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
</dependencies>

bootstrap.yml
server:
port: 8082 #程序端口号
spring:
application:

name: provider # 应用名称

cloud:

sentinel:
  transport:
    port: 8719 # 启动HTTP Server,并且该服务与Sentinel仪表进行交互,是Sentinel仪表盘可以控制应用,如被占用,则从8719依次+1扫描
    dashboard: 127.0.0.1:8080 # 指定仪表盘地址
nacos:
  discovery:
    server-addr: 127.0.0.1:8848 # nacos服务注册、发现地址
  config:
    server-addr: 127.0.0.1:8848 # nacos配置中心地址
    file-extension: yml # 指定配置内容的数据格式

management:
endpoints:

web:
  exposure:
    include: '*' # 公开所有端点

写一个简单的Controller给消费者调用
@RestController
public class TestController {


@GetMapping("/test")
public String test(){
    return "provider test方法" + RandomUtils.nextInt(0,100);
}

}

相关文章
|
9月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
661 2
|
10月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
8月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
671 8
|
9月前
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
830 1
|
11月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
979 1
|
10月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1665 0
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
3211 13
Spring Cloud Alibaba:一站式微服务解决方案

热门文章

最新文章