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

Sentinel学习

sentinel是阿里巴巴研发的一款微服务组件,主要为用户提供服务保护,包括限流熔断等措施

(一)主要功能

流量控制(限流):比如限制1s内有多少请求能到达服务器,防止大量请求打崩服务器

熔断降级:当下级服务响应慢或者不可用时,熔断服务,快速失败,保护上游服务

(二)使用方法

去Releases · alibaba/Sentinel · GitHub下载对应的jar包
在jar包所在的目录cmd运行命令

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

然后通过8080端口即可访问sentinel的控制台 ,账号密码均为sentinel

然后去项目中添加依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>x.y.z</version>
</dependency>

同时修改服务的application.yml

spring:cloud:sentinel:transport:dashboard: localhost:8090   # 指定 Sentinel Dashboard 地址port: 8719                  # 客户端监控端口,用于与 Sentinel Dashboard 通信

dashboard的地址必须和sentinel控制台的地址一致,连接控制台
port端口号是服务与sentinel的通信端口,是独立的,不能和运行服务的端口一样

在项目的代码中使用:

@SentinelResource注解

常用参数

value:指定资源名,在控制台中可看
blockHandler:触发限流规则时会调用哪个方法,一般会写一个兜底方法,方法参数要和设置了限流的方法一致,但可以加一个BlockException
fallback:触发异常时调用哪个兜底方法,和上面的很像,但是上面是用于触发限流后用的,这个是用于触发异常用的,方法参数可以加一个Throwable

(三)限流规则

限流主要是阻止大量请求同时打到服务器上

资源名 与@SentinelResource的value对应
针对来源 就是调用这个controller发送请求的来源,你要限流哪些来源的,默认全部
阈值类型:QPS每秒通过多少个(多少个就是单机阈值的数量),并发线程数通常配合线程池使用
是否集群:多服务器的情况下会用,也要设置一个阈值
比如,设置全局阈值12,比如进来100个请求,有三个服务器,它们总共只能处理12个请求
如果设置的单机均摊12,进来100个请求,就会每个服务器都能处理12个请求,总共36

继续看:

流控模式分为3种:直接、关联和链路

直接没什么好说的,就是对单一资源进行限流
关联就是a资源关联b资源,当b资源访问量大触发限流时,a也会被限流
链路就是当同一个方法会被多种渠道调用时,只对部分渠道进行限流

流控效果分三种:快速失败、warm up和排队等待

快速失败就是触发限流后,后面的请求全部丢弃,报错
warm up就是冷启动,需要设置启动时间n,前n秒内处理量大概为阈值的1/3,后面再逐步提高处理量达到阈值
排队等待就是触发限流后,后面的请求不会丢弃,而是排队等待前面的执行完后它再执行,需要设置排队时间,超过这个时间请求还未被处理的话,丢弃

ps:只有快速失败支持关联和链路,其它两种不支持

(四)熔断规则

当a服务调用b服务时,b服务可能会卡住执行很久,也可能会异常,这时a要及时熔断,切断与b的联系,保护自己

又有一个问题?怎么判断服务有问题去熔断呢?熔断之后怎么恢复连接呢?

答:判断熔断主要根据熔断策略,符合条件即熔断。恢复连接的话,当a、b服务间断开的时长达到熔断时长后,服务会切换到半开状态,a会向b发送一个或几个请求,如果这些请求正常执行,那就取消熔断恢复运行,如果这些请求有问题(满足熔断条件),就会继续保持熔断

熔断策略有三种:慢调用、异常比例和异常数

选择慢调用

最大RT:最大的响应时间,超过这个时间判定为慢调用
比例阈值:当n%的调用是慢调用时,触发熔断
熔断时长:熔断多久
最小请求数:要触发熔断起码要有多少个请求,低于这个数值不会熔断
统计时长:统计时长

选择异常比例

其他不变,没用最大RT,比例阈值改为当n%的调用是异常时触发熔断

选择异常数

其他不变,比例阈值改为异常数

(五)热点规则

就是可以对方法的具体参数进行限流
当用户调用这个方法,携带了3个参数,你可以设置热点来对具体的第几个参数进行限流

(六)总结

sentinel是服务保护的重要组件,起到限流、熔断等作用

首先下载sentinel的jar包,用命令运行,用浏览器打开sentinel的控制台

然后去项目中添加对应依赖,修改代码,添加@SentinelResource,并写对应的兜底方法

@RestController
public class UserController {@GetMapping("/user")@SentinelResource(value = "getUser",               // 资源名,用于控制台设置规则fallback = "fallbackMethod",    // 业务异常兜底方法blockHandler = "blockHandlerMethod" // 流控、熔断时的处理方法)public String getUser(@RequestParam(required = false) String name) {if ("error".equals(name)) {throw new RuntimeException("模拟业务异常");}return "用户:" + name;}// fallback 方法:处理业务异常(如运行时异常)public String fallbackMethod(String name, Throwable e) {return "fallback:业务处理异常,返回兜底用户";}// blockHandler 方法:处理被 Sentinel 限流、降级、熔断的情况public String blockHandlerMethod(String name, BlockException ex) {return "blockHandler:服务被限流或熔断,返回默认用户";}
}

其实代码部分很少,主要用控制台对限流规则、熔断规则进行配置即可

相关文章:

Sentinel学习

sentinel是阿里巴巴研发的一款微服务组件&#xff0c;主要为用户提供服务保护&#xff0c;包括限流熔断等措施 &#xff08;一&#xff09;主要功能 流量控制&#xff08;限流&#xff09;&#xff1a;比如限制1s内有多少请求能到达服务器&#xff0c;防止大量请求打崩服务器…...

【中间件】brpc_基础_execution_queue

execution_queue 源码 1 简介 execution_queue.h 是 Apache BRPC 中实现 高性能异步任务执行队列 的核心组件&#xff0c;主要用于在用户态线程&#xff08;bthread&#xff09;中实现任务的 异步提交、有序执行和高效调度。 该模块通过解耦任务提交与执行过程&#xff0c;提…...

Servlet(二)

软件架构 1. C/S 客户端/服务器端 2. B/S 浏览器/服务器端&#xff1a; 客户端零维护&#xff0c;开发快 资源分类 1. 静态资源 所有用户看到相同的部分&#xff0c;如&#xff1a;html,css,js 2. 动态资源 用户访问相同资源后得到的结果可能不一致&#xff0c;如&#xff1a;s…...

如何提升个人的思维能力?

提升个人的逻辑思维能力是一个系统性工程&#xff0c;需要长期训练和科学方法。以下是分阶段、可操作的详细建议&#xff0c;涵盖理论基础、日常训练和实战应用&#xff1a; 一、构建逻辑基础认知 1. 学习逻辑学核心理论 入门读物&#xff1a;《简单的逻辑学》麦克伦尼&am…...

[UVM]UVM中reg_map的作用及多个rem_map的使用案例

UVM中reg_map的作用及多个rem_map的使用案例 摘要:在 UVM (Universal Verification Methodology) 中,寄存器模型是用于验证 DUT (Design Under Test) 寄存器行为的重要工具。UVM 寄存器模型中的 uvm_reg_map(简称 reg_map)是寄存器模型的核心组成部分之一,用于定义…...

重新构想E-E-A-T:提升销售与搜索可见性的SEO策略

在2025年的数字营销环境中&#xff0c;谷歌的E-E-A-T&#xff08;经验、专业性、权威性、可信度&#xff09;已成为SEO和内容营销的核心支柱。传统的E-E-A-T优化方法通常聚焦于展示作者资质或获取反向链接&#xff0c;但这些策略可能不足以应对AI驱动的搜索和日益挑剔的用户需求…...

AI 采用金字塔(Sohn‘s AI Adoption Pyramid)

这张图是 Sohn 的 AI 采用金字塔&#xff08;Sohn’s AI Adoption Pyramid&#xff09; &#xff0c;用于描述不同程度的 AI 应用层次&#xff0c;各层次意义如下&#xff1a; 金字塔层级 Level 1&#xff1a;业务角色由人类主导&#xff0c;AI 起辅助作用&#xff0c;如 AI …...

影刀RPA中新增自己的自定义指令

入门到实战明细 1. 影刀RPA自定义指令概述 1.1 定义与作用 影刀RPA的自定义指令是一种强大的功能&#xff0c;旨在提高流程复用率&#xff0c;让用户能够个性化定制指令&#xff0c;实现流程在不同应用之间的相互调用。通过自定义指令&#xff0c;用户可以将常用的、具有独立…...

驱动总裁v2.19(含离线版)驱动工具软件下载及安装教程

1.软件名称&#xff1a;驱动总裁 2.软件版本&#xff1a;2.19 3.软件大小&#xff1a;602 MB 4.安装环境&#xff1a;win7/win10/win11 5.下载地址&#xff1a; https://www.kdocs.cn/l/cdZMwizD2ZL1?RL1MvMTM%3D 提示&#xff1a;先转存后下载&#xff0c;防止资源丢失&am…...

SQL经典实例

第1章 检索记录 1.1 检索所有行和列 知识点&#xff1a;使用SELECT *快速检索表中所有列&#xff1b;显式列出列名&#xff08;如SELECT col1, col2&#xff09;提高可读性和可控性&#xff0c;尤其在编程场景中更清晰。 1.2 筛选行 知识点&#xff1a;通过WHERE子句过滤符合条…...

2025深圳杯(东三省)数学建模竞赛D题完整分析论文(共36页)(含模型、可运行代码、数据结果)

2025深圳杯数学建模竞赛D题完整分析论文 目录 摘 要 一、问题重述 二、问题分析 三、模型假设 四、符号定义 五、问题一模型的建立与求解 5.1 问题一模型的建立 5.1.1 问题建模背景 5.1.2 特征工程设计 5.1.3 分类模型结构与数学表达 5.2 问题一模型的求…...

大数据技术:从趋势到变革的全景探索

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 在数字化时代的浪潮下,大数据已经不再是一个陌生的概念。从日常生活中的社交媒体,到企业决策支持系统,再到公共管理的大数据应用,它正在改变着我们的工作和生活方式。随着技术的进步,传统的数据…...

C++【内存管理】

C语言中的动态内存管理 int main() { int* p2(int*)calloc(4,sizeof(int)); int* p3(int*)realloc(p2,sizeof(int)*10); free(p3); }这里因为扩容数据小,所以是原地扩容,p2p3地址一样,不用free(p2) 如果扩容空间大就不是原地扩容,而是新找一块空间,然后拷贝 C内存管理方式 n…...

【Go类库分享】mcp-go Go搭建MCP服务

【Go类库分享】mcp-go Go搭建MCP服务 介绍 目前Go 生态圈有两个知名的开发 MCP 的库&#xff0c;一个是mark3labs/mcp-go,另一个是metoro-io/mcp-golang。 在介绍常用库之前&#xff0c;先来简单介绍一下mcp协议&#xff1a; MCP全称Model Context Protocol 模型上下文协议&a…...

人工智能发展史 — 物理学诺奖之 Hopfield 联想和记忆神经网络模型

目录 文章目录 目录1982 年&#xff0c;Hopfield 联想和记忆神经网络模型背景知识历史&#xff1a;霍普菲尔德简介神经学&#xff1a;大脑的联想记忆机制物理学&#xff1a;磁性材料的自旋玻璃理论和能量最小值函数 Hopfield 神经网络基本原理记忆存储&#xff08;训练&#xf…...

Docker —— 技术架构的演进

Docker —— 技术架构的演进 技术架构演进总结单机架构优点缺点总结 应用数据分离架构优点缺点总结 应用服务集群架构1. Nginx2. HAProxy3. LVS&#xff08;Linux Virtual Server&#xff09;4. F5 BIG-IP对比总结选型建议 读写分离/主从分离架构1. MyCat简介 2. TDDL&#xff…...

Docker与WSL2如何清理

文章目录 Docker与WSL2如何清理一、docker占据磁盘空间核心原因分析1. WSL2 虚拟磁盘的动态扩展特性2. Docker 镜像分层缓存与未清理资源 二、解决方案步骤 1&#xff1a;清理 Docker 未使用的资源步骤 2&#xff1a;手动压缩 WSL2 虚拟磁盘1. 关闭 WSL2 和 Docker Desktop2. 定…...

单片机嵌入式按键库

kw_btn库说明 本库主要满足嵌入式按键需求&#xff0c;集成了常用的按键响应事件&#xff1a;高电平、低电平、上升沿、下降沿、单击、双击、长按键事件。可以裸机运行&#xff0c;也可以配合实时操作系统运行。 本库开源连接地址&#xff1a;gitee连接 实现思路 本库采用C语…...

多多铃声 7.4| 拥有丰富的铃声曲库,满足不同用户的个性化需求,支持一键设置手机铃声

多多铃声是一款提供丰富铃声资源的应用程序&#xff0c;它拥有广泛的铃声曲库&#xff0c;涵盖各种风格和类型&#xff0c;能够满足不同用户的个性化需求。该应用程序支持分类浏览和热门榜单功能&#xff0c;让用户可以轻松找到当前最流行或自己感兴趣的铃声。此次分享的版本为…...

基于stm32的四旋翼飞行器:MPU6050讲解 · 上(参数读取)

大伙早上好&#xff0c;不知道大伙有没有飞行器情结&#xff0c;就是学习嵌入式就想做一个能飞的东西。小白兔不才&#xff0c;小白兔有啊&#xff0c;所以最近准备做一个简单的飞行器出来&#xff0c;如果失败了&#xff0c;那么这个系列就只能烂尾了&#xff0c;如果成功了&a…...

使用xlwings将excel表中将无规律的文本型数字批量转化成真正的数字

之前我写了一篇文章excel表中将无规律的文本型数字批量转化成真正的数字-CSDN博客 是使用excel自带的操作&#xff0c;相对繁琐。 今天使用xlwings操作&#xff0c;表格如下&#xff08;有真正的数字&#xff0c;也有文本型数字&#xff0c;混在在一起&#xff09;&#xff1…...

linux netlink实现用户态和内核态数据交互

1&#xff0c;内核态代码 #include <linux/module.h> #include <linux/netlink.h> #include <net/sock.h> #define NETLINK_TEST 31 struct sock *nl_sk NULL; static void nl_recv_msg(struct sk_buff *skb) { struct nlmsghdr *nlh; int pid; …...

学习黑客安全基础理论入门

准备安全课程内容 你已安装Kali和相关工具&#xff0c;并希望从基础开始学习安全。为了使课程更加互动&#xff0c;我会提供有趣的文本&#xff0c;并结合可视化内容&#xff0c;可能还会提供一些参考链接。内容方面&#xff0c;我会根据最新的中国网络安全法律作出更新&#…...

探索内容智能化的关键解决方案

北京先智先行科技有限公司拥有三款旗舰产品&#xff0c;分别是“先知大模型”、“先行AI商学院”以及“先知AIGC超级工场”。这三款产品在企业发展过程中扮演着重要角色。  北京先智先行科技有限公司围绕先知大模型等核心要素&#xff0c;构建了完备的业务体系。先知大模型私…...

学习黑客色即是空

二、Day 3 学习目标&#xff08;保真版&#xff09; 一句话目标&#xff1a; 学会用 Asset-Threat-Vulnerability-Risk (ATVR) 四件套给任何系统快速画“风险画像”&#xff0c;并能把它映射到黑客常说的 5 阶段攻击生命周期。 1. 30 分钟理论——ATVR 四件套 概念核心定义参考…...

【Java学习】关于springBoot的自动配置和起步依赖

关于springBoot的起步依赖&#xff1a;解决了spring框架中开发者配置依赖难的问题&#xff0c;各种依赖及版本的不同&#xff0c;可能引发不同的问题&#xff0c;使得开发者的精力大部分可能耗费在非业务代码中。所以springBoot起步依赖解决了各种依赖难的配置问题。 起步依赖…...

【LLaMA-Factory实战】1.3命令行深度操作:YAML配置与多GPU训练全解析

一、引言 在大模型微调场景中&#xff0c;命令行操作是实现自动化、规模化训练的核心手段。LLaMA-Factory通过YAML配置文件和多GPU分布式训练技术&#xff0c;支持开发者高效管理复杂训练参数&#xff0c;突破单机算力限制。本文将结合结构图、实战代码和生产级部署经验&#…...

【Mytais系列】介绍、核心概念

MyBatis 是一款优秀的 持久层框架&#xff0c;它通过简化 JDBC 操作、提供灵活的 SQL 映射能力&#xff0c;成为 Java 开发中处理数据库交互的核心工具之一。以下是 MyBatis 的核心框架和概念解析&#xff1a; 一、MyBatis 框架概述 1. 核心定位 作用&#xff1a;将 Java 对象…...

Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录

注&#xff1a;本文为 “Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Vivado 开发流程&#xff08;手把手教学实例&#xff09;&#xff08;FPGA&#xff09; 不完美先生 于 2018-04-…...

PowerShell从5.1升级到7.X

文章目录 环境背景安装PowerShell 7.X其它启动PowerShell 5.1和7.X$PSVersionTable.PSVersion启动PowerShell 5.1时强制启动7.X 参考 环境 Windows 11 专业版 背景 PowerShell 5.1是Windows内置的&#xff0c;发布时间是2016 年。现在PowerShell版本已经到了7.5.1&#xff0…...

域名与官网的迷思:数字身份认证的全球困境与实践解方-优雅草卓伊凡

域名与官网的迷思&#xff1a;数字身份认证的全球困境与实践解方-优雅草卓伊凡 一、官网概念的法律与技术界定 1.1 官网的实质定义 当卓伊凡被问及”公司域名就是官网吗”这一问题时&#xff0c;他首先指出&#xff1a;”这相当于问’印着某公司logo的建筑就是该公司总部吗’…...

Vue实现成绩增删案例

Vue实现成绩增删案例 案例功能需求案例实现实现思路完整代码功能演示 案例小结 案例功能需求 1.通过vue渲染数据&#xff0c;将成绩的相关信息显示出来&#xff08;学号&#xff0c;学科&#xff0c;成绩&#xff09; 2.能够增加相关的成绩信息 3.能够删除相关的成绩信息 4.能…...

开源项目实战学习之YOLO11:ultralytics-cfg-models-rtdetr(十一)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1. __init__.py2. model.py3. predict.py4. train.py5. val.py ultralytics-cfg-models-rtdetr 主要与 Ultralytics 库中 RTDETR&#xff08;实时目标检测模型&#xff0c;R…...

【Bootstrap V4系列】学习入门教程之 组件-按钮(Buttons)

Bootstrap V4系列 学习入门教程之 组件-按钮&#xff08;Buttons&#xff09; 按钮&#xff08;Buttons&#xff09;一、示例二、可用作按钮的 HTML 标签三、带轮廓线的按钮四、按钮的尺寸五、活动状态六、禁用状态七、按钮插件切换状态Checkbox and radio buttons &#xff08…...

【java八股文】深入浅出synchronized优化原理

&#x1f50d; 开发者资源导航 &#x1f50d;&#x1f3f7;️ 博客主页&#xff1a; 个人主页&#x1f4da; 专栏订阅&#xff1a; JavaEE全栈专栏 synchronized优化原理 synchronized即使悲观锁也是乐观锁&#xff0c;拥有自适应性。 jvm内部会统计每个锁的竞争激烈程度&…...

裴蜀定理及其证明

裴蜀定理 对于所有整数 a a a和 b b b&#xff0c;存在&#xff1a; g c d ( a , b ) a x b y gcd(a,b)axby gcd(a,b)axby 并且 a x b y axby axby一定是 g c d ( a , b ) gcd(a,b) gcd(a,b)的倍数。 证明 定义一个集合&#xff1a; { a x b y &#xff5c; a x b y &…...

单片机嵌入式CAN库

kw_can库说明 本库是针对CAN类型数据的收发设计&#xff1a; 主要应用于大数据量&#xff08;数据处理速度高于缓存CAN_RTX_FIFO_SIZE大小&#xff09;接收不丢包可快速进出接收中断可跨线程调用发送接口。 本库开源连接地址&#xff1a;gitee连接 实现思路 本库采用C语言…...

基于 JSP 和 Servlet 的数字信息分析小应用

Java Web 实验&#xff1a;基于 JSP 和 Servlet 的数字信息分析小应用 一、实验目的 实现一个简单的 Java Web 应用&#xff0c;通过 JSP 表单收集用户输入的文本信息&#xff0c;提交至 Servlet 分析其中是否包含数字&#xff0c;并返回结果。掌握 JSP 与 Servlet 的协同工作…...

从零认识阿里云OSS:云原生对象存储的核心价值

引言 在云计算时代&#xff0c;海量数据的存储与管理成为企业数字化转型的关键命题。阿里云对象存储OSS&#xff08;Object Storage Service&#xff09;作为云原生的分布式存储服务&#xff0c;凭借其独特的架构设计和丰富的功能矩阵&#xff0c;正在成为企业构建数据湖、管理…...

2025年深圳杯数学建模(东三省)B题【颜色转换】原论文讲解

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025年深圳杯数学建模&#xff08;东三省&#xff09;B题【颜色转换】完整的成品论文。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 一、问题重述 二&#xff0e;问题分析 2.1问题一 2.2问…...

开源语音合成和转换项目

开源语音合成和转换项目 大模型出来以后&#xff0c;语音合成和转换方面也有了很大的变化。在语音转换文字方面有Whisper、SeamlessM4T等&#xff1b;在语音合成方面有ChatTTS&#xff08;中英文&#xff09;、Orpheus TTS&#xff08;仅仅支持英文&#xff09;、Amphion&…...

考研408《计算机组成原理》复习笔记,第二章计算机性能

一、计算机各项性能指标 1、计算机系统整体的性能指标&#xff1a; 从宏观上看&#xff0c;整个计算机是由软件硬件共同性能决定的&#xff0c;但是【最主要的决定性的影响】还是来自于【硬件】 因为计算机组成原理主要讲【硬件】&#xff0c;那么我们也仅考虑【硬件性能】 2…...

智能决策支持系统的基本概念与理论体系

决策支持系统是管理科学的一个分支&#xff0c;原本与人工智能属于不同的学科范畴&#xff0c;但自20世纪80年代以来&#xff0c;由于专家系统在许多方面取得了成功&#xff0c;于是人们开始考虑把人工智能技术用于计算机管理中来。在用计算机所进行的各种管理中&#xff0c;如…...

什么是运算符重载

运算符重载&#xff0c;就是对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型&#xff0c;本质上是函数重载。以下为您详细介绍&#xff1a; 实现原理与方式 - 原理&#xff1a;把指定的运算表达式转化为对运算符函数的调用&#xff0…...

自定义Dockerfile,发布springboot项目

(1) 上传jar包 把hello项目打成一个可执行的jar包 hello-1.0-SNAPSHOT.jar&#xff0c;把这个jar包上传到linux中 (2) 创建文件&#xff0c;文件名my_hello&#xff08;就是一个Dockerfile&#xff09;&#xff0c;内容如下 #1.定义父镜像(定义当前工程依赖的环境)&#xff1a;…...

什么是多租户系统

随着云计算和 SaaS&#xff08;Software as a Service&#xff09;模式的普及&#xff0c;多租户架构&#xff08;Multi-Tenant Architecture&#xff09;成为 SaaS 产品设计中的核心模式之一。多租户架构允许多个用户&#xff08;租户&#xff09;共享同一套基础设施和应用&am…...

摩尔缠论课程合集完整版核心课程前置课程圈子问答星球圈子摩尔缠论三个阶段

一、教程描述 这是一套摩尔缠论课程合集&#xff08;完整版&#xff09;&#xff0c;内容非常系统并且极为全面&#xff0c;包括视频、图片和文档等不同文件类型&#xff0c;摩尔缠论共有三个版本&#xff0c;有些类似软件版本迭代&#xff0c;后一版本是前一版本的升级和进化…...

java学习之数据结构:三、八大排序

主要介绍学过的各种排序算法 目录 1.插入排序 1.1直接插入排序 1.2希尔排序 2.选择排序 2.1直接选择排序 2.2堆排序 3.交换排序 3.1冒泡排序 3.2快速排序 4.归并排序 5.基数排序 1.插入排序 1.1直接插入排序 基本思想&#xff1a;就是将待排序的数据按照其元素值的…...

Docker Compose:服务编排:批量管理多个容器

通过docker compose进行容器批量管理&#xff1a;一次性启动四个容器&#xff08;nginx&#xff0c;tomcat&#xff0c;redis&#xff0c;mysql&#xff09; &#xff08;1&#xff09; 创建docker-compose目录 mkdir ~/docker-compose cd ~/docker-compose &#xff08;2&…...

微服务设计约束

相较于单体应用&#xff0c;微服务架构在提升开发、部署等环节灵活性的同时&#xff0c;也提升了在运维、监控环节的复杂性。结合实践总结&#xff0c;微服务架构的设计有以下四条设计约束遵循&#xff1a; (1)微服务个体约束 一个设计良好的微服务应用&#xff0c;所完成的功…...