CANN HCCL 自定义集合通信算子开发:基于 AIV 引擎的 AllGather 算子实战解析
CANN HCCL 自定义集合通信算子开发基于 AIV 引擎的 AllGather 算子实战解析【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hcclHCCLHuawei Collective Communication Library是昇腾 AI 处理器上的高性能集合通信库其提供的 AIVAI Vector通信编程接口允许开发者绕过内置算法自行实现通信算子的 Host 侧逻辑与 Device 侧 Kernel。本文以仓库中的 aiv 版自定义 AllGather 示例 为主线完整讲解从环境准备、算子库编译安装、MPI 测试运行到 Host 侧资源管理与 Device 侧 Mesh 1D 通信算法的源码级实现原理。读完本文你将掌握基于 HCCL AIV 接口从零开发一个可编译、可安装、可验证的自定义集合通信算子的完整路径。一、示例概述做什么、支持什么该示例展示了如何基于 HCCL AIV 通信编程接口开发 AllGather 自定义通信算子核心特性如下基于 AIVAI Vector通信引擎实现 AllGather 集合通信算子同时包含 Host 侧算子逻辑与 Device 侧 Kernel 实现提供完整的编译、构建与测试验证流程。支持的产品与场景单机 N 卡配置N 2Ascend 950PR / Ascend 950DTAtlas A3 训练/推理产品仅支持超节点内通信场景Atlas A2 训练/推理产品仅支持单设备通信场景。这里需要特别注意示例的能力边界与硬件代际强相关A2 产品上仅支持单设备单卡内多核通信A3 及以上才支持多卡间通信跨服务器场景不在本示例支持范围内。二、工程目录结构与职责划分examples/05_custom_ops_allgather/aiv/ ├── CMakeLists.txt # 示例根目录编译配置 ├── op_host/ │ ├── CMakeLists.txt │ ├── allgather.cc # HcclAllGatherCustom 算子 Host 侧实现 │ ├── launch_kernel.cc # Kernel 提交加载二进制、启动逻辑 │ └── launch_kernel.h # Kernel 提交接口声明 ├── op_kernel/ │ ├── CMakeLists.txt │ └── launch_kernel_asc.asc # 算子 Kernel 侧实现Ascend C └── inc/ ├── hccl_custom_allgather.h # 自定义算子对外接口头文件 ├── common.h # 公共类型定义与宏OpParam、SIZE_TABLE 等 ├── aiv_allgather_mesh_1d.h # AIV AllGather 核心算法实现Mesh 1D ├── aiv_communication_base_v2.h # AIV 通信基类同步原语、GM2GM 搬运 ├── log.h # 日志工具 ├── extra_args.h # 扩展参数定义rank 计数/位移数组 └── sync_interface.h # 同步接口定义目录划分遵循了典型的Host 侧算子工程op_host Device 侧 Kernel 工程op_kernel 公共头文件inc三段式结构与仓库中 04_custom_ops_p2p、06_custom_ops_reduce_scatter 等示例保持一致的规范便于对照学习其他算子的写法。三、环境准备3.1 安装 CANN Toolkit 开发套件包按昇腾文档中心的 CANN 软件安装指南安装最新版本 CANN Toolkit 开发套件包本示例依赖其中的 HCCL 运行时库、ACL 运行时接口以及 Ascend C 算子编译工具链。3.2 配置环境变量以 root 用户默认安装路径为例source /usr/local/Ascend/cann/set_env.sh该脚本会导出ASCEND_HOME_PATH、ASCEND_OPP_PATH等关键环境变量后续算子安装路径解析与测试运行都会用到。3.3 安装 MPI运行测试用例需要 MPI 环境请确保系统已安装并配置好 MPI如 OpenMPI测试程序通过mpirun拉起多进程、每个进程绑定一个 rank。四、编译与安装自定义算子库4.1 编译自定义算子库在示例根目录仓库根目录执行bash build.sh --vendorcust --opsallgather_aiv --custom_ops_path./examples/05_custom_ops_allgather/aiv参数说明--vendor指定自定义算子标识符示例中为cust它决定了安装后 OPP 厂商目录名vendors/cust--ops指定自定义算子名示例中为allgather_aiv用于生成算子库名称与安装包名称--custom_ops_path指定自定义算子工程路径。构建配置方面aiv/CMakeLists.txt 会通过find_package(ASC REQUIRED)引入昇腾算子编译工具链并以project(hccl_custom_${OP_NAME} ...)生成名为hccl_custom_allgather的工程随后通过add_subdirectory(op_kernel)和add_subdirectory(op_host)分别编译 Kernel 侧.asc源文件与 Host 侧.cc源文件。4.2 安装自定义算子包编译完成后安装包位于./build_out目录使用--install参数安装./build_out/cann-hccl_custom_allgather_aiv_linux-arch.run --install --install-pathascend_cann_path参数说明arch当前编译环境的系统架构如aarch64或x86_64ascend_cann_path可选参数指定 CANN 软件包安装目录缺省时取ASCEND_CUSTOM_OPP_PATH或ASCEND_OPP_PATH环境变量指向的 CANN 软件包路径。安装完成后算子产物位置如下头文件${ASCEND_HOME_PATH}/opp/vendors/cust/include/hccl_custom_allgather.h动态库${ASCEND_HOME_PATH}/opp/vendors/cust/lib64/libhccl_custom_allgather.so其中${ASCEND_HOME_PATH}即 CANN-Toolkit 安装路径。对照 aiv/CMakeLists.txt 可以看到头文件正是通过install(FILES ../inc/${PROJECT_NAME}.h DESTINATION ${CUSTOM_OPS_OPP_INC_PATH} COMPONENT hccl)安装到 OPP 厂商 include 目录的。五、运行测试用例与结果验证测试源码位于 examples/05_custom_ops_allgather/testcase在第 4.1 节编译时已一并构建测试二进制路径为./build/examples/05_custom_ops_allgather/testcase/custom_allgather_test在仓库根目录执行export LD_LIBRARY_PATH${ASCEND_HOME_PATH}/opp/vendors/cust/lib64:${LD_LIBRARY_PATH} cd build/examples/05_custom_ops_allgather/testcase mpirun -n rank_size ./custom_allgather_test data_len参数说明rank_size使用的卡数即参与通信的 rank 数data_len每个 rank 发送的数据长度元素个数测试中按float计。从 testcase/main.cc 可以看出测试程序的完整执行流程MPI_Init初始化 MPI → rank 0 通过HcclGetRootInfo生成根节点信息并经MPI_Bcast广播 → 每个 rank 调用HcclCommInitRootInfo初始化通信域 → 通过aclrtMalloc分配收发缓冲区发送数据填充为各 rank 的 rank 号→ 调用HcclAllGatherCustom(sendBuf, recvBuf, dataLen, HCCL_DATA_TYPE_FP32, hcclComm, stream)执行算子 →aclrtSynchronizeStream等待完成 →VerifyResult逐元素校验 recvBuf 中第 r 段是否等于 rank r 的原始数据误差阈值 1e-5→ 销毁通信域并释放资源。预期输出执行成功后终端输出类似以下日志以 2 卡为例[1787902520.136766] [Rank 1] MPI Initialized. World Size: 2 [1787902520.136768] [Rank 0] MPI Initialized. World Size: 2 [1787902520.145917] [Rank 0] Device 0 selected (Total devices: 8) [1787902520.145918] [Rank 1] Device 1 selected (Total devices: 8) [1787902520.724696] [Rank 0] Root info generated [1787902520.724744] [Rank 0] HCCL set device[0] [1787902520.727436] [Rank 1] HCCL set device[1] [1787902522.982323] [Rank 0] HCCL Comm Initialized [1787902522.982908] [Rank 0] Buffers allocated and initialized [1787902523.008164] [Rank 1] HCCL Comm Initialized [1787902523.008742] [Rank 1] Buffers allocated and initialized rank1 dataLen32 time439 ms [1787902523.447898] [Rank 1] VerifyResult Passed! rank0 dataLen32 time465 ms [1787902523.447966] [Rank 0] VerifyResult Passed!关键判断依据每个 rank 打印VerifyResult Passed!即代表 AllGather 结果与预期一致各 rank 数据按 rank 顺序拼接无误。示例还支持无 MPI 模式——main.cc 中未定义ENABLE_MPI时会使用多线程每线程一个设备模拟多 rank 执行。六、Host 侧实现原理剖析6.1 对外接口对外接口声明于 inc/hccl_custom_allgather.hHcclResult HcclAllGatherCustom( void* sendBuf, void* recvBuf, uint64_t sendCount, HcclDataType dataType, HcclComm comm, aclrtStream stream);签名与 HCCL 内置的HcclAllGather保持一致便于替换。接口使用extern C导出确保动态库符号可被 C/C 共同链接。6.2 算子入口与参数装配入口实现在 aiv/op_host/allgather.cc 的HcclAllGatherCustom中主要完成三件事通过HcclGetCommName获取通信域名拼出tag格式为commName_opbase用于后续引擎上下文与信道的标识调用PrepareResources完成 AIV 缓冲区、信道与对端内存地址的准备工作装配OpParam结构体并调用LaunchKernel(param, stream)提交 Kernel。OpParam定义于 aiv/inc/common.h它同时是 Host 与 Device 之间传递的契约关键字段包括input/output发送/接收缓冲区地址GM 地址rank/rankSize当前 rank 号与通信域大小xRankSize/yRankSize/zRankSize三维拓扑各维度大小本示例为一维 Mesh仅xRankSize rankSizey/z 置 0len数据总字节数由sendCount * SIZE_TABLE[dataType]计算得到SIZE_TABLE覆盖 int8/int16/int32/fp16/fp32/int64/uint64 等 HCCL 数据类型的大小inputSliceStride/outputSliceStride数据切片步长AllGather 场景下等于lentagId映射到 Kernel 内的同步 tagisOpBase标记是否为算子基座op base执行模式。6.3 资源准备引擎上下文、信道与对端地址资源准备是整个 Host 侧的核心流程如下第一步初始化 AIV 缓冲区InitAivBuffer调用HcclEngineCtxGet查询引擎上下文若不存在则调用HcclEngineCtxCreate(comm, aivTag, COMM_ENGINE_AIV, ...)创建随后aclrtMemset清零通信信息区并通过HcclCommMemReg将该缓冲区注册为通信内存。该缓冲区在 Kernel 中承载各 rank 的 GM 地址表、flag 同步区与拓扑信息。第二步构建信道请求BuildChannelRequests对除自身外的每个远端 rank通过HcclRankGraphGetLayers获取网络分层、HcclRankGraphGetLinks获取本 rank 与远端 rank 之间的链路筛选出协议为COMM_PROTOCOL_UB_MEMUB 内存协议即通过统一内存池直达通信的链路填充HcclChannelDesc本地/远端端点协议、通信地址、位置、notifyNum 3等。第三步获取信道与对端缓冲区AcquireChannelsAndBuffers调用HcclChannelAcquire批量获取信道再通过HcclChannelGetHcclBuffer拿到远端 rank 的 HCCL 通信缓冲区地址存入buffersIn通过HcclChannelGetRemoteMems拿到远端 rank 的内存区中最后一个CommMem的地址存入buffersOut供 flag 同步使用。第四步下发地址表PrepareResources将buffersIn与buffersOut两张地址表分别通过aclrtMemcpy写入 AIV 通信信息区aivCommInfoPtr及其AIV_TAG_ADDR_OFFSET 16KB偏移处Device 侧 Kernel 即可据此访问各 rank 的输入输出内存。6.4 Kernel 提交aiv/op_host/launch_kernel.cc 负责 Kernel 的注册与提交RegisterKernel读取二进制文件hccl_custom_allgather_kernels.o依次调用aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetFunction获取名为HcclAllGatherAivKernel的函数句柄通过静态标志g_init与互斥锁保证单次注册ExecuteKernelLaunch构造aclrtLaunchKernelCfg设置三个 launch 属性——ACL_RT_LAUNCH_KERNEL_ATTR_SCHEM_MODE 1使用算子的 scheme 调度模式、ACL_RT_LAUNCH_KERNEL_ATTR_TIMEOUT_US超时时间由CUSTOM_TIMEOUT 1836秒换算为微秒、ACL_RT_LAUNCH_KERNEL_ATTR_ENGINE_TYPE ACL_RT_ENGINE_TYPE_AIV明确指定提交到 AIV 引擎最后通过aclrtLaunchKernelWithHostArgs将OpParam作为 Host 参数随 Kernel 一起提交。七、Device 侧 Kernel 实现原理剖析7.1 Kernel 入口与数据类型分发Kernel 入口为 aiv/op_kernel/launch_kernel_asc.asc 中的HcclAllGatherAivKernelextern C __global__ __aicore__按param.dataType分发到不同模板实例int8/int32/fp16/fp32并通过EXPORT_AIV_META_INFO宏将 Kernel 元信息写入.ascend.meta段供运行时识别其为 AIV 类型 KernelK_TYPE_AIV。7.2 算法主体Mesh 1D 全收集核心算法在 aiv/inc/aiv_allgather_mesh_1d.h 的AivAllGatherMesh1D类中继承自AivCommBaseInitCoreInfo按GetBlockIdx()核号与核数numBlocks_将总长度均分处理余数计算本核负责的数据段偏移coreOffset与长度curCountRun首先用CpGM2GM把自己的输入数据搬移到本 rank 在远端地址表中的目标位置Record(rank_, ...)置起自身就绪 flag然后遍历所有 rankWaitFlag(rank, ...)等待该 rank 的数据就绪后将其数据通过CpGM2GM搬入输出缓冲output_ rank * stride的对应分片。这正是 AllGather每个 rank 收集齐全部 rank 的数据分片的语义Process当核数numBlocks_ rankSize_时走单核对齐路径Run否则走控制核辅助路径RunCtrlCore后者由 block 0 作为协调者先收集本 rank 各核就绪信号再统一触发各 rank 的数据搬运保证核数小于 rank 数时依然正确。7.3 通信基类GM 搬运与 flag 同步原语aiv/inc/aiv_communication_base_v2.h 中的AivCommBase提供了两个关键能力GM→GM 数据搬运CpGM2GM数据经 UB统一缓冲区中转单次搬运上限为UB_MAX_DATA_SIZE 190KB双缓冲模式取半通过inOutQue队列以EnQue/DeQue流水方式分段搬运避免一次性占用过多 UB 空间。基于 flag 的 rank 间同步Record/WaitFlagRecord(targetRank, flagOffset, curTag)将当前 tag 写入目标 rank 的 flag 区WaitFlag循环DataCopyGM2UB读取 flag 并比对 tag直到相等才继续。BarrierAll与BarrierForFirstOP则在此基础上实现全 rank 汇聚屏障其中GetTag通过读写AIV_FLAG_CLEAR_OFFSET处的计数器维护单调递增的 tag达到TAG_RESET_COUNT 4096后回绕为 1保证多轮算子调用之间 flag 不会被误判。八、总结本示例完整展示了 HCCL AIV 自定义通信算子的标准开发范式Host 侧通过HcclEngineCtxCreate/HcclCommMemReg/HcclChannelAcquire等 HCCL 资源接口准备引擎上下文、信道与对端地址表通过aclrtLaunchKernelWithHostArgs将结构化参数提交至 AIV 引擎Device 侧以 Ascend C 编写__aicore__Kernel借助 flag 同步原语与 UB 中转搬运实现 Mesh 1D 拓扑下的 AllGather 全收集语义并以 MPI 多进程测试完成端到端正确性验证。作为进一步学习的入口建议对照阅读仓库中的 06_custom_ops_reduce_scatterReduceScatter 的 AIV/CCU 变体、04_custom_ops_p2p点对点 Send/Recv以及 experimental/ops/all_reduce含递归执行器的实验性实现从不同算子与不同执行路径的对比中加深对 HCCL 通信框架整体架构的理解。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

免费接入OCRSpace与百度OCR:QQScreenShot网络识别配置手把手教程

免费接入OCRSpace与百度OCR:QQScreenShot网络识别配置手把手教程

免费接入OCRSpace与百度OCR:QQScreenShot网络识别配置手把手教程 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot …

2026/9/19 21:18:33 阅读更多 →
企业级Monorepo工程化模板:Husky 9与lint-staged集成实践

企业级Monorepo工程化模板:Husky 9与lint-staged集成实践

先说个我上个月真实踩过的坑。团队里接了个老项目,典型的多仓库结构——一个公共组件库、两个业务前端、一个 Node 服务层,各自独立仓库、独立依赖、独立 lint 规则。表面上看互不干扰挺美,可真要升级一个公共依赖的时候,那酸爽简…

2026/9/19 21:18:33 阅读更多 →
IntelliJ IDEA 配置 Tomcat 完整指南:从踩坑到跑通

IntelliJ IDEA 配置 Tomcat 完整指南:从踩坑到跑通

1. 为什么本地跑 Tomcat 这件事值得认真对待刚入行那会儿,我最怕听到的一句话就是"你本地起个 Tomcat 跑一下"。听起来简单,但真到动手的时候,JDK 版本对不上、端口被占、Artifact 没配对、热部署不生效,随便一个坑都能…

2026/9/19 21:18:33 阅读更多 →

最新新闻

个人开发者如何系统攻克工控协议:从Modbus到EtherCAT的实战路线

个人开发者如何系统攻克工控协议:从Modbus到EtherCAT的实战路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 1:59:04 阅读更多 →
压力变送器安装接线与参数设置指南:HART协议与4-20mA实战解析

压力变送器安装接线与参数设置指南:HART协议与4-20mA实战解析

简介:SmartLine ST700 Basic压力变送器快速安装指引来自Honeywell,面向工业仪表工程师、现场维护人员与自动化专业学习者,解决压差、表压、绝压变送器安装中流程不清晰、操作不规范等问题。资源为PDF格式,共1个文件,压…

2026/9/21 1:59:04 阅读更多 →
uni-app 持续定位 API 全解析:onLocationChange、startLocationUpdate 与后台定位实战

uni-app 持续定位 API 全解析:onLocationChange、startLocationUpdate 与后台定位实战

uni-app 持续定位 API 全解析:onLocationChange、startLocationUpdate 与后台定位实战 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 本篇技术指南围绕 uni-app(跨端框…

2026/9/21 1:59:04 阅读更多 →
Compiler Explorer 可链接库接入指南:从 libraries.yaml 注册到 c++.amazon.properties 静态链接的全流程实战

Compiler Explorer 可链接库接入指南:从 libraries.yaml 注册到 c++.amazon.properties 静态链接的全流程实战

后端前端开发工具 【免费下载链接】compiler-explorer Run compilers interactively from your web browser and interact with the assembly 项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer 点击查看 免费下载 本篇技术指南聚焦 Compiler Explor…

2026/9/21 1:59:04 阅读更多 →
ResNet+SVM组合:小样本医学图像分类的实用方案

ResNet+SVM组合:小样本医学图像分类的实用方案

简介:这套基于ResNet与SVM的乳腺癌检测算法资源,面向深度学习及医学影像处理方向的开发者、研究者与高年级学生,针对医学图像分类中深层特征提取与传统分类器结合的需求,提供了完整可运行的实现方案。压缩包共25个文件&#xff0c…

2026/9/21 1:59:04 阅读更多 →
Fun-CosyVoice3 Windows本地部署实战:TTS声音克隆与数字人接入

Fun-CosyVoice3 Windows本地部署实战:TTS声音克隆与数字人接入

数字人项目里最磨人的往往不是形象和驱动,而是背后那条“出声”的链路。我最近把一套数字人播报系统往Windows机器上迁移,核心TTS选的是Fun-CosyVoice3-0.5B-2512。本想着这类开源模型在Linux上跑得很顺,换到Windows最多改改路径,…

2026/9/21 1:58:04 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →