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

阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化

作者:裘文成(翊韬)

摘要

随着企业全球化业务的扩展,如何高效、经济且可靠地将分布在海外各地的应用与基础设施日志统一采集至阿里云日志服务 (SLS) 进行分析与监控,已成为关键挑战。

本文聚焦于阿里云高性能日志采集 Agent(iLogtail/LoongCollector)在海外场景下的应用,深入探讨了如何为不同部署环境(包括本地机房、跨云平台及阿里云环境)设计最佳的网络接入链路。我们优先推荐 LoongCollector,因为它能提供更优的可靠性,尤其是在多目标发送场景下。文中详细分析了多种网络方案,涵盖公网直连、全球加速 (GA) 优化、阿里云内网以及专线 /CEN/VPN 接入等方式。

此外,本文还重点介绍了成本优化策略,包括利用 CloudLens for SLS 进行用量诊断,以及将公网链路迁移至私网以降低成本。同时,详细拆解了两种核心的多目标发送配置:一是通过 Agent 双写实现跨地域容灾(数据冗余),二是实现多地域/多目标日志分发(按需路由)。

本文旨在为企业构建稳定、低成本、高可用的全球日志系统提供全面的实践指导和配置参考。

一、 背景与挑战

随着企业全球化业务的扩展,日志数据作为可观测性、故障排查及合规审计的基石,其统一采集与分析变得至关重要。然而,将分布于全球(包括本地机房、其他云厂商、阿里云海外区域)的日志统一接入阿里云 SLS 的过程中,企业普遍面临以下关键挑战,这些挑战直接关系到接入链路的选择、整体成本的控制以及系统的高可用性保障:

  • 链路质量与稳定性挑战

    • 海外公网链路质量参差不齐,普遍存在高延迟、高抖动和丢包问题,严重影响日志传输的实时性与完整性,对接入链路的可靠性与效率提出严峻考验。如何选择和优化网络路径,是保障数据稳定传输的首要难题。
  • 成本控制压力

    • 海量日志通过公网传输产生的出流量费用是主要的成本负担之一,尤其在多云和全球化部署下,如何有效降低数据传输成本成为迫切需求。不合理的链路选择或缺乏优化策略会导致成本失控。
  • 高可用与容灾需求

    • 日志系统作为关键基础设施,其可用性至关重要。单一的采集链路或目标 SLS Project 存在单点故障风险时,如何通过多目标发送实现跨地域/跨可用区容灾,保障日志数据在各种故障场景下不丢失、可持续服务,是确保业务连续性的核心要求。
  • 多环境与合规复杂性

    • 日志源分布在本地数据中心、多云环境及阿里云不同地域,增加了 Agent 统一部署、配置和管理的复杂度。同时,数据跨境传输还需满足当地数据安全合规要求(如数据本地化等),为链路设计和数据处理增加了额外的约束。

二、 核心采集利器:iLogtail/LoongCollector 优势

在应对上述挑战时,选择合适的采集 Agent 至关重要。iLogtail 和 LoongCollector 作为阿里云官方推荐的 Agent,都具备强大的基础能力,但在可靠性和某些高级特性上,LoongCollector 提供了进一步的增强。

两者共同的核心优势:

  • 轻量高效:C++ 核心,资源占用低(CPU、内存),对业务服务器性能影响极小。
  • 全能采集:支持文件日志、容器日志 (Stdout/Stderr, 文件)、Syslog、HTTP 等多种数据源。
  • 强大处理 (Processor 插件):支持在 Agent 端对数据进行解析 (JSON, Regex, 分隔符等)、过滤、脱敏等预处理,从源头减少无效数据传输,优化成本和后端处理效率。
  • 发送压缩:内置支持 lz4 压缩算法,能显著降低网络传输流量。
  • 高可靠传输:具备本地磁盘缓存、断点续传、失败重试、流量整形等机制,有效应对网络波动,保障数据“不丢不重”
  • 灵活输出与多目标:支持将数据发送至 SLS,且单个 Agent 实例可配置将同一份数据同时发送到多个目标 SLS Endpoint(用于双写容灾或迁移)。
  • 云原生与生态集成:与阿里云 ECS、容器服务 ACK/ASK 等深度集成,支持 K8s 环境下的便捷部署 (DaemonSet, Sidecar) 和配置管理 (CRD)。

推荐优先选择 LoongCollector 的理由:

  • 增强的可靠性 - 网络异常隔离:
    • LoongCollector 相比 iLogtail 具有更高的可靠性。一个显著的优势是支持发送侧网络异常隔离机制。
    • 当配置 Agent 向多个地域(例如新加坡和杭州)的 SLS Endpoint 发送日志时,如果其中一个目标地域(比如新加坡)的网络连接发生异常(超时、中断等),LoongCollector 会智能地隔离通往该异常地域的数据发送链路。
    • 这意味着,向新加坡发送失败不会阻塞或影响向杭州或其他正常地域的数据发送。这极大地提升了多目标输出场景下的整体数据传输稳定性和时效性,避免了“一点故障影响全局”的问题。

结论:虽然 iLogtail 仍然是一款功能强大的 Agent,但对于有高可靠性要求、特别是涉及多地域日志发送等复杂场景的用户,强烈建议优先选用 LoongCollector 以获得其更优的稳定性和网络容错能力。目前 LoongCollector 正在灰度发布中,如有更多的疑问,可以工单咨询我们。

  • 版本推荐:
    • iLogtail:推荐 2.1.7 版本及以上
    • LoongCollector:推荐 3.0.9 版本及以上

三、 链路设计:构建高效稳定的数据通道

根据业务部署位置、网络条件、成本预算以及对延迟、稳定性和安全性的要求,可以选择不同的接入链路方案:

  • 方案一:直连公网 Endpoint

    • 架构:海外服务器 (Agent) -> 公网 -> SLS 公网 Endpoint (目标 Region)
    • 优点:配置最简单,无需额外购买阿里云网络产品。
    • 缺点:成本中(需要公网流量费用),网络质量差(跨国延迟高、不稳定),安全性依赖 HTTPS。
    • 适用场景:可接受网络波动和延迟的场景。
  • 方案二:通过全球加速优化公网

    • 架构:海外服务器 (Agent) -> 公网 -> 就近阿里云 PoP (GA 加速接入点) -> 阿里云骨干网 -> SLS Endpoint (目标 Region, 特别是内地)
    • 优点:显著改善跨国公网传输质量,降低延迟和丢包率,部署相对简单(在 SLS 控制台开启传输加速,并修改Agent的data endpoint为全球加速域名即可)。
    • 缺点:成本高,增加全球加速流量费用,但可能因减少源端重传、提高效率而间接优化总成本。
    • 适用场景:需要远距离(尤其跨境到中国内地)日志传输;对日志实时性、稳定性有较高要求的业务。
    • 配置文档请参考管理传输加速【1】和如何开启网络传输加速服务【2】
  • 方案三:阿里云上服务同 Region 私网接入 (最优成本与性能)

    • 架构:海外阿里云服务器 (Agent) -> 阿里云 VPC 网络 -> SLS 私网 Endpoint (同 Region)
    • 优点:网络质量最佳(低延迟、高稳定),安全性最高(数据不出 VPC),成本最低(同 Region 无公网费用)。
    • 缺点:要求业务服务器和目标 SLS Project 必须部署在同一阿里云 Region 的 VPC 内。
    • 适用场景:强烈推荐所有部署在阿里云上且日志需采集到同 Region SLS 的业务。
  • 方案四:混合云/多云场景下,通过专线/云企业网 (CEN) 接入私网

    • 架构:海外服务器 (Agent in IDC/其他云 VPC) -> 物理专线/VPN/CEN -> 阿里云 VPC -> SLS 私网 Endpoint (目标 Region)
    • 优点:提供私网隔离的安全保障,网络质量和稳定性优于公网及 GA(尤其是专线)。
    • 缺点:需要客户通过云企业网CEN【3】、高速通道【4】等产品提供的功能将网络打通,成本最高(涉及专线租赁费、CEN 实例费、带宽包或流量费),配置部署相对复杂,周期较长。
    • 适用场景:本地数据中心 (IDC) 或多云环境需要与阿里云建立高质量私网连接;日志量巨大,对实时性、稳定性、安全性要求极高的核心业务;预算充足。
    • 跨地域内网访问需要提工单支持【5】

方案对比总结表:

四、成本优化策略:节省每一分费用

除了选择合适的网络链路,还可以通过以下策略进一步优化成本:

4.1 利用 CloudLens for SLS 诊断日志量与公网流量异常

随着业务的持续增长,接入 SLS 的日志数据量通常会随之上升。然而,有时可能会出现预期之外的日志量或公网流量激增,这往往源于应用程序打印了过多冗余信息、或者采集配置不够精确(例如,采集了非必要的调试日志、日志存在重复采集或采集路径范围过大采集了无关日志文件)。这些情况不仅可能导致不重要的日志占据了大量资源,还会显著增加相关的网络传输和存储成本。

为了有效监控和诊断此类问题,阿里云日志服务 SLS 提供了 CloudLens for SLS 功能。这项服务为您提供了一个集中化的视图,能够清晰展示您账号下所有 Project 的核心资源消耗指标,包括:

  • 日志写入量:

    • 各 Project 的实时及历史写入数据量。
  • 公网流出流量:

    • 通过公网 Endpoint 写入产生的流量。
  • 全球加速流量:

    • 若使用了全球加速优化链路,此项会显示相关流量。

通过分析 CloudLens 提供的报表 (查看 CloudLens 数据报表【6】),您可以快速定位到消耗量异常(过高或突增)的 Project 或特定时间段。这有助于您及时发现并排查不符合预期的日志写入行为,例如:

  • 识别是哪个业务或哪类日志导致了流量高峰。
  • 评估采集配置是否需要优化(如调整采集路径)。
  • 判断是否存在应用层面的日志打印问题。

基于这些洞察,您可以采取针对性的优化措施,控制成本并提升资源使用效率。如果您在分析 CloudLens 数据或排查具体问题时需要进一步协助,欢迎随时通过提交工单联系阿里云技术支持。

参考文档:如何使用 CloudLens for SLS 可以帮助您分析资源用量【7】和查看 CloudLens for SLS 数据报表 【8】

4.2 数据压缩,降低网络带宽消耗

日志数据,尤其是原始文本日志,往往包含大量冗余信息,直接通过网络传输会消耗可观的带宽资源。特别是在跨地域、跨国或通过公网传输日志的场景下,高昂的网络带宽成本是日志系统总体拥有成本 (TCO) 的重要组成部分。为了有效缓解这一问题,阿里云日志服务 (SLS) 的采集 Agent LoongCollector 和 iLogtail 均支持在数据发送前进行客户端压缩。

核心压缩技术:LZ4 算法

  • 高速与高效:主要采用 lz4 压缩算法。lz4 是一种高速无损压缩算法,其核心优势在于提供了极快的压缩和解压速度,同时对客户端(即日志产生的服务器)的 CPU 资源消耗相对较低。这使其非常适合日志采集这种需要高吞吐量、低延迟的实时数据流处理场景,避免对业务应用的性能产生显著影响。
  • 默认启用了 lz4 压缩功能: 用户无需进行额外配置,即可自动享受数据压缩带来的网络带宽节省。
  • 压缩率:通常可以达到 5 到 10 倍 的压缩率。
  • 效果监控:用户可以通过阿里云提供的 CloudLens for SLS 功能,查看日志项目 (Project) 的写入流量压缩比等相关指标。这提供了一个直观的方式来量化压缩功能带来的实际网络带宽节省效果。

4.3 优化日志上报:过滤非必要数据以降低成本与提升效率

在许多场景下,并非所有产生的日志都具有同等的分析价值。例如,调试(DEBUG)级别的日志在生产环境中可能并非必需,或者某些频繁打印的健康检查日志对核心业务分析意义不大。将这些低价值或冗余的日志上传至 SLS 会不必要地增加网络传输成本、SLS 索引和存储费用,并可能干扰关键信息的快速定位。

iLogtail 和 LoongCollector 提供了强大的 Processor 插件机制,允许在 Agent 端对采集到的日志进行预处理和过滤,从而在数据发送前就丢弃掉不需要的日志条目。

您可以根据具体需求,灵活选用以下方法在 Agent 端实现日志过滤:

  • 使用 Processor 过滤插件:

    • 利用 iLogtail 或 LoongCollector 提供的原生过滤插件或扩展过滤插件,您可以配置匹配规则,过滤无用的日志。
  • 基于SPL实现:

    • 对于一些复杂的过滤逻辑,可以使用 SPL 编写处理逻辑,将解析与过滤步骤结合起来。

参考文档:

  • 原生插件:过滤处理【9】
  • 扩展插件:过滤日志【10】
  • 基于SPL实现正则解析+过滤处理【11】

4.4 平滑迁移:阿里云上服务日志采集从公网切换至私网链路

对于历史上使用公网接入,现希望切换到成本更低、性能更优的私网的场景,往往需要平稳过渡,避免监控中断。这通常涉及到在迁移期间配置 Agent 进行双写。本节将围绕以下两个典型场景展开详细说明。

  • 场景1 (日志本地化):原先所有地域日志集中采集到 Project A,现需将 Region B 的日志迁移至同 Region 的 Project B。迁移期间,Region B 的 Agent 同时向 Project A (跨公网/GA) 和 Project B (同 Region 私网) 写入,保证监控连续性。待 Project B 稳定运行后,停止向 Project A 的写入。
  • 场景2 (业务区域迁移):业务从 Region A 迁移至 Region B。迁移期间,部分服务仍在 A,部分已在 B。为保证统一监控视图(例如在 Project B),Region A 的 Agent 需要配置双写:一份写入 Project A (同 Region 私网),一份写入 Project B (跨公网/GA)。待业务完全迁移至 B 后,停止向 Project A 的写入(或反之,取决于最终监控中心)。

具体步骤可以参考【最佳实践】还在跨境传输数据?数据跨境合规治理实践— Logtail 数据本地化无损迁移方案【12】

五、多地域日志分发:将不同日志发送到不同目的地

除了为容灾或迁移将同一份数据发送到多个地域(如第 4.3 和第五部分所述的双写场景)之外,还存在另一种常见需求:

不同日志发送到不同目的地:日志将来自同一台服务器或 K8s 节点的不同类型或不同来源的日志,分别发送到位于不同地域的 SLS  中进行处理和分析。

例如:

  • 业务机器组在新加坡
    • 将系统日志(如 /var/log/messages)中心化采集到统一运维监控的 Project A(位于上海地域)。
    • 将业务应用日志(如 app.log)采集到业务所在 Region 的 Project B(位于新加坡地域)。

iLogtail 和 LoongCollector 完全支持这种场景,核心实现方式是为同一个 Agent 实例配置多个 endpoint,具体步骤可以参考以下步骤。

ECS

  1. 假设 ECS 机器在新加坡,需要同时往上海和新加坡地域写日志。

  2. 在日志服务控制台上,创建 Project A(位于上海地域)和 Project B(位于新加坡地域)。

  3. 在日志服务控制台 Project A 和 Project B 下,分别创建机器组。

  4. 在客户端所在的服务器上,设置 iLogtail/LoongCollector 的 ilogtail_config.json 文件,支持双地域写入。

下面提供了 iLogtail/LoongCollector 的 ilogtail_config.json 配置样例。其中 LoongCollector 也兼容 iLogtail 的 ilogtail_config.json 配置样例。

iLogtail 的 ilogtail_config.json 配置样例

{..."config_server_address":"http://logtail.ap-southeast-1-intranet.log.aliyuncs.com","config_server_address_list": ["http://cn-shanghai.log.aliyuncs.com"],"data_server_list": [{"cluster": "ap-southeast-1","endpoint":"ap-southeast-1-intranet.log.aliyuncs.com"},{"cluster": "cn-shanghai","endpoint":"cn-shanghai.log.aliyuncs.com" // 如果需要全球加速,此处换成log-global.aliyuncs.com}],...
}

LoongCollector 的 ilogtail_config.json 配置样例

{..."primary_region" : "ap-southeast-1","config_servers" :["http://logtail.ap-southeast-1-intranet.log.aliyuncs.com","http://logtail.cn-shanghai.log.aliyuncs.com"],"data_servers" :[{"region" : "ap-southeast-1","endpoint_list": ["ap-southeast-1-intranet.log.aliyuncs.com"]},{"region" : "cn-shanghai","endpoint_list": ["cn-shanghai.log.aliyuncs.com" // 如果需要全球加速,此处换成log-global.aliyuncs.com]}],...
}
  1. 重启 iLogtail/LoongCollector

ACK

  1. 假设 ACK 集群在新加坡,需要同时往上海和新加坡地域写日志。

  2. 在日志服务控制台上,创建 Project A(位于上海地域)和 Project B(位于新加坡地域)。

  3. 在日志服务控制台 Project A 和 Project B 下,分别创建机器组。

  4. 在 ACK 上,设置 iLogtail/LoongCollector 的 ilogtail_config.json 文件,支持双地域写入。

iLogtail/LoongCollector 的 ilogtail_config.json 配置样例具体可以参考上文 ECS 中提供的样例。

a. 创建 configmap

b. 修改 logtail-ds/loongcollector-ds 的 deployment

  • 将配置文件作为 configmap 挂载进 logtail-ds/loongcollector-ds

  • 修改 ALIYUN_LOGTAIL_CONFIG,指向挂载后的文件路径

  1. 重启 logtail-ds/loongcollector-ds

如何验证多地域采集成功

  1. 观察 Project A 和 Project B 机器组心跳,确认两个机器组的心跳都是 OK 的,且机器是一致的

参考文档【13】

  1. 观察两个地域 Project A/Logstore A 和 Project B/Logstore B 下的数据是否有上报

注意:采集状态监控建议使用 CloudLens for SLS【14】

  • Logtail 整体状态【15】
  • Logtail 文件采集监控【16】
  • Logtail 异常监控【17】

六、实现跨地域容灾:配置采集双写

采集双写是一种高可用策略,指通过配置,让客户端上的 iLogtail/LoongCollector Agent 将同一份日志数据实时、并行地发送到位于不同地域(或同一地域不同可用区)的两个独立的阿里云日志服务 (SLS) Project 中。当某个日志服务 可用区发生故障时,您可以采用该方法,将日志采集快速切换到另一个可用的 SLS 地域。

首先您先参考第五章节,配置好多地域采集环境,然后将您的容灾 project 下的采集配置开启允许文件多次采集,即可实现日志被双写到容灾 project 下。

七、 实施建议与最佳实践总结

  1. 评估先行:根据业务部署环境、日志量、实时性/稳定性要求、安全合规需求和成本预算,综合评估并选择最合适的网络链路方案。

  2. 成本与性能权衡:没有万能方案,需在成本、性能、安全、复杂度之间找到平衡点。优先考虑同 Region 私网。

  3. 监控与告警到位:利用 CloudLens 监控整体资源消耗;配置 SLS 告警监控写入成功率、延迟;监控 Agent 自身状态 (CPU, 内存, 错误日志,网络链路质量)。

  4. 更可靠的 Agent(LoongCollector):iLogtail/LoongCollector 本身具备高可靠性(缓存、重试),且 LoongCollector 相比 iLogtail 具备更高的可靠性(网络发送异常隔离等),目前 LoongCollector 正在发布灰度中。

  5. LoongCollector 双写机制:通过将日志并行发送至多个目标,既能实现跨地域容灾(主目标故障时写入备用目标,避免数据丢失),也能支持平滑迁移(如在公网转私网等网络变更场景下,通过临时双写保障服务连续性,避免中断)。

  6. 更多疑问:如有更多的疑问,可以工单咨询我们。

【1】管理传输加速

https://help.aliyun.com/zh/sls/user-guide/transmission-acceleration

【2】Logtail 网络类型,启动参数与配置文件

https://help.aliyun.com/zh/sls/user-guide/select-a-network-type

【3】什么是云企业网

https://help.aliyun.com/zh/cen/product-overview/what-is-cen

【4】什么是高速通道

https://help.aliyun.com/zh/express-connect/product-overview/what-is-express-connect/

【5】工单支持

https://selfservice.console.aliyun.com/ticket/category/sls/today?spm=a2c4g.86660.0.0.18564dadamoJnw

【6】查看 CloudLens 数据报表

https://help.aliyun.com/zh/sls/user-guide/view-data-reports-2

【7】使用 CloudLens for SLS 分析资源用量

https://help.aliyun.com/zh/sls/user-guide/use-cloudlens-for-sls-to-analyze-resource-usage

【8】查看 CloudLens for SLS 数据报表

https://help.aliyun.com/zh/sls/user-guide/view-data-reports-2

【9】原生插件:过滤处理

https://help.aliyun.com/zh/sls/user-guide/filtration-treatment?spm=a2c4g.11186623.help-menu-search-28958.d_0

【10】扩展插件:过滤日志

https://help.aliyun.com/zh/sls/user-guide/filter-logs?spm=a2c4g.11186623.help-menu-28958.d_2_1_1_2_7_15.94421c72xxV9yd

【11】基于 SPL 实现正则解析+过滤处理

https://help.aliyun.com/zh/sls/user-guide/use-spl-to-collect-text-logs?spm=a2c4g.11186623.help-menu-search-28958.d_1#7aaac3fc1bb1w

【12】【最佳实践】还在跨境传输数据?数据跨境合规治理实践—Logtail 数据本地化无损迁移方案

https://open.observability.cn/article/xdl26gztdaksogwz/

【13】机器组

https://help.aliyun.com/zh/sls/user-guide/machine-group-overview/?spm=a2c4g.28958.0.i1#section-ijx-mp1-ry

【14】CloudLens for SLS

https://help.aliyun.com/zh/sls/user-guide/cloudlens-for-sls/?spm=a2c4g.456864.0.0.43aa5328FzA7Vx

【15】Logtail 整体状态

https://help.aliyun.com/zh/sls/user-guide/view-data-reports-2?spm=a2c4g.425764.0.0.73992508OlDYuD#section-79i-58x-ako

【16】Logtail 文件采集监控

https://help.aliyun.com/zh/sls/user-guide/view-data-reports-2?spm=a2c4g.425764.0.0.73992508OlDYuD#section-dws-ox4-jnj

【17】Logtail 异常监控

https://help.aliyun.com/zh/sls/user-guide/view-data-reports-2?spm=a2c4g.425764.0.0.73992508OlDYuD#section-7br-4e0-ctu

相关文章:

阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化

作者:裘文成(翊韬) 摘要 随着企业全球化业务的扩展,如何高效、经济且可靠地将分布在海外各地的应用与基础设施日志统一采集至阿里云日志服务 (SLS) 进行分析与监控,已成为关键挑战。 本文聚焦于阿里云高性能日志采集…...

体育培训的实验室管理痛点 质检LIMS如何重构体育检测价值链

在竞技体育与全民健身并行的时代背景下,体育培训机构正面临双重挑战:既要通过科学训练提升学员竞技水平,又需严格把控运动安全风险。作为实验室数字化管理的核心工具,质检LIMS系统凭借其标准化流程管控与智能化数据分析能力&#…...

第二节:Vben Admin 最新 v5.0 对接后端登录接口(上)

文章目录 前言一、登录页面调整二、登录表单调整三、后端接口(Python)对接对接准备1. Flask项目介绍2. User模型创建3. 迁移模型4. Token创建5. 编写蓝图6. 注册蓝图四、测试登录总结前言 这里是Vben Admin V5版本实战体验,上一节我们前端已正常运行,但是没有实现登录。本节…...

设计模式【cpp实现版本】

文章目录 设计模式1.单例模式代码设计1.饿汉式单例模式2.懒汉式单例模式 2.简单工厂和工厂方法1.简单工厂2.工厂方法 3.抽象工厂模式4.代理模式5.装饰器模式6.适配器模式7.观察者模式 设计模式 1.单例模式代码设计 ​ 为什么需要单例模式,在我们的项目设计中&…...

阿维塔汽车CAN总线数据适配技术解析与免破线数据采集实践

在智能电动汽车快速迭代的背景下,阿维塔凭借其高度集成的电子电气架构成为行业焦点。昨天我们经过实测,适配了该车型CAN总线数据适配的核心技术,从硬件接口定位、无损伤接线方案到关键动力系统数据解码进行系统性剖析,为智能诊断、…...

用纯HTML和CSS仿写知乎登录页面

这是知乎的官方的登录页面 这是我的登录页面,使用 HTML CSS 进行编写。我觉得这是一个供前端新手练手的一个不错的小项目, 在这个系列,我将会用 HTML CSS 编写各大知名网站的登录界面,欢迎大家交流探讨。 源码展示: body{ba…...

数据库故障排查全攻略:从实战案例到体系化解决方案

一、引言:数据库故障为何是技术人必须攻克的 "心腹大患" 在数字化时代,数据库作为企业核心数据资产的载体,其稳定性直接决定业务连续性。据 Gartner 统计,企业每小时数据库 downtime 平均损失高达 56 万美元&#xff0…...

MySQL如何优雅的执行DDL

一、概述 在MySQL中,DDL(数据定义语言)语句用于定义和管理数据库结构,包括创建、修改和删除数据库对象(如表、索引等)。执行DDL操作时,需要谨慎处理,以避免对生产环境的稳定性和性能…...

Django异步任务处理方式总结

在 Django 中实现异步任务处理是优化性能和用户体验的关键。以下是几种常见的异步任务处理方式及详细说明: 1. Celery(最主流方案) 适用场景:需要可靠、分布式、复杂任务队列的项目(如定时任务、重试机制、多节点部署…...

类加载机制详解:双亲委派模型与打破它的方式

在复杂的 Java 系统中,类加载是最基础却常被忽略的一环。理解 JVM 的类加载机制,特别是 双亲委派模型(Parent Delegation Model),是我们深入掌握热部署、插件机制、ClassLoader 隔离、ClassNotFound 错误等问题的关键。…...

【Redis】C++如何使用redis

文章目录 1. redis客户端2. 使用通用命令3. 使用string命令3. 使用list命令4. 使用set命令5. 使用hash命令6. 使用zset命令 1. redis客户端 在前面的学习种,我们都是使用redis命令行客户端手动执行操作的;但是更多的时候,需要使用redis的api…...

2025年现代职业教育质量提升计划(植保无人机实训室)解决方案

一、项目背景 1.1 现代职业教育发展趋势 现代职业教育正朝着多元化、技术化、智能化方向发展,以满足社会对高素质技术技能人才的迫切需求。随着科技的飞速进步,职业教育课程体系不断优化,实训教学环节的重要性愈发凸显。据教育部统计&#…...

考研系列-408真题计算机组成原理篇(2010-2014)

写在前面 此文章是本人在备考过程中408真题计算机组成原理部分(2010年-2014年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2010年 1.DRAM芯片的排列和编址方式 这个区别于多体交叉编址:这个可以理…...

【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘

问题: 使用mmdetection框架使用COCO格式训练自定义数据集时,其中模型使用HTC模型时出现如下问题: AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’? results self(**data, mode…...

47.电压跌落与瞬时中断干扰的防护改善措施

电压跌落与瞬时中断干扰的防护改善措施 1. 电压跌落与瞬时中断的影响机理2. 解决措施 1. 电压跌落与瞬时中断的影响机理 跌落发生的常见场景如下: (1)电源插头接触不良,瞬态中断即刻恢复; (2)电…...

极狐Gitlab 里程碑功能介绍

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 里程碑 (BASIC ALL) 极狐GitLab 中的里程碑是一种跟踪议题和合并请求的方法,这些请求是为了在特定时间段内实现更…...

一次Android Fragment内存泄露的bug解决记录|Fragment not attach to an Activity

Bug描述 前些天出现了一个 bug。Activity 页面里放了一个 ViewPager2,其中的每一页是一个 Fragment。其中第一页的 Fragment 实现了一个监听器,当事件发生和首次添加到监听器管理者 listener manager 时,manager 会通知所有监听者&#xff0…...

基于深度学习的交通标志识别系统

基于深度学习的交通标志识别系统 项目简介 本项目实现了一个基于深度学习的交通标志识别系统,使用卷积神经网络(CNN)对交通标志图像进行分类识别。系统包含数据预处理、模型训练与评估、结果可视化和用户交互界面等模块。 数据集 项目使用德国交通标志识别基准数…...

LVGL图像导入和解码

LVGL版本:8.1 概述 在LVGL中,可以导入多种不同类型的图像: 经转换器生成的C语言数组,适用于页面中不常改变的固定图像。存储系统中的外部图像,比较灵活,可以通过插卡或从网络中获取,但需要配置…...

Vite Proxy配置详解:从入门到实战应用

Vite Proxy配置详解:从入门到实战应用 一、什么是Proxy代理? Proxy(代理)是开发中常用的解决跨域问题的方案。Vite内置了基于http-proxy的代理功能,可以轻松配置API请求转发。 二、基础配置 在vite.config.js中配置…...

oracle goldengate非并行进程转换为并行进程

oracle goldengate非并行进程转换为并行进程 在上一期的文章中写道了直接创建并行进程的方式对大事务进行分解,这对于新建立同步进程的时候提前规划是很有帮助的,但是如果对已经进行了同步的进程重新建立需要耗时比较长,Oracle提供了非并行进…...

VBA将PDF文档内容逐行写入Excel

VBA是无法直接读取PDF文档的,但结合上期我给大家介绍了PDF转换工具xpdf-tools-4.05,先利用它将PDF文档转换为TXT文档,然后再将TXT的内容写入Excel,这样就间接实现了将PDF文档的内容导入Excel的操作。下面的代码将向大家演示如何实…...

project从入门到精通(五)

目录 创建资源的基本信息 在project中创建资源工作表 ​编辑信息详解 最大单位 标准费率与加班费率 每次使用成本 成本累算 基准日历 三类资源工作表的总结——不同的资源必须要设置的属性 除了资源名称是必须设置的之外,剩余的资源的可设置选项如下图所…...

第3.2.3节 Android动态调用链路的获取

3.2.3 Android App动态调用链路 在Android应用中,动态调用链路指的是应用在运行时的调用路径。这通常涉及到方法调用的顺序和调用关系,特别是在应用的复杂逻辑中,理解这些调用链路对于调试和性能优化非常重要。 1,动态调用链路获…...

亿级流量系统架构设计与实战(六)

微服务架构与网络调用 当某个业务从单体服务架构转变为微服务架构后,多个服务之间会通过网络调用形式形成错综复杂的依赖关系。 在微服务架构中 , 一个微服务正常工作依赖它与其他微服务之间的多级网络调用。 网络是脆弱的 , RPC 请求有较大的概率会遇到超时 、 抖动 、 断…...

浅聊find_package命令的搜索模式(Search Modes)

背景 find_package应该算是我们使用最多的cmake命令了。但是它是如何找到上游库的.cmake文件的? 根据官方文档,整理下find_package涉及到的搜索模式。 搜索模式 find_package涉及到的搜索模式有两种:模块模式(Module mode)和配置模式(Conf…...

开发搭载OneNet平台的物联网数据收发APP的设计与实现

一、开发环境与工具准备 工具安装 下载HBuilderX开发版(推荐使用开发版以避免插件兼容性问题)安装Node.js和npm(用于依赖管理及打包)配置Android Studio(本地打包需集成离线SDK)项目初始化 创建uni-app项目,选择“默认模板”或“空白模板”安装必要的UI库(如uView或Van…...

【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B

【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B 本地环境说明禁用开源驱动nouveau安装nvidia-smi安装Git环境安装Anaconda(conda)环境下载DeepSeek-R1-Distill-Qwen-7B模型安装LLaMA-Factory下载LLaMA-Factory安装LLaMA-Factory依赖修改环境变量安装deepspeedA…...

sh脚本多卡顺序执行训练文件

常规的单机多卡训练脚本一般为 python -m torch.distributed.run --nproc_per_node 2 train.py 上述脚本采用 2 张显卡训练 采用sh脚本,单次顺序执行多个多卡训练文件 例如 train1.py train2.py 特点:在执行完 train1.py之后再执行train2.py文件 …...

使用lldb查看Rust不同类型的结构

目录 前言 正文 标量类型 复合类型——元组 复合类型——数组 函数 &str struct 可变数组vec Iter String Box Rc Arc RefCell Mutex RwLock Channel 总结 前言 笔者发现这个lldb挺好玩的,可以查看不同类型的结构,虽然这好像是C的东…...