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

微服务-Sentinel新手入门指南

微服务为什么要使用流控降级组件

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

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

Sentinel基本概念

资源

资源是Sentinel的关键概念。它可以是Java应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。

只要通过Sentinel API定义的代码,就是资源,能够被Sentinel保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源来标示资源。

规则

围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

Sentinel功能和设计理念

流量控制

流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角色考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel作为一个调配器可以根据需要把随机的请示调整成合适的的形状。

流量控制有以下几个角度:

  • 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
  • 运行指标,例如QPS、线程池、系统负载等;
  • 控制的效果,例如直接限流、冷启动、排名等;

Sentinel的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想的效果。

熔断降级

什么是熔断降级
除了流量控制以外,降低调用链路中的不稳定资源也是Sentinel的使命之一。由于调用关系的复杂,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和Hystrix里面描述 的问题是一样的。

Sentinel和Hystrix的原则是一致的:当调用链路中某个资源出现不稳定,例如,表现为timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。

熔断降级设计理念
在限制手段上,Sentinel和Hystrix采取了完全不一样的方法。Hystrix通过线程池的方式,来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做一了最彻底是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。

Sentinel对这个问题采取了两种手段:

  • 通过并发线程进行限制
    和资源池隔离的方法不同,Sentinel通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要预先分配线程池大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数据的逐步堆积。当线程数在待定资源上堆积到一定的数量之后,对该资源的新请求会被拒绝。堆积的线程完成任务后才开始继续接收请求。
  • 通过响应时间对资源进行降级
    除了对并发线程数据进行控制以外,Sentinel还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口才重新恢复。

系统负载保护

Sentinel同时提供系统维度的自适应保护能力。防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进行,可能会导致系统崩溃,无法响应。在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器处在一个边缘状态的时候,这个增加的流量就会导致 这台机器也崩溃,最后导致整个集群不可用。

针对这个情况,Sentinel提供了对应的保护机制,让系统的入口流量和系统负载达到一个平衡,保证系统在能力范围之内处理最多的请求。

Sentinel是如何工作的

Sentinel的主要工作机制如下:

  • 对主流框架提供适配或显示的API,来定义需要保护的资源,并提供设计对资源进行实时统计和调用链路分析。
  • 根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel提供开放的接口,方便您定义及改变规则。
  • Sentinel提供实惠的监控系统,方便快速了解目前系统的状态。

流控降级与容错标准

Sentinel社区正在将流量治理相关标准抽出到OpenSergo spec中,Sentinel作为流量治理标准实现。

Sentinel的使用

到官网下载sentinel-dashboard,下载

安装sentinel控制台

1.启动sentinel控制台
  • 执行 java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=tlmall-sentinel-dashboard:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar
    如果端口冲突,可用使用-Dserver.port=新端口进行设置。
  • 从sentinel1.6.0起,sentinel控制台引入基本的登录功能,默认用户名和密码都是sentinel。
    访问:http://localhost:8080
2、sentinel整合微服务

官方参考文档,参考文档

  • 引入依赖
<!-- sentinel 依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  • 业务代码中配置要保护的资源

    • mvc接口方法自动埋点,不需要配置
    • 非mvc接口方法可以使用@SentinelResource注解用来标识资源是否被限流、降级
    • 对下单接口进行流控,此处不需要处理
  • 测试,重启服务,对用户操作进行流控

    • 启动sentinel控制台,在sentinel控制台中设置流控规
    • 将单机阈值调为1,用postman测试接口,是否被流控

相关文章:

微服务-Sentinel新手入门指南

微服务为什么要使用流控降级组件 为了提高系统运行期间的稳定性和可用性 在微服务环境下&#xff0c;服务之间存在复杂的调用关系&#xff0c;单个服务的故障或过载可能会迅速影响到整个系统&#xff0c;导致服务雪崩效应。流控组件可以限制进入系统的流量&#xff0c;防止系…...

传统听写与大模型听写比对

在快节奏的现代生活中&#xff0c;听写技能仍然是学习语言和提升认知能力的重要环节。然而&#xff0c;传统的听写练习往往枯燥乏味&#xff0c;且效率不高。现在&#xff0c;随着人工智能技术的发展&#xff0c;大模型听写工具的问世&#xff0c;为传统听写带来了革命性的变革…...

http性能测试命令ab

华子目录 使用方法常用选项示例输出解读注意事项 在 Linux系统中&#xff0c; ab&#xff08; ApacheBench&#xff09;是一个用于 测试HTTP服务器性能的 工具。它是 Apache HTTP服务器项目的 一部分&#xff0c;专门设计用来模拟 多个用户对 服务器发起 并发请求&am…...

前端:轮播图常见的几种实现方式

目录 前言 一、轮播图是什么&#xff1f; 二、实现方法 1.使用纯 HTML、CSS、JavaScript 实现 2.使用组件来快速实现 总结 前言 在学习前端的过程中&#xff0c;总是有要实现轮播图效果的时候&#xff0c;本文就介绍了轮播图常见的几种实现方式。 一、轮播图是什么&#xff1f…...

Pytest基础01: 入门demo脚本

目录 1 Pytest接口测试 1.1 最简单版hello world 1.2 pytest.ini 2 pytest兼容unittest 3 封装pytest执行入口 1 Pytest接口测试 Pyest是一个可以用于接口测试的强大框架&#xff0c;开源社区也有非常多的pytest插件。 按江湖传统&#xff0c;学习一个新语言或者新框架&…...

ruoyi 多租户 开启后针对某一条sql不适用多租户; 若依多租户sql规则修改

文章参考&#xff1a;多租户功能 | Ruoyi-TDesign 忽略租户​ 1.如果需要指定单独 SQL 不开启过滤&#xff0c;可在对应的 Mapper 接口添加如下忽略注解&#xff1a; InterceptorIgnore(tenantLine "true", dataPermission "false") 此处注意事项 使…...

driftingblues6靶机

打开靶场 查看页面源代码&#xff0c;最下面有一个注释&#xff0c;提供了一个网址 vmlist.github.io&#xff0c;我们去访问一下 这里是一个github页面&#xff0c;提供攻防虚拟机的下载&#xff0c;对我们解题并没有什么有用的信息&#xff0c;我们再去扫描端口 发现只有80端…...

Neo4j GDS 2.0 安装与配置

Neo4j GDS 2.0 安装与配置 GDS插件安装&#xff1a;Neo4j官方文档 1. GDS简介 Neo4j Graph Data Science (GDS) 库作为 Neo4j Graph Database 的插件提供。该插件需要安装到数据库中并在 Neo4j 配置中列入白名单。有两种主要方法可以实现这一点&#xff0c;我们将在本章中详…...

A*算法与人工势场法结合的路径规划(附MATLAB源码)

A*算法与人工势场法&#xff08;APF&#xff09;结合实现路径规划 路径规划是机器人、无人机及自动驾驶等领域中的一个重要问题。本文结合了经典的 A* 算法与 人工势场法&#xff08;Artificial Potential Field, APF&#xff09;&#xff0c;实现了一种改进的路径规划方法。下…...

BootstrapTable处理表格

需求背景 历史项目使用 BootstrapTable 作为前端组件 应客户需要调整&#xff1a; 冻结前四列对于大文本文字显示部分内容&#xff0c;鼠标悬浮显示完整内容 冻结列 1、引入相关CSS,JS CSS <link rel"stylesheet" href"/css/bootstrap.min.css"> …...

UniApp 打开文件工具,获取文件类型,判断文件类型

注意&#xff1a;以下代码使用 typeScript 开发&#xff0c;如果想在 js 中使用&#xff0c;可参考 npm 已经发布的包&#xff1a;https://www.npmjs.com/package/uni-easy-file NPM 使用 如果想直接在 npm 项目中使用可以直接执行以下命令 npm i uni-easy-file然后直接使用 …...

docker-开源nocodb,使用已有数据库

使用已有数据库 创建本地数据库 数据库&#xff1a;nocodb 用户&#xff1a;nocodb 密码&#xff1a;xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1&#xff08;适用于 bridge 网络模式&#xff09;version: "2.1" services:nocodb:environment:…...

Mysql COUNT() 函数详解

简介 COUNT()函数定义 COUNT()函数是SQL中常用的 聚合函数 &#xff0c;用于统计满足特定条件的记录数。它可以灵活地应用于各种查询场景&#xff0c;帮助用户快速获取所需的数据统计信息。该函数不仅能够计算所有行的数量&#xff0c;还能针对特定列进行计数&#xff0c;并支…...

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路&#xff0c;深入理解 RISC-V 指令集的子集功能实现&#xff0c;掌握数字电路设计与实现的基本流程&#xff0c;包括指令解析、部件组合、电路设计以及功能仿真等环节&#xff0c;同时培养verilog HDL编程能力和…...

从零开始采用命令行创建uniapp vue3 ts springboot项目

文章目录 1&#xff0c;通过命令行创建uniapp vue3 ts项目2, 创建springboot后台项目3&#xff0c; 联调测试 1&#xff0c;通过命令行创建uniapp vue3 ts项目 ​ 官方通过命令行创建项目的地址&#xff1a;https://zh.uniapp.dcloud.io/quickstart-cli.html ​ 在执行下面操…...

跟着逻辑先生学习FPGA-实战篇第一课 6-1 LED灯闪烁实验

硬件平台&#xff1a;征战Pro开发板 软件平台&#xff1a;Vivado2018.3 仿真软件&#xff1a;Modelsim10.6d 文本编译器&#xff1a;Notepad 征战Pro开发板资料 链接:https://pan.baidu.com/s/1AIcnaGBpNLgFT8GG1yC-cA?pwdx3u8 提取码:x3u8 1 知识背景 LED&#xff0c;又名…...

springboot 跨域配置

方案一 Configuration public class GlobalCorsConfig {Beanpublic CorsFilter corsFilter() {//1. 添加 CORS配置信息CorsConfiguration config new CorsConfiguration();//放行哪些原始域config.addAllowedOrigin("*");//是否发送 Cookieconfig.setAllowCredenti…...

C语言宏和结构体的使用代码

先看代码: #include <stdio.h> #include <string.h>// 定义一个宏&#xff0c;用于定义结构体 #define DEFINE_STRUCT(name, type1, name1, type2, name2, size, cf) \typedef struct { \type1 name1; …...

微信小程序 覆盖组件cover-view

wxml 覆盖组件 <video src"../image/1.mp4" controls"{{false}}" event-model"bubble"> <cover-view class"controls"> <cover-view class"play" bind:tap"play"> <cover-image class"…...

【Redis知识】Redis进阶-redis还有哪些高级特性?

文章目录 概览1. 持久化2. 复制与高可用3. 事务和脚本4. 发布/订阅 Redis事务示例事务中的错误处理使用 WATCH 进行乐观锁总结 Redis管道一、管道的原理二、管道的特点三、管道的使用场景四、管道的实现示例五、管道的注意事项 发布订阅模式一、Redis发布订阅模式介绍二、Redis…...

如何用Hitboxer解决游戏按键冲突:5步实现职业级操作精度

如何用Hitboxer解决游戏按键冲突&#xff1a;5步实现职业级操作精度 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏对战中&#xff0c;因为同时按下左右方向键而角色卡顿&#xff1f;或者…...

互联网大厂 Java 求职面试全景:从音视频场景到微服务架构的深入探讨

互联网大厂 Java 求职面试全景&#xff1a;从音视频场景到微服务架构的深入探讨 在互联网大厂的招聘中&#xff0c;Java 开发者的面试不仅技术含量高&#xff0c;还充满了戏剧性。今天&#xff0c;我们将通过一位求职者燕双非与面试官的对话&#xff0c;带你走进这个复杂而有趣…...

从VS2019调试到IIS部署:一个.NET Core Web API的‘完整旅程’与避坑实录

从VS2019调试到IIS部署&#xff1a;一个.NET Core Web API的‘完整旅程’与避坑实录 当第一次尝试将.NET Core Web API从开发环境部署到生产服务器时&#xff0c;许多开发者都会遇到各种预料之外的挑战。本文将以第一人称视角&#xff0c;详细记录我从零开始创建项目、本地调试…...

Allegro 17.4 Via Array 实战:3分钟搞定PCB板边与铺铜区的屏蔽过孔阵列

Allegro 17.4 Via Array高效应用&#xff1a;从板边屏蔽到铺铜优化的实战解析 在高速PCB设计中&#xff0c;过孔阵列的应用早已超越了简单的电气连接功能。资深Layout工程师们发现&#xff0c;合理布置的过孔阵列能够显著提升板边屏蔽效果、优化电源平面阻抗分布&#xff0c;甚…...

如何高效掌握FDS:开源火灾模拟的完整实战指南

如何高效掌握FDS&#xff1a;开源火灾模拟的完整实战指南 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds Fire Dynamics Simulator&#xff08;FDS&#xff09;是美国国家标准与技术研究院开发的权威火灾动力学模拟软件…...

i.MX8MP多核异构处理器外设资源管理:从RDC到SEMA42的实战指南

1. 多核异构处理器的资源管理挑战与核心思路在嵌入式系统开发领域&#xff0c;尤其是高性能应用场景&#xff0c;多核异构处理器正变得越来越普遍。这类处理器通常将高性能应用处理器&#xff08;如 Arm Cortex-A 系列&#xff09;与实时微控制器&#xff08;如 Arm Cortex-M 系…...

BOTW-Save-Editor-GUI 完整技术指南:Nintendo Switch 塞尔达传说存档编辑终极方案

BOTW-Save-Editor-GUI 完整技术指南&#xff1a;Nintendo Switch 塞尔达传说存档编辑终极方案 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI BOTW-Save-Editor-GU…...

【免费下载】 STM32Cube_FW_F4_V1.16.0 固件库

STM32Cube_FW_F4_V1.16.0 固件库 【下载地址】STM32Cube_FW_F4_V1.16.0固件库 本仓库提供了STM32CubeFW_F4_V1.16.0固件包的直接下载资源。STM32Cube是一个完整的软件平台&#xff0c;旨在支持STMicroelectronics&#xff08;意法半导体&#xff09;的STM32系列微控制器。这个特…...

告别轮询!STM32CubeMX配置DMA串口收发485数据,并详解HAL库回调函数使用避坑

STM32CubeMX实战&#xff1a;DMA驱动RS485通信与HAL库回调机制深度解析 当我们需要在工业环境中实现稳定可靠的串行通信时&#xff0c;RS485总线因其抗干扰能力强、传输距离远等优势成为首选。而STM32系列MCU配合HAL库的开发模式&#xff0c;能够显著提升开发效率。本文将彻底改…...

别再手动改‘等’和‘et al’了!Endnote X9搭配Word搞定GB/T7714格式中英文混排(保姆级教程)

科研写作效率革命&#xff1a;Endnote X9与Word协同实现中英文文献自动排版 看着期刊发回的格式修改意见&#xff0c;实验室的王博士又一次对着电脑屏幕叹了口气。参考文献列表里中英文混排的"等"和"et al"就像散落的拼图碎片&#xff0c;手动修改不仅耗时…...