Mooncake Transfer Engine 源码阅读(四):TENT 下一代架构如何重构传输引擎
Mooncake 仓库同时存在经典 Transfer Engine 和 TENT(Transfer Engine Next)。TENT 不是简单增加一种 Transport,而是重构了 Segment 生命周期、运行时调度、拓扑选择、QoS、故障转移和插件体系。 阅读版本: Mooncake commit: 777cc7782417b6e554cf7c2d53210d0d8f89f5cc 一、为什么需要下一代引擎 经典 TE 已经支持 RDMA、TCP、NVLink 和多种硬件,但随着后端增加,TransferEngineImpl + MultiTransport + 各 Transport 容易出现几个问题: Segment 生命周期分散在元数据和后端注册逻辑中; 传输选择主要依赖静态协议与局部规则; 多 rail、拥塞、故障和 QoS 难以统一调度; 不同后端各自维护进度线程和资源模型; 新硬件接入需要理解大量经典内部约定; 请求取消、deadline 和 failover 缺少统一运行时。 TENT 将这些能力上移到 Runtime 层。 二、目录结构 TENT 核心位于: tent/src/runtime/ ├── transfer_engine_impl.cpp ├── segment.cpp ├── segment_manager.cpp ├── segment_registry.cpp ├── segment_tracker.cpp ├── transport_loader.cpp ├── transport_selector.cpp ├── progress_worker.cpp ├── admission_queue.cpp ├── qos_contract.cpp ├── receiver_credit.cpp ├── topology.cpp ├── control_plane.cpp └── proxy_manager.cpp 外围包括: ...