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

news/2025/1/9 0:50:14/

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控制台点击流控按钮,选择并发线程数并配置阈值。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1561668.html

相关文章

单片机中运行多个定时器

在单片机的裸机编程环境中,同时运行多个定时器是完全可行的,但需要注意一些关键点以确保系统的稳定性和效率。以下是一些考虑因素和实现方法: 1. 硬件支持 定时器数量:首先确认您的单片机是否具备足够的定时器资源。大多数现代…

查找路由器的管理后台ip【通用找IP】

需求: 刚刚搞了个【小米】路由器,我想进路由的管理后台,提示:安装xx的路由管家,我不想安装 但是无法找到这个管理后台。 而且我是用这个路由作为中继,那么这个路由的ip就会经常更换 尝试通过网上搜索引擎来…

Go语言的语法

Go语言入门与实战 引言 在当今的开发环境中,随着互联网的快速发展,程序员们面临着越来越复杂的系统需求。针对这些需求,Go语言(又称Golang)作为一种新的编程语言应运而生。Go语言由Google开发,它具有简单…

冬季蜂巢内蜂群运动的自动化监测

中文论文标题 冬季蜂巢内蜂群运动的自动化监测 英文论文标题 Automated monitoring of bee colony movement in the hive during winter season 作者信息 Rostyslav Koroliuk 机构:Ternopil Ivan Puluj National Technical University地址:Ruska str…

使用Locust对MongoDB进行负载测试

1.安装环境 pip install pymongo locust 2.设置测试环境 开启MongoDB服务 打开Navicat,新建MongoDB连接 新建test数据库和sample集合 3.编写脚本 load_mongo.py # codingutf-8 from locust import User, task, between, events from pymongo import MongoClie…

上网行为审计是什么?有什么功能?企业为什么需要上网行为审计?

上网行为审计是什么?有什么功能?企业为什么需要上网行为审计? 上网行为审计是指通过技术手段记录、分析和监控用户在网络上的各种活动,包括访问的网站、使用的应用程序、发送的邮件、聊天内容等。 其目的是为了提高网络安全性、…

Python抓取豆瓣电影Top250

文章简介 在本篇文章中,我们将探讨如何利用Python编程语言中的requests库和BeautifulSoup库来抓取豆瓣网站上电影Top250的数据信息。通过本文的学习,读者将掌握基本的网络爬虫技巧,了解如何解析HTML文档,以及怎样高效地处理和存储…

普及组集训数据结构--并查集

P1551 亲戚 - 洛谷 | 计算机科学教育新生态 并查集就是把所有相关联的量串成一串珠子,抽象来说就是: 把此类相关联的量当作节点,两个节点之间连接一条无向边,所形成的图 例题算法流程: 在此定义“族长”就是一个树的…