【微服务】5、服务保护 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控制台点击流控按钮,选择并发线程数并配置阈值。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

神经网络的进展与挫折

神经网络的概念可追溯到上世纪40年代,当时被认为是一种模拟大脑神经元网络的计算系统。 1940年代,麦卡洛克(McCulloch)和沃尔特皮茨(Walter Pitts)率先提出了受人类大脑和生物神经网络启发的人工神经网络。 1951年,马文明斯基(Marvin Minsky)的SNARC系统标志着第一个…

搭建企业AI助理的创新应用与案例分析

在大健康零售行业,企业面临着日益增长的市场需求和复杂的供应链管理挑战。AI助理的应用不仅能够提升客户服务效率,还能优化供应链管理,降低运营成本。 一、AI助理在大健康零售行业的创新应用 个性化健康咨询 AI助理可以通过分析客户的健康…

一文读懂「LoRA」:大型语言模型的低秩适应

LoRA: Low-Rank Adaptation of Large Language Models 前言 LoRA作为大模型的微调框架十分实用,在LoRA出现以前本人都是通过手动修改参数、优化器或者层数来“炼丹”的,具有极大的盲目性,但是LoRA技术能够快速微调参数,如果LoRA…

接口项目操作图-thinkphp6-rabbitmq

一、用户开户流程 用户首次需要联系商务开通账户,需要提供手机号及来访问的IP。开好户之后,平台方将提供用户访问的key值及header头部参数的公钥加密文件、body访问参数以及返回数据的公私钥加解密文件。 二、用户请求流程 用户将拿到的key值进行rsa公钥…

程序环境及预处理

一.程序的翻译环境和执行环境 在ANSI C(标准c)的任何一种实现中,存在两个不同的环境。 计算机是能够执行二进制指令的,但是我们写出的c语言代码是文本信息,计算机不能直接理解 第1种是翻译环境,在这个环境…

回顾 Tableau 2024 亮点功能,助力 2025 数据分析新突破

2024 年,Tableau 用更智能、更高效的工具,重新定义了数据分析的可能性。 回顾 2024 年,Tableau 凭借一系列创新功能,在数据可视化与分析领域再次引领潮流。无论是深度整合 AI 技术,还是优化用户体验的细节,…

【姿态估计实战】使用OpenCV和Mediapipe构建锻炼跟踪器【附完整源码与详细说明】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

快速上手Python,制作趣味猜数字游戏

在编程学习的旅程中,游戏是一个极佳的切入点。今天,我们将一起创建一个简单而有趣的猜数字游戏,借此机会深入学习Python编程的基础知识和一些实用的编程技巧。无论你是初学者还是有一定基础的开发者,相信你都能从中获得乐趣和收获…

AI驱动的可演化架构与前端开发效率

1. 引言 在当今快节奏的数字时代,软件系统需要具备强大的适应能力才能在瞬息万变的市场需求中保持竞争力。软件可演化架构的重要性日益凸显,它能够让软件系统在面对需求变更、技术升级以及市场波动时,能够快速、高效地进行调整和升级&#x…

用豆包MarsCode IDE打造精美数据大屏:从零开始的指南

原标题:用豆包MarsCode IDE,从0到1画出精美数据大屏! 豆包MarsCode IDE 是一个云端 AI IDE 平台,通过内置的 AI 编程助手,开箱即用的开发环境,可以帮助开发者更专注于各类项目的开发。 作为一名前端开发工…

基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS

产品设计初衷 HS-P2-2D是一款针对大车盲区开发的360度全景影像 安全行车辅助系统,通过车身四周安装的超广角像机,经算法合成全景鸟瞰图,通过鸟瞰图,司机非常清楚的看清楚车辆四周情况,大大降低盲区引发的交通事故。 产…

pygame飞机大战

飞机大战 1.main类2.配置类3.游戏主类4.游戏资源类5.资源下载6.游戏效果 1.main类 启动游戏。 from MainWindow import MainWindow if __name__ __main__:appMainWindow()app.run()2.配置类 该类主要存放游戏的各种设置参数。 #窗口尺寸 #窗口尺寸 import random import p…

c++ 两线交点计算程序(Program for Point of Intersection of Two Lines)

给定对应于线 AB 的点 A 和 B 以及对应于线 PQ 的点 P 和 Q,找到这些线的交点。这些点在 2D 平面中给出,并带有其 X 和 Y 坐标。示例: 输入:A (1, 1), B (4, 4) C (1, 8), D (2, 4) 输出:给定直线 AB 和…

Taro+react 开发第一节创建 带有redux状态管理的项目

Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…

2024AAAI SCTNet论文阅读笔记

文章目录 SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation摘要背景创新点方法Conv-Former Block卷积注意力机制前馈网络FFN 语义信息对齐模块主干特征对齐共享解码头对齐 总体架构backbone解码器头 对齐损失 实验SOTA效果对比Cit…

代码随想录 数组test5(leetcode 59.螺旋矩阵)

59. 螺旋矩阵 II - 力扣(LeetCode) 大致的想法是从起点开始以顺时针走到中心,有两种实现方式:一圈一圈赋值或者每走一步就赋值 方法一:按圈循环 思路: 外层循环是要循环的圈数,这里需要分奇偶讨论,若题目给出的n为偶…

向成电子XC3588H工控主板助力内窥镜应用升级

随着微创手术在全球范围内普及,内窥镜应用越来越广泛。利用内窥镜,医生可以看到X射线不能显示的病变,对医疗诊断有非常重要的作用。内窥镜设备凝聚了先进的影像技术,提供高画像精度诊断微小的病变。在设备智能化的今天&#xff0c…

基于SpringBoot的音乐网站与分享平台

基于SpringBoot的音乐网站与分享平台 摘要1. 研究背景2.研究内容3.系统功能 3.1前台首页功能模块3.2在线听歌功能模块3.3后台登录功能模块3.4在线听歌管理模块 4.部分功能代码实现5.源码分享(免费获取) 需要源码联系我即可(免费获取)~ ??大家点赞、收藏、关注、评论啦 、查…

nginx-灰度发布策略(split_clients)

一. 简述: 基于客户端的灰度发布(也称为蓝绿部署或金丝雀发布)是一种逐步将新版本的服务或应用暴露给部分用户,以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx,可以通过配置和使用不同的模块来实现基于…

【数据结构】栈与队列(FIFO)

在阅读该篇文章之前&#xff0c;可以先了解一下堆栈寄存器和栈帧的运作原理&#xff1a;<【操作系统】堆栈寄存器sp详解以及栈帧>。 栈(FILO) 特性: 栈区的存储遵循着先进后出的原则。 例子: 枪的弹夹&#xff0c;最先装进去的子弹最后射出来&#xff0c;最后装入的子弹…