首页 > 其他分享 >【微服务】5、服务保护 Sentinel

【微服务】5、服务保护 Sentinel

时间:2025-01-06 14:00:13浏览次数:3  
标签:服务 购物车 保护 限流 线程 Sentinel 控制台

Sentinel学习内容概述

在这里插入图片描述

  1. Sentinel简介与结构
    • Sentinel是Spring Cloud Alibaba的组件,由阿里巴巴开源,用于服务流量控制和保护。其内部核心库(客户端)包含限流、熔断等功能,微服务引入该库后只需配置规则。规则配置方式有Java编码(较复杂)和使用控制台(较简便)两种。
  2. Sentinel控制台安装
    • 可从GITHUB下载,使用1.8.6版本。登录密码为sentinel。
  3. 微服务整合Sentinel
    • 在微服务(如购物车服务cart service)的pom文件中引入Spring cloud starter alibaba Sentinel的依赖,在application.yaml文件中配置sentinel控制台地址,重启服务后即可与控制台建立连接。连接建立后,访问购物车相关业务,在控制台可监控接口运行和限流情况。
  4. Sentinel控制台功能与簇点链路

在这里插入图片描述
- 控制台可监控微服务接口运行和限流情况,还可通过页面配置限流、熔断等规则并实时推送到微服务。
- 簇点链路即单机调用链路,是单个微服务内部请求经过被Sentinel监控的资源(默认仅为Spring MVC的Controller接口,即end point)形成的链路。限流、熔断等功能针对簇点链路资源配置。
5. 解决簇点资源名称重复问题
- 由于采用restful接口,购物车相关接口路径相同(如增删改查都是/carts),默认按请求路径作为触点资源名称会导致无法区分。需在配置中开启http method specify(默认为false,改为true),使请求方式加路径作为触点资源名称,避免重复。配置后重启购物车服务,访问各接口,控制台的触点链路会显示请求方式,且各接口能分开监控。

在这里插入图片描述


请求限流

一、限流实现方式

  1. 控制台配置
    • 进入控制台的簇点链路页面,访问过的SpringMVC接口会展示为触点资源,在其后面的按钮可配置流量控制等规则。
    • 以查询购物车接口为例,点击流控按钮,在弹出菜单中,资源名和针对来源默认已有值不用填,阈值类型选QPS(每秒钟请求数量),填写单机阈值(如限定每秒钟请求数量为6)后点击新增,即可完成限流规则配置。
  2. 测试工具JMETER
    省略

在这里插入图片描述


线程隔离

基于Sentinel实现线程隔离

在这里插入图片描述

  1. 线程隔离概念引入

    • 背景:在黑马商城项目中,购物车服务调用商品服务,若商品服务出现故障(如查询缓慢),会拖慢购物车服务接口,高并发下可能耗尽购物车服务资源,导致雪崩。
    • 原理:将每个业务所用资源相互独立,如为购物车业务分配特定数量线程,超出则拒绝请求,保障其他业务不受影响。
  2. 线程隔离原理讲解
    在这里插入图片描述

    • 为业务分配可使用线程,如给查询购物车业务分配五个线程,每次请求取一个,用完拒绝新请求,直至有线程释放。
    • 配置在Sentinel控制台,找到业务流控规则配置,选择并发线程数并设置阈值(如5),并发线程数与QPS不同,限制的是线程资源
  3. 准备测试环境

    • 模拟商品服务接口变慢,在商品服务查询接口用Thread.sleep模拟500ms业务延迟(单线程QPS为2,五线程QPS为10)。
    • 因Spring Boot Tomcat默认资源上限大,为便于测试,修改购物车服务线程上限(如50个)、排队等待线程数量(如50个)、连接上限(如100个)后重启。
    • 在这里插入图片描述
  4. 进行测试

    • 未配置线程隔离时,商品服务变慢会拖慢购物车查询速度(500多毫秒),高并发(每秒100并发)下修改购物车也变慢(1.53秒)甚至查询购物车失败,因Tomcat资源耗尽。
    • 配置线程隔离(查询购物车业务并发线程数设为5,约QPS为10)后,高并发测试中查询购物车大部分异常(被限流),但修改购物车不受影响(10ms - 19ms,比之前快),体现线程隔离对购物车服务资源的保护作用。
  5. 线程隔离解决问题及总结配置方法

    • 线程隔离可解决购物车服务问题,保证其他业务正常访问,查询购物车被限流。
    • 配置方式:在Sentinel控制台点击流控按钮,选择并发线程数并配置阈值。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

标签:服务,购物车,保护,限流,线程,Sentinel,控制台
From: https://blog.csdn.net/qq_44810930/article/details/144961629

相关文章

  • 阿里云DDoS防护:如何更换IP地址,保护您的云服务器
    随着网络攻击日益增多,DDoS(分布式拒绝服务)攻击已经成为对企业和个人云资源的一大威胁。为了帮助用户抵御这类攻击,阿里云推出了强大的DDoS防护服务,保障您的云服务器免受恶意流量的影响。今天,九河云就来和大家聊聊当您的阿里云资源遭遇攻击时,如何通过更换IP地址来进一步加强防护。......
  • 高效蓄电:新能源智慧移动充电服务如何提高汽车的充电效率?
    在新能源汽车产业蓬勃发展的今天,充电效率成为了制约其进一步普及的关键因素。传统的充电桩模式虽然在一定程度上满足了车主的充电需求,但在充电速度、便捷性等方面仍有待提升。而新能源汽车移动充电服务的出现,则为解决这一问题提供了新的思路。移动充电服务如何提高汽车的充电效......
  • 2025年雨云免费幻兽帕鲁联机服务器领取教程
    幻兽帕鲁(Palworld)是一款结合了宠物元素和第一人称射击战斗系统的开放世界生存制作游戏,深受玩家喜爱。雨云是一家国产云计算服务提供商,推出了积分兑换云产品活动,可以通过完成任务获得积分,进而兑换免费游戏云服务器。以下是详细的雨云免费幻兽帕鲁联机服务器领取教程:一、注册......
  • 【继电保护】小电流接地系统故障仿真-中性点不接地与经消弧线圈接地仿真模型(Simulink
     ......
  • openEuler欧拉使用sshpass不输入密码远程登录其他服务器.240108
    ​​ssh登陆不能在命令行中指定密码,sshpass的出现则解决了这一问题。用-p参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。操作步骤:一、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld二、安装sshpassdnf-yinstall......
  • openEuler-怎么看服务器操作系统是不是欧拉系统?.240109
    ​[root@localhost~]#cat/etc/os-releaseNAME="openEuler"VERSION="22.03(LTS-SP2)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler22.03(LTS-SP2)"ANSI_COLOR="0;31"lsb_release-a有些发......
  • 基于JAVA+SpringBoot+Vue的家政服务平台
    基于JAVA+SpringBoot+Vue的家政服务平台前言✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • 银河麒麟高级服务器操作系统(通用)安装KVM和创建KVM虚拟机
    https://blog.csdn.net/weixin_45754407/article/details/134241180?share_token=1329fa62-9b06-4016-8b89-d70d870db9a8 银河麒麟高级服务器操作系统(通用)安装KVM和创建KVM虚拟机一KVM概念二安装KVM组件2.1安装KVM前提2.2KVM管理工具2.3KVM安装2.3.1安装kvm组件2.3.2启......
  • 从后微服务谈架构演进.240109
    2022年,关于微服务发生了几件有趣的事情。其一,正式掌管Twitter不久的ElonMusk对Twitter的开发团队“批判”了一番。他表示自己为Twitter在许多国家的极慢运行速度感到抱歉。之所以如此慢是因为App需要执行1000多个“糟糕”的批处理RPC,而这只是为了渲染主页的......
  • FTP客户端无法正常显示服务器内容的原因分析与解决方法
    自从重装系统之后,用户发现通过FTP客户端连接到服务器时,远程目录显示为空。尽管FTP设置中的路径指向正确的位置(如d:\\www\\myweb),但在客户端却看不到任何文件或文件夹。解决方案:问题解决方案FTP客户端不显示内容首先确认FTP服务器是否正常运行,尝试从其他设备或网络环境......