sentinel 限流保护-笔记

news/2024/12/19 9:24:35/

本文属于b站图灵课堂springcloud笔记系列。讲的好还不要钱,值得推荐。

为什么要引入限流组件?

     在微服务环境下,服务之间存在复杂的调用关系,单个服务的故障或过载可能会迅速影响到整个系统,导致服务雪崩效应。流控组件可以限制进入系统的流量,防止系统因超出处理能力而崩溃。降级组件则在服务不可用或响应过慢时,提供降级逻辑,如返回备用数据或执行降级操作,以保证核心业务的正常运行.

sentinel是什么?

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。

官方文档:

introduction | Sentinel

Sentinel 的使用可以分为两个部分:

  • 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。
  • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。

 安装sentinel 控制台

版本:

1.8.6

下载地址:Releases · alibaba/Sentinel · GitHub

启动:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

端口冲突可以更换。

访问控制台:http://127.0.0.1:8888/

从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel

注意,这只是本地测试,生成环境需要参照引入配置中心持久化规则:在生产环境中使用 Sentinel · alibaba/Sentinel Wiki · GitHub 

整合微服务

以订单服务为例,引入sentinel

1 订单服务pom引入依赖。

<!-- sentinel 依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2 当 SpringBoot 应用接入 Sentinel starter 后,可以针对某个 URL 进行流控。所有的 URL 就自动成为 Sentinel 中的埋点资源,可以针对某个 URL 进行流控,就是springMVC接口不需要额外处理,非MVC接口使用@SentinelResource 注解用来标识资源是否被限流、降级。

3 修改application.yml 增加sentinel 配置。

spring:cloud:sentinel:transport:# 添加sentinel的控制台地址dashboard: tlmall-sentinel-dashboard:8888

推荐使用nacos配置,Nacos配置中心创建一个dataId为sentinel-dashboard.yml的配置,导入sentinel的配置,在订单服务的application.yml引入sentinel-dashboard.yml

测试:

重启订单服务,先访问一次,在dashboard有记录。

配置后:postman接口就会提示限流

小结:通过sentinel可以实现微服务的流控降级。

规则持久化等后面再整理。


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

相关文章

用github镜像加速, --recursive还是去github站怎么处理?

小伙伴们大多碰到过github抽风的情况&#xff0c;时通时断&#xff0c;时快时慢&#xff0c;非常考验心情。 以前碰到连不上的时候&#xff0c;我大多就是在gitee和gitcode网站找一下镜像&#xff0c;找到后直接git clone 新地址即可。但是碰到 --recursive的时候就不行了&…

PostgreSQL的学习心得和知识总结(一百六十四)|深入理解PostgreSQL数据库之在 libpq 中支持负载平衡

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

uniapp连接蓝牙操作(蓝牙设备地锁)

介绍&#xff1a; 本文采用uni-app框架来创建一个简单的用户界面&#xff0c;用于搜索、连接和发送命令给蓝牙设备。 1.打开蓝牙适配器 function openBluetooth() {uni.openBluetoothAdapter({success() {uni.offBluetoothDeviceFound();// 监听新设备发现事件uni.onBlueto…

在 Mac M1 上使用 Docker 运行 Jenkins

在 Mac M1 上使用 Docker 运行 Jenkins&#xff0c;你需要注意以下几点&#xff1a; 1. 安装 Docker Desktop 首先&#xff0c;确保你已在 Mac M1 上安装并配置了 Docker Desktop。你可以从 Docker 官方网站 下载并安装适用于 Apple Silicon&#xff08;M1&#xff09;的版本…

数据结构(Java版)第六期:LinkedList与链表(一)

目录 一、链表 1.1. 链表的概念及结构 1.2. 链表的实现 专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 一、链表 1.1. 链表的概念及结构 链表是⼀种物理存储结构上⾮连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引⽤链接次序实现的。与火车…

如何发挥网络爬虫利器phpSpider最大功效

要发挥网络爬虫利器phpSpider的最大功效&#xff0c;可以从以下几个方面入手&#xff1a; 一、基础配置与优化 安装与配置&#xff1a; 确保PHP环境已正确安装&#xff0c;并通过Composer等工具安装phpSpider及其依赖。根据目标网站的特点&#xff0c;合理设置phpSpider的配置…

夜成都APP前端代码模板开源-供学习交流-不限制商用-夜成都视频交友生活交流APP开源-优雅草2024年12月14日

夜成都APP前端代码模板开源-供学习交流-不限制商用-夜成都视频交友生活交流APP开源-优雅草2024年12月14日 介绍 夜成都APP-成都夜生活–是一款展示成都丰富多彩夜生活的APP&#xff0c;城市的灯光星星点点地亮起&#xff0c;成都人的夜生活就在灯光璀璨中蔓延开来&#xff0c…

wrk如何测试post请求

wrk git地址 https://github.com/wg/wrk wrk 默认是针对 GET 请求的&#xff0c;但它也可以通过添加自定义的 HTTP 请求体和 头部信息来进行 POST 请求的压测。以下是详细的步骤&#xff1a; wrk -t4 -c100 -d30s -s post.lua http://example.com-t4&#xff1a;使用 4 个线…