导语

分布式集群限流是保障云服务高可用性的核心技术手段,其意义不仅在于防止系统过载,更是构建弹性架构、优化资源效率、实现业务可持续性的关键策略。未来,随着边缘计算和 Serverless 的普及,限流技术将进一步与底层基础设施深度融合,成为构建下一代高可用架构的核心基石。

腾讯云 TDMQ RabbitMQ Serverless 版作为一款极致弹性、高性能且高可靠的消息中间件,通过提供稳定低延迟的消息服务,助力企业实现系统异步解耦并高效应对海量消息堆积。然而,在高并发、大流量的实际业务中,如何科学分配资源、规避系统过载风险,已成为保障服务稳定性的关键。为此,腾讯云 TDMQ RabbitMQ Serverless 版引入了集群级别的分布式限流机制,通过动态调控集群的发送与消费速率,确保集群在高负载下仍能稳定运行。

本文将深度剖析腾讯云 TDMQ RabbitMQ Serverless 版的限流机制,涵盖限流策略设计、触发机制及底层实现逻辑。通过真实场景案例解析与实践指南,系统讲解如何通过客户端优化来降低限流影响,同时帮助客户精准掌握集群限流相关服务端配置技巧,有效规避因流控策略不当引发的业务中断风险,全面提升高并发场景下的系统稳定性与可靠性。

概要设计

分布式限流的必要性

资源瓶颈的不可预测性

在分布式系统中,单节点流量可能因负载均衡策略(如 Round-Robin)不均导致倾斜。例如,某台服务器因硬件故障触发重试风暴,流量突增300%,若无全局视角的限流,可能引发级联雪崩。

长尾延迟的放大效应

当某服务节点响应延迟升高(如磁盘刷写延迟增大),后续请求堆积导致线程池耗尽,触发上游重试,形成恶性循环。

突发流量冲击

秒杀活动、热点新闻等场景下,流量可能在毫秒级陡增数十倍。例如,某电商平台大促期间,订单服务 QPS 从5k飙升至80k,若未通过分布式限流拦截异常流量,核心计算资源将被瞬间打满,导致服务不可用。

TDMQ RabbitMQ Serverless 版限流规则

腾讯云 TDMQ RabbitMQ Serverless 版为超大规模、低时延、高可用性要求的在线业务提供专业级消息服务。客户端通过 RabbitMQ SDK 与 TDMQ RabbitMQ Serverless 版集群建立长连接,实现高效的消息收发操作,同时动态占用集群的计算、存储及网络带宽等关键资源。在此背景下,为确保消息服务的高性能与稳定性,在应对高并发、大流量场景时,必须对集群的负载水位进行精细化管理。 基于集群的资源配置上限,服务端支持动态调控客户端的每秒消息发送与消费能力(TPS),确保系统在高负载下依然保持稳定运行。

为实现资源隔离与灵活适配的双重目标,系统对发送消息与消费消息的 TPS 配额进行独立分配,并支持用户按需配置配额比例,从而实现精细化资源管理与业务场景的精准匹配(默认配额比例为1 : 1 也即50%)。业务可以根据实际的收发比例进行调整,可调整的收发消息比例范围在20%-80%(服务端支持动态调整该区间)之间。

TDMQ RabbitMQ Serverless 版限流行为

腾讯云 TDMQ RabbitMQ Serverless 版采用 Fail-Fast 限流机制,即当客户端请求速率触及预设上限时,服务端会即时返回错误响应。在响应时间敏感的在线业务场景中,该机制可使客户端实时感知限流事件并主动介入处理,从而有效避免因资源竞争导致的端到端时延长尾,保障业务连续性与系统稳定性。

以 1000TPS 规格的基础集群为例(假设收发 TPS 比例为1:1 也即50%),客户端视角下的限流行为:

说明发送消息限流消费消息限流
触发限流情景所有连接该集群的发送客户端每秒最多可发送 TPS 总和为 500 条,发送速率达到限制后,超限的发送请求会失败。所有连接该集群的消费客户端每秒最多可消费 TPS 总和为 500 条,消费速率达到限制后,消息的消费延迟会增加。
触发限流时 SDK 日志关键词com.rabbitmq.client.AlreadyClosedException: channel is already closed due to channel error; protocol method: #method<channel.close>(reply-code=530, reply-text=[requestId: 3143682333552716694] Action: pub rate limited by cluster on instance:xxx reason:PublishMessage, class-id=60, method-id=40)消费超过阈值以后,客户端使用 BasicGet 拉取消息时,会出现:com.rabbitmq.client.AlreadyClosedException: channel is already closed due to channel error; protocol method: #method<channel.close>(reply-code=530, reply-text=[requestId: 31436823332424324] Action: BasicGet rate limited by cluster rate limiter vhost: xxx. queue: xxx.当客户端使用 BasicConsume 消费消息时,服务端会抑制向客户端 DeliverMessage 的速率,客户端不会感知到明显的 Channel 断开的错误,整体表现为类似 AMQP 协议消费者 QOS 的行为,会抑制推送到消费者消息的速率,此时消费延迟会增加,可以通过调整限流比例或者增大购买的 TPS 来解决。消费的总 TPS 主要由 BasicGet 和 DeliverMessage 的调用 TPS 次数共享。
触发限流时 SDK 重试机制客户端 SDK 业务侧需要处理连接断开的行为,需要对发送错误被限流的消息重新建立 Channel 连接然后进行发送重试。客户端 SDK 业务消费侧会感知到延迟增加。若使用拉取 BasicGet 拉取消息,会感知到 Channel 连接断开,需要业务上主动重试。

详细设计与实现

架构设计

腾讯云 TDMQ RabbitMQ Serverless 版采用双模式限流架构,兼顾节点级保护与集群级协同:

单机限流(Node-Level Throttling)

用于节点级资源保护,通过限制 CPU、内存、线程等关键资源的使用,防止单节点因过载导致服务不可用。

分布式限流(Cluster-Level Throttling)

基于集群全局视角,通过多节点流量协同管理,保护共享存储资源(如 Broker)及后端系统稳定性。该模式通过使用分布式限流系统实现。

限流实现

腾讯云 TDMQ RabbitMQ Serverless 版通过在计算层 (TDMQ RabbitMQ Serverless 版集群)接入分布式限流系统实现集群级读写流量控制,其核心机制是:TDMQ RabbitMQ Serverless 版集群节点在处理 BasicPublish / BasicGet / DeliverMessage 请求前,需通过集成的限流 SDK 向限流 Server 异步上报与申请 Token。

生产端限流:若 BasicPublish 申请失败,则立即拒绝生产消息请求并返回错误。
消费端限流:若 BasicGet 申请失败,则立即拒绝拉取消息请求并返回错误。若 DeliverMessage 申请失败,则抑制推送到消费者的消息速率,实现消费端不断连接的流控,此时类似于 RabbitMQ 开源的实现,此时该消费者处于 Flow 状态。

TDMQ RabbitMQ Serverless 版集群内部集成限流 SDK,该 SDK 提供 Token 申请 API,并负责与限流 Server 通信,通过这种集中式 Token 管理实现对核心存储层 (底座 Broker 集群) 的保护。

限流实现难点一:如何平衡性能与精度

使用 TDMQ RabbitMQ Serverless 版的各类在线业务通常对时延比较敏感,如果计算层节点处理每次读写请求都执行一次 Limiter RPC 调用(SDK -> Server)的话,虽然 Limiter Server 内部处理耗时几乎可以忽略,但两次 RPC 的网络 IO 耗时对消息端到端时延的影响是不能忽视的。

实际上从服务端的角度看, TDMQ RabbitMQ Serverless 版执行限流的主要目的是防止核心存储层过载,而非追求 100% 精准的流量控制,即 SDK 与 Server 之间的强同步并不是必须的。因此,为了在限流性能和限流精度之间取得平衡,Limiter 采用了一种【先消费后结算】的 Token 管理机制,Token 申请过程在限流 SDK 内部闭环,SDK 会周期性(周期大概在50ms以内,上报周期越短,限流越敏感)地向限流 Server 异步上报 Token 使用量并同步配额。

腾讯云 TDMQ RabbitMQ Serverless 版的限流机制通过以下四大核心特性,在保障系统稳定性的同时实现高性能与低时延的平衡:

  • 内存级处理,主链路零干扰

执行机制:限流判断为纯内存操作,不涉及外部 RPC 调用,确保消息处理流程完全不受阻塞。

性能优势:主链路延迟无感知,适用于对响应时间要求严苛的在线业务场景。

  • 先消费后结算,消除误限流风险

设计原理:采用异步 Token 核销机制,客户端可先执行操作,限流 SDK 后续异步周期性同步配额消耗。
效果保障:杜绝因限流判断延迟导致的正常请求被误拒,确保业务连续性。

  • 短暂超限容忍,资源缓冲池兜底

场景说明:在流量毛刺等突发场景中,可能出现瞬时配额超限,由于先消费后结算的机制导致。
容错机制:通过服务端资源预留 Buffer 吸收流量波动,避免因短暂超限触发系统风险。

  • 弹性容错设计,弱耦合架构保障可用性

故障降级策略:当限流 Server 服务异常时,系统自动切换至单机 Sentinel 组件实现基础单机限流功能。
依赖特性:对限流 Server 服务实现弱耦合架构,可以通过随时动态降级来避免限流 Server 服务异常导致的服务异常,确保分布式限流服务的高可用。

限流实现难点二:如何平滑限流毛刺

腾讯云 TDMQ RabbitMQ Serverless 版采用 TPS 作为集群规格单位,用于衡量集群的吞吐能力。例如,1000TPS 表示集群每秒可处理 1000 条 TPS(即综合生产、消费等操作的加权计算)。在分布式限流系统中,这一规格对应每秒分配 1000 个 Token,其中 “一秒”即为默认的限流计数周期,用于动态控制流量配额。

在使用限流服务的实际运维中发现:

短周期(如1秒)
优势:对流量波动敏感,可快速响应潜在过载风险;
缺陷:易因短暂毛刺误触限流,影响正常业务波动场景。

长周期(如10秒)
优势:容忍毛刺,降低误控率;
缺陷:服务端资源需承受更高瞬时冲击风险。

为平衡流量控制精度与用户体验,腾讯云 TDMQ RabbitMQ Serverless 版将默认限流计数周期从1秒调整为10秒。这样既降低了用户因毛刺导致的限流困扰,又通过利用少量的服务器预留资源 Buffer 来承载瞬时流量冲击,为高并发场景下的消息处理提供了可靠的支撑。

限流实现难点三:如何实现消费端限流

腾讯云 TDMQ RabbitMQ Serverless 版集群使用 AMQP 协议与客户端交互,然而 AMQP 协议中并没有定义很好的处理 Fail-Fast 限流错误的帧,因此在发送消息被限流的情况下,只能通过关闭 Channel 连接来通知到客户端,此时客户端会收到相应的 AlreadyClosedException 异常,然后业务需要通过重试来解决当前时间窗口内消息发送被限流的问题。

而在消费端限流的情况下,分为两种情况,AMQP 协议中支持两种消费模式,BasicGet(拉模式) 和 BasicConsume(推模式)。 此时对消费端的限流就需要考虑消费的连续性和延迟。针对 BasicGet 模式,是客户端发起的主动同步拉取消息的命令,此时客户端每一次拉取消息是可以直接感知到是否被限流的,更好的方式是通过关闭连接来让客户端感知到限流,从而让业务上通过重试来解决拉取当前时间窗口内消息消费被限流的问题。

但是针对 BasicConsume(推模式), 同时也是 AMQP 客户端最普遍的使用方式,考虑到客户端开启一个长连接监听相应队列上的消息,此时如果因为限流粗暴地关闭 Channel 连接, 此时的客户端往往不能实时感知到连接 Channel 断开,增加了客户端业务上处理的复杂度,同时消费侧重建 Channel 连接也会让消费流量充满毛刺和消费延迟增加。因此腾讯云 TDMQ RabbitMQ Serverless 版在推模式下使用消费抑制的方式来实现消费端限流,当消费 TPS 超过阈值时,会减少推送到客户端的频率,保证了在连接 Channel 不断开的情况下,消费流量的平稳,尽量减少因为限流导致的消费延迟。

客户端实践教程

规划集群限流负载

腾讯云 TDMQ RabbitMQ Serverless 版的限流机制旨在保障服务稳定性与可靠性。防止在集群高负载时出现服务响应长尾毛刺,最终导致请求成功率下降,业务受损等问题。因此,在接入时建议:客户侧需要提前规划集群负载,依据当前规模和未来趋势预测来充分评估业务 TPS, 如果业务流量具有波动特性,应以峰值 TPS 为准,根据相应的评估后的 TPS 购买相应规格的实例集群。

限流相关告警配置

腾讯云 TDMQ RabbitMQ Serverless 版默认接入了腾讯云监控的能力,可以利用腾讯云 TDMQ RabbitMQ Serverless 版控制台的监控告警能力实现对集群负载的实时观测,提前发现 TPS 水位风险并及时操作升配来避免触发限流导致业务受损。告警策略建议:

  1. 发送和消费 TPS 水位超过容量的 70% 时触发告警,提醒进行升配评估。
  2. 出现发送限流时触发告警,警告业务发送消息可能失败风险。

客户端限流异常处理

业务代码通过 RabbitMQ SDK 发送消息时,需要捕获包括限流错误在内的异常,并保存必要的上下文信息,以便人工介入恢复业务。当腾讯云 TDMQ RabbitMQ Serverless 版实例的 TPS 流量峰值超过腾讯云控制台所购买实例的 TPS 规格上限时,业务侧生产消费流量会被限流。

限流后的行为如下

腾讯云 TDMQ RabbitMQ Serverless 版服务端会返回错误码信息。

腾讯云 TDMQ RabbitMQ Serverless 版服务端关闭当前请求的 Channel 连接,代码中可以捕获异常并重新打开 Channel 连接,具体请参见错误码处理示例代码章节。

错误码信息
错误码:reply-code=530

错误信息:reply-text=[requestId: 3143682333552716694] Action: pub rate limited by cluster on instance:xxx reason:PublishMessage, class-id=60, method-id=40)

错误堆栈

Suppressed: com.rabbitmq.client.AlreadyClosedException: channel is already closed due to channel error; protocol method: #method<channel.close>(reply-code=530, reply-text=[requestId: 3143682333552716694] Action: pub rate limited by cluster on instance:amqp-autotest reason:PublishMessage, class-id=60, method-id=40)
at com.rabbitmq.client.impl.AMQChannel.processShutdownSignal(AMQChannel.java:437)
at com.rabbitmq.client.impl.ChannelN.startProcessShutdownSignal(ChannelN.java:295)
at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:624)
at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:557)
at com.rabbitmq.client.impl.ChannelN.close(ChannelN.java:550)
at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.lambda$close$0(AutorecoveringChannel.java:74)
at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.executeAndClean(AutorecoveringChannel.java:102)
at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.close(AutorecoveringChannel.java:74)

RabbitMQ AMQP Java SDK 业界使用的比较广泛,因此使用该 SDK 作为示例,RabbitMQ AMQP Java SDK 不会对限流错误进行自动重试,因此业务代码需要捕获异常并进行处理,示例代码如下:

private static final int MAX_RETRIES = 5; // 最大重试次数
private static final long WAIT_TIME_MS = 2000; // 每次重试的等待时间(以毫秒为单位)
private void doAnythingWithReopenChannels(Connection connection, Channel channel) {try {// ......// 在当前通道channel下执行的任何操作// 例如消息发送、消费等// ......} catch (AlreadyClosedException e) {String message = e.getMessage();if (isChannelClosed(message)) {// 如果通道已经关闭,关闭并重新创建通道channel = createChannelWithRetry(connection); // 在重连后可以继续执行其它操作// ......} else {throw e;}}
}
private Channel createChannelWithRetry(Connection connection) {for (int attempt = 1; attempt <= MAX_RETRIES; attempt++) {try {return connection.createChannel();} catch (Exception e) {System.err.println("Failed to create channel. Attempt " + attempt + " of " + MAX_RETRIES);// 检查错误, 若仍是被限流导致的关闭错误,则可以等待后继续重试// 也可移除本部分重试逻辑if (attempt < MAX_RETRIES) {try {Thread.sleep(WAIT_TIME_MS);} catch (InterruptedException ie) {Thread.currentThread().interrupt(); // 还原中断状态}} else {throw new RuntimeException("Exceeded maximum retries to create channel", e);}}}throw new RuntimeException("This line should never be reached"); // 理论上不会到达这里
}
private boolean isChannelClosed(String errorMsg) {// 判断是否包含channel.close报错,该报错代表通道已关闭。// 可能涵盖530,541等错误信息。if (errorMsg != null && errorMsg.contains("channel.close")) {System.out.println("[ChannelClosed] Error details: " + errorMsg);return true;}return false;
}

总结

腾讯云 TDMQ RabbitMQ Serverless 版通过分布式限流架构为在线业务提供高可用的消息服务保障。在分布式限流模式下,服务端通过集中式 Token 管理系统(限流Limiter)动态分配资源配额,防止因突发流量冲击导致核心存储层(底座 Broker 集群)过载来提高系统稳定性,同时采用 【先消费后结算】的异步处理模式,客户端在限流 SDK 内部闭环完成 Token 申请,避免阻塞主链路,确保限流调用接口低延时,限流 SDK 周期性同步 Token 消耗数据至限流 Server,最终平衡了限流精度与调用限流服务的性能开销。同时针对消费端的限流可以实现不断 Channel 连接,实现了消费端在限流毛刺与消费延迟之间的双重保证,此外,面对限流 Server 服务不可用的情况,系统能够自动动态降级为单机限流模式,确保客户端请求的连续性,保持对限流服务的弱依赖设计来实现系统解耦。

在实际应用与运维中,同时也需要客户业务方的配合,在接入腾讯云 TDMQ RabbitMQ Serverless 版服务时,业务方客户需要根据业务规模和未来趋势合理规划集群,预留足够的 TPS 配额以应对突发流量,防患于未然。同时腾讯云 TDMQ RabbitMQ Serverless 版提供了服务端完善的监控和告警,支持客户通过监控告警能力实时订阅集群负载,提前发现 TPS 水位风险并及时进行升配等操作。在客户端业务代码层面,需要捕获限流异常并处理,保证代码的健壮性,同时保存必要的上下文信息,以便人工查看相关日志最终介入来恢复业务。

通过本文对腾讯云 TDMQ RabbitMQ Serverless 版的限流机制的介绍与实践教程,相信读者对腾讯云 TDMQ RabbitMQ Serverless 版的限流机制有了更深入的理解,并能够在实际项目中灵活应用,最终为业务的高并发、大流量场景提供稳定的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86534.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86534.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86534.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

官方链接内容整理的 Spark-TTS Windows 安装完整流程

官方链接内容整理的 Spark-TTS Windows 语音克隆 安装完整流程 官方链接内容整理的 Spark-TTS Windows 安装完整流程&#xff1a; Spark TTS&#xff1a;基于大型语言模型的文本转语音模型 Spark-TTS 是一个先进的文本转语音系统&#xff0c;利用大型语言模型&#xff08;LLM…

Spring Cloud Config动态刷新实战指南

以下是利用 Spring Cloud Config + Bus 实现配置动态刷新的完整步骤和原理说明: 一、核心原理 消息总线机制 Bus 通过消息代理(如 RabbitMQ/Kafka)建立公共 Topic(默认 springCloudBus),当配置变更时,任一服务触发刷新请求,消息会广播至所有监听该 Topic 的服务实例,实…

Linux 修改密码教程

Linux 修改密码教程 Linux 系统中修改密码是非常常见的管理操作&#xff0c;无论是修改当前用户密码还是其他用户的密码&#xff0c;通常都可以通过终端完成。本文将详细介绍如何在 Linux 系统中修改密码&#xff0c;并包括修改其他用户密码的方法。 1. 修改当前用户密码 修改…

正则表达式详解:从基础到高级应用的全面指南

文章大纲 引言&#xff1a;什么是正则表达式&#xff1f; 在编程和文本处理领域&#xff0c;正则表达式&#xff08;Regular Expression&#xff0c;简称 regex&#xff09;是一种强大的工具&#xff0c;用于描述和匹配文本中的特定模式。它本质上是一种由字符和特殊符号组成…

flutter结合ai工具(其他语言通用)

一、为什么Flutter开发者需要免费AI工具&#xff1f; 1. 减少重复性编码 Flutter开发中&#xff0c;UI组件、网络请求、状态管理等代码高度重复&#xff0c;AI可自动生成这些代码。 示例&#xff1a;输入"创建一个Material Design风格的登录页面"&#xff0c;AI工具…

鸿蒙容器组件 Row 全解析:水平布局技术与多端适配指南

一、引言&#xff1a;Row 组件 —— 水平布局的核心引擎 在鸿蒙全场景应用开发中&#xff0c;Row 容器组件作为水平布局的标准载体&#xff0c;通过声明式语法实现子组件的有序水平排列。作为线性布局体系的重要组成部分&#xff0c;其简洁的属性体系与强大的适配能力&#xf…

基于 PCIe 架构的处理器系统

处理器系统A 在有些处理器系统中&#xff0c;没有直接提供PCI总线&#xff0c;此时需要使用PCIe桥&#xff0c;将PCIe链路转换为PCI总线之后&#xff0c;才能连接PCI设备 在这种结构中&#xff0c;RC由两个FSB-to-PCIe桥和存储器控制器组成。 FSB是Front Side Bus的缩写&…

Qt 与 Halcon 联合开发五:为何与如何将耗时算法移入子线程

在 Qt 应用程序开发中&#xff0c;界面响应速度直接影响用户体验。而在集成图像处理库如 Halcon 的项目中&#xff0c;耗时算法一旦运行于主线程中&#xff0c;极易造成界面卡顿甚至假死。本篇文章将围绕耗时算法必须移入子线程执行这一核心原则&#xff0c;结合 Qt 与 Halcon …

聚焦OpenVINO与OpenCV颜色通道转换的实践指南

颜色通道顺序问题&#xff1a;OpenVINO模型RGB输入与OpenCV BGR格式的转换 在计算机视觉任务中&#xff0c;框架间的颜色通道差异常导致模型推理错误。以下方法解决OpenVINO模型需要RGB输入而OpenCV默认输出BGR的问题。 理解核心差异 OpenCV的imread()函数遵循BGR通道顺序&a…

【软考高级系统架构论文】论企业集成平台的理解与应用

论文真题 企业集成平台 (Enterprise Integration Platform, EIP) 是支持企业信息集成的环境,其主要功能是为企业中的数据、系统和应用等多种对象的协同运行提供各种公共服务及运行时的支撑环境。企业集成平台能够根据业务模型的变化快速地进行信息系统的配置和调整,保证不同…

LabVIEW光谱仪设计

采用LabVIEW 开发平台&#xff0c;搭配品牌硬件构建光谱仪系统&#xff0c;实现光谱数据的高效采集、分析与显示&#xff0c;展现 LabVIEW 在仪器开发中的快速集成与灵活扩展能力。 ​ 应用场景 科研领域&#xff1a;用于材料光谱特性研究、光学实验数据分析&#xff0c;支持高…

Nginx配置文件介绍和基本使用

Nginx配置文件介绍和基本使用 Nginx 是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件代理服务器&#xff0c;由俄罗斯工程师 Igor Sysoev 开发&#xff0c;并于2004年首次公开发布。以轻量级、高并发能力、稳定性和低资源消耗著称。 主要功能 HTTP服务器&#xff1a;…

DataSophon 1.2.1集成Flink 1.20并增加JMX 监控

参考:datasophon集成Flink1.20.0 此大神有多篇集成其他服务的文章&#xff0c;建议关注一波 一、服务集成 flink 1.20 下载 1.构建压缩包&#xff1a; 1.1拷贝需要的包 tar -zxvf flink-1.20.0-bin-scala_2.12.tgz tar czf flink-1.20.0.tar.gz flink-1.20.0# 为了flink cdc…

RSYNC+IONTIFY数据实时同步

一、RSYNC简介 rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步&#xff0c;支持本地复制&#xff0c;或者与其他SSH、rsync主机同步。 二、rsync特性 rsync支持很多特性&#xff1a; 可以镜像保存整个目录树和文件系统可以很容易做到保持…

吉林大学软件工程期末复习整理

概述 22级软件工程考试细节及复习相关问题见下面这篇帖子&#xff0c;作者自己复刻了一版真题 吉林大学软件工程2025年期末真题&#xff08;回忆复刻版&#xff09;-CSDN博客 下面是作者复习时整理的笔记&#xff0c;放到csdn之后序号排版稍微有点乱 21级考试情况可以参考学…

chili3d笔记23 正交投影3d重建笔记4 点到线2

从俯视图到主视图就这两条线有问题&#xff0c;比想象的效果好 原图 两条斜线变成了4条横线 经典少一根线 好了但是不知道为什么好了 import { Logger, PubSub } from "chili-core"; import DxfParser, { ILineEntity } from dxf-parser; class Cluster {lines: [num…

LDO的自放电功能

LDO&#xff08;低压差线性稳压器&#xff09;的自放电功能&#xff08;Discharge Function 或 Active Discharge&#xff09;是一种在关闭输出时主动释放输出端残留电荷的机制。以下是其关键点&#xff1a; 1. 自放电功能的作用 快速放电&#xff1a;当LDO被禁用&#xff08;如…

Ingress-Nginx简介和配置样例

Ingress-Nginx 是 Kubernetes 中一个基于 Nginx 的 Ingress 控制器&#xff0c;用于管理对集群内服务的 HTTP/HTTPS 访问。它是 Kubernetes Ingress 资源的实现之一&#xff0c;通过配置 Nginx 反向代理和负载均衡器&#xff0c;提供路由规则、SSL/TLS 终止、路径重写等高级功能…

Java+LangChain实战入门:深度剖析开发大语言模型应用!

在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;如GPT系列&#xff09;正改变着我们构建应用的方式。但如何将这些先进模型无缝集成到企业级Java应用中&#xff1f;这正是LangChain框架的强项——它简化了语言模型的调用、链式处理和上下文管理&#xff0c;让开发…

论文笔记:Large language model augmented narrative driven recommendations

RecSys 2023 代码&#xff1a;iesl/narrative-driven-rec-mint: Mint: A data augmentation method for narrative driven recommendation. 1 intro 尽管基于历史交互的数据能够有效地提供推荐&#xff0c;但用户在请求推荐时&#xff0c;往往只是对目标物品有一个模糊的概念…