当前位置: 首页 > news >正文

Spring Cloud Alibaba 之 Sentinel

大家好,我是升仔

  • 引言

    在微服务架构中,服务之间的依赖错综复杂。一旦某个服务出现问题,很容易引发连锁反应,导致整个系统瘫痪。Sentinel 就是为了解决这类问题而生的。它通过流量控制、熔断降级等机制,保护服务不被过多流量压垮,同时也确保系统的稳定运行。

    实战场景

    假设我们有一个商品服务(Product Service)和订单服务(Order Service),订单服务在下单时需要调用商品服务获取商品信息。我们将在商品服务中集成 Sentinel 来实现流量控制。

    环境准备
    1. JDK 1.8 或更高版本
    2. Maven 3.6 或更高版本
    3. Spring Boot 2.3.0.RELEASE
    4. Spring Cloud Hoxton.SR6
    5. Spring Cloud Alibaba 2.2.1.RELEASE
    项目创建
    1. 创建一个 Spring Boot 项目,添加 spring-cloud-starter-alibaba-sentinel 依赖。
    2. 配置文件 application.yml 中添加 Sentinel 的配置。
    spring:cloud:sentinel:transport:dashboard: localhost:8080 # Sentinel 控制台地址
    
    商品服务(Product Service)
    1. 创建 ProductController 类,提供一个获取商品信息的接口。
    @RestController
    @RequestMapping("/product")
    public class ProductController {@GetMapping("/{productId}")public String getProductInfo(@PathVariable String productId) {// 模拟业务逻辑return "Product info of " + productId;}
    }
    
    1. 添加 Sentinel 的资源保护。可以使用 @SentinelResource 注解。
    @GetMapping("/{productId}")
    @SentinelResource(value = "getProductInfo")
    public String getProductInfo(@PathVariable String productId) {// 业务逻辑
    }
    
    集成 Sentinel Dashboard
    1. 下载并启动 Sentinel Dashboard。
    2. 运行商品服务,它会自动连接到 Sentinel Dashboard。
    3. 通过 Sentinel Dashboard 可以对资源进行流量控制设置。

    测试与验证

    1. 启动商品服务,访问商品信息接口。
    2. 通过 Sentinel Dashboard 设置流量控制规则,如 QPS 阈值。
    3. 模拟高并发访问,验证流量控制效果。

    总结

    Sentinel 在微服务架构中扮演着守门人的角色,有效防止了系统因流量过载而崩溃。通过对服务的保护,Sentinel 帮助我们实现了系统的高可用和稳定性。在实际的微服务项目中,Sentinel 的集成和使用是保障系统稳定性的关键步骤。

最后说一句(求关注,求赞,别白嫖)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注非常感激

http://www.lryc.cn/news/267369.html

相关文章:

  • Jenkins Tutorial
  • css mask 案例
  • 案例系列:Movielens_预测用户对电影的评分_基于行为序列Transformer的推荐系统
  • 单词接龙[中等]
  • 机器人制作开源方案 | 森林管理员
  • Laravel框架使用phpstudy本地安装的composer用Laravel 安装器进行安装搭建
  • 炫酷登录注册界面【超级简单 jQuery+JS+HTML+CSS实现】
  • 2023年国赛高教杯数学建模E题黄河水沙监测数据分析解题全过程文档及程序
  • 跨国企业传输大文件注意事项和解决方案
  • 【Redis】Redis 的数据类型
  • QT小技巧 - 使用QMovie进行gif切帧
  • ES-搜索
  • 微信小程序面试题
  • OpenCV之图像匹配与定位
  • 掌握JWT:解密身份验证和授权的关键技术
  • git命令和docker命令
  • 【K8S in Action】服务:让客户端发现pod 并与之通信(2)
  • Spring Boot 中实现跨域的几种方式
  • WT2605C音频蓝牙语音芯片:单芯片实现蓝牙+MP3+BLE+电话本多功能应用
  • 计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Android 使用Serialiable接口和Parcelable接口进行数据传送
  • 【数据结构入门精讲 | 第十七篇】一文讲清图及各类图算法
  • Python 直方图的绘制-`hist()`方法(Matplotlib篇-第7讲)
  • Quartz持久化(springboot整合mybatis版本实现调度任务持久化)--提供源码下载
  • 掌握的单词个数 - 华为OD统一考试
  • 如何使用ArcGIS Pro将Excel表转换为SHP文件
  • 11.1Linux串口应用程序开发
  • log4j学习
  • 【Vue2+3入门到实战】(4)Vue基础之指令修饰符 、v-bind对样式增强的操作、v-model应用于其他表单元素 详细示例
  • 【数据结构和算法】找到最高海拔