<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>VLLM on 方糖猫Blog</title>
    <link>https://ftmao.com/blog/tags/vllm/</link>
    <description>AI 视频、AI Agent 与工程实践笔记</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Fri, 17 Jul 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://ftmao.com/blog/tags/vllm/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>Netflix 自建 LLM 推理平台笔记：四个层层相扣的决策</title>
      <link>https://ftmao.com/blog/posts/netflix-in-house-llm-serving/</link>
      <pubDate>Fri, 17 Jul 2026 10:00:00 +0800</pubDate>
      <guid>https://ftmao.com/blog/posts/netflix-in-house-llm-serving/</guid>
      <description>&lt;h1 id=&#34;netflix-自建-llm-推理平台笔记四个层层相扣的决策&#34;&gt;Netflix 自建 LLM 推理平台笔记：四个层层相扣的决策&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://netflixtechblog.com/in-house-llm-serving-at-netflix-a5a8e799ea2c&#34;&gt;In-House LLM Serving at Netflix&lt;/a&gt;（Netflix TechBlog，2026-07，AI Platform 的 Model Runtime 与 Inference 团队）
目标读者：正在或准备自建 LLM 推理服务的工程师，尤其是要在&amp;quot;用托管 API&amp;quot;和&amp;quot;自己跑全栈&amp;quot;之间做取舍的团队。
阅读目标：看清 Netflix 这套平台的四个核心决策（引擎、打包、API 面、发布）各自约束了什么，以及哪些坑是设计阶段想不到、只有生产流量能教会的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;为什么不直接用托管-api&#34;&gt;〇、为什么不直接用托管 API&lt;/h2&gt;
&lt;p&gt;多数组织通过托管 API 消费 LLM，Netflix 选择在既有生产环境内跑全栈——从模型部署到推理，而不是另起一个 ML 孤岛。原文明确说：这篇文章只讲&amp;quot;曾经认真考虑过备选方案&amp;quot;的决策，而且重点是&lt;strong&gt;为什么&lt;/strong&gt;这么选，以及生产暴露了哪些设计阶段没预料到的东西。这个姿态本身就值得学：决策文档的价值不在结论，在被否决的选项和事后才显形的代价。&lt;/p&gt;
&lt;h2 id=&#34;一架构总览llm-不是特例&#34;&gt;一、架构总览：LLM 不是特例&lt;/h2&gt;
&lt;p&gt;Netflix 的会员规模 ML 由一个统一的 JVM serving 系统打头，负责路由、A/B 测试逻辑、候选生成、特征获取、推理、后处理和逐级日志，实时与离线批量缓存两条路径都支持。调用方到达推理有两条路：经 serving 系统的 gRPC 路径，以及新兴 LLM 应用用的直连 HTTP 路径。&lt;/p&gt;
&lt;p&gt;推理在哪跑取决于模型大小：小的 CPU 模型直接在进程内跑，省掉远程调用开销；大模型需要 GPU，serving 系统本地做前后处理，把推理委托给远端服务 &lt;strong&gt;MSS（Model Scoring Service）&lt;/strong&gt;。MSS 是共享推理后端，XGBoost、TensorFlow、PyTorch、LLM 全走同一套接口，底下是 NVIDIA Triton Inference Server 管模型加载、批处理和 GPU 调度。Triton 之上还有一个 Java 控制面，管部署、版本、健康检查、自动扩缩和多 region  rollout——模型作者只管打包产物和配置，控制面负责 provisioning GPU 实例和零停机升级。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    subgraph CALLER[&amp;#34;调用方两条路径&amp;#34;]
        GRPC[&amp;#34;gRPC 路径&amp;lt;br/&amp;gt;经 JVM serving 系统&amp;lt;br/&amp;gt;路由 A/B 特征 后处理 日志&amp;#34;]
        HTTP[&amp;#34;HTTP 直连路径&amp;lt;br/&amp;gt;新兴 LLM 应用&amp;#34;]
    end
    subgraph MSS[&amp;#34;MSS 共享推理后端&amp;lt;br/&amp;gt;XGBoost TF PyTorch LLM 统一接口&amp;#34;]
        TRITON[&amp;#34;Triton Inference Server&amp;lt;br/&amp;gt;模型加载 批处理 GPU 调度&amp;#34;]
        CP[&amp;#34;Java 控制面&amp;lt;br/&amp;gt;部署 版本 健康检查 扩缩 多 region&amp;#34;]
        CP --&amp;gt; TRITON
    end
    GRPC --&amp;gt; MSS
    HTTP --&amp;gt; TRITON
    INPROC[&amp;#34;小模型 CPU 进程内推理&amp;#34;] -.-&amp;gt;|&amp;#34;省远程调用开销&amp;#34;| GRPC
    style MSS fill:#e8f5e9&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;一句话：&lt;strong&gt;LLM 不做特殊雪花&lt;/strong&gt;。XGBoost 集成和大型 LLM 用同一个 gRPC 调用打分，客户端库、健康检查、部署流水线全部复用。这个&amp;quot;不特殊化&amp;quot;原则后面会反复出现。&lt;/p&gt;
&lt;h2 id=&#34;二决策一引擎从-tensorrt-llm-换到-vllm&#34;&gt;二、决策一：引擎从 TensorRT-LLM 换到 vLLM&lt;/h2&gt;
&lt;p&gt;平台最初建在 TensorRT-LLM 上——当时性能领先，且已和 Triton 集成。到 2025 年夏天两件事变了：开源引擎的性能差距基本抹平；工作负载也从单一形态扩展到 embedding 生成、ranking/retrieval 的 prefill-only 推理、自回归解码、以及带逐步约束逻辑的自定义模型。重新 benchmark 后选 vLLM 作为 paved-path 引擎，理由是&lt;strong&gt;运营契合度&lt;/strong&gt;而非峰值性能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自定义模型架构免多步编译流水线，非标模型迭代更快；&lt;/li&gt;
&lt;li&gt;有自定义解码逻辑的扩展钩子（后面约束解码全靠它）；&lt;/li&gt;
&lt;li&gt;可调试性好——编译型引擎里查失败和中间状态很痛；&lt;/li&gt;
&lt;li&gt;研究侧很多同学本来就在用 vLLM，研究到生产的交接成本低。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意选型口径：不是&amp;quot;谁快选谁&amp;quot;，是&amp;quot;谁在我们的负载组合 + 团队现状下总成本最低&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;三决策二打包方式选-vllm-backend-但要锁版本&#34;&gt;三、决策二：打包方式，选 vLLM backend 但要锁版本&lt;/h2&gt;
&lt;p&gt;Triton 支持两种打包，区别在&lt;strong&gt;模型产物与前端升级的耦合紧度&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python backend&lt;/strong&gt;：作者在打包时显式定义输入输出 tensor 规格，规格冻结在产物里，必须和前端 request builder 的期望匹配——前端每次动 I/O 规格，打包代码都要配合改，否则运行时才挂。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vLLM backend&lt;/strong&gt;：产物只有一个指向权重和 tokenizer 的 JSON 配置，I/O 规格由 Triton 在部署时动态生成。模型和前端各自独立演进。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;vLLM backend 是架构上正确的默认，但生产咬了两口：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Triton 与 vLLM 版本漂移&lt;/strong&gt;。Triton 的 vLLM backend 是针对特定 vLLM API 面编译的，一漂移就整个加载失败——真实案例是 Triton 25.09 还在 import &lt;code&gt;vllm.engine.metrics&lt;/code&gt;，而这个模块在 vLLM 0.11.2 里已经删了。对策：烘焙镜像时锁死兼容版本对，并禁止模型作者在打包时覆盖 vLLM 版本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义模型逻辑&lt;/strong&gt;。vLLM backend 假设标准 HuggingFace 兼容模型并接管全生命周期；需要自定义前后处理、ensemble 流水线、非标 tokenization 的模型，只能退回 Python backend 拿 &lt;code&gt;execute()&lt;/code&gt; 的完全控制权。这个逃生门对一部分模型会长期必要。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四决策三api-面grpc-不动加一层-openai-兼容前端&#34;&gt;四、决策三：API 面——gRPC 不动，加一层 OpenAI 兼容前端&lt;/h2&gt;
&lt;p&gt;内部打分协议保持统一 gRPC 不变，但 OpenAI 兼容 API 已成 LLM 生态事实标准——推理引擎、编排框架、评估工具、客户端库全说它——所以平台把它作为&lt;strong&gt;附加&lt;/strong&gt;前端暴露。回报体现在实验到生产的路径上：从托管模型毕业到自托管微调模型（为质量、延迟、成本或数据隐私），几乎是平滑迁移，同一套 API，代码改动极小。&lt;/p&gt;
&lt;p&gt;实现上直接复用 NVIDIA 的 Triton OpenAI 兼容前端：内嵌一个 Triton server，用 &lt;code&gt;TritonLLMEngine&lt;/code&gt; 把请求 schema 转成 Triton 推理请求，FastAPI 对外服务；KServe 的 HTTP/gRPC 前端同时开启，Java 控制面仍走 gRPC 访问同一实例。但直接采用暴露了一个缺口：&lt;strong&gt;&lt;code&gt;response_format&lt;/code&gt; 字段 schema 里接受、实际在到达 vLLM 之前被静默丢弃&lt;/strong&gt;——调用方以为自己要了 JSON 输出，实际没有任何 guided decoding 约束，拿到畸形 JSON 也收不到任何报错。Netflix 的解法是 git-subtree 掉这个前端并打补丁，在请求时把 &lt;code&gt;response_format&lt;/code&gt; 翻译成 vLLM 的 guided decoding 参数。静默丢参数比报错危险得多，这是个通用教训。&lt;/p&gt;
&lt;h2 id=&#34;五决策四发布策略red-black-与-versioned&#34;&gt;五、决策四：发布策略——Red-Black 与 Versioned&lt;/h2&gt;
&lt;p&gt;GPU 部署拉起比 CPU 服务慢，模型版本间 I/O schema 还可能变，发布要解决的是&amp;quot;新版本上线不掉请求&amp;quot;。平台给两种策略：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    Q[&amp;#34;新版本要改 I/O schema 吗&amp;lt;br/&amp;gt;例如 tensor 维度变了&amp;#34;] --&amp;gt;|&amp;#34;否 接口稳定&amp;#34;| RB[&amp;#34;Red-Black&amp;lt;br/&amp;gt;新旧并存 健康检查后分阶段切流&amp;lt;br/&amp;gt;新扩容与老缩容同速率 失败原子回滚&amp;#34;]
    Q --&amp;gt;|&amp;#34;是 无法避免&amp;#34;| V[&amp;#34;Versioned&amp;lt;br/&amp;gt;每个 modelId + modelVersion 独立部署&amp;lt;br/&amp;gt;多版本同时在线服务&amp;#34;]
    RB --&amp;gt; RBGAP[&amp;#34;已知缺口&amp;lt;br/&amp;gt;消费者要等新版全量才能改配置&amp;lt;br/&amp;gt;迁移窗口内老请求打到新部署会失败&amp;#34;]
    V --&amp;gt; VCOST[&amp;#34;代价&amp;lt;br/&amp;gt;过渡期 GPU 成本临时上涨&amp;lt;br/&amp;gt;平台按闲置清理旧版本 但永远保留最新&amp;#34;]
    style RB fill:#e8f5e9
    style V fill:#fff3cd&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;Red-Black 的协调缺口很微妙：新版本要改 schema 时，上游消费者&lt;strong&gt;没法提前&lt;/strong&gt;改配置（改了会打到还在线上的旧版），只能等新版全量后再切，于是迁移窗口内必然有&amp;quot;老请求打新部署&amp;quot;的失败。Versioned 用冗余部署彻底解耦模型发布与消费者更新。Netflix 的建议是把可变配置（如 tensor shape）直接嵌进推理模型让它版本无关，尽量走便宜的 Red-Black，Versioned 只留给接口变更无法避免的少数情况。&lt;/p&gt;
&lt;h2 id=&#34;六两个运维细节&#34;&gt;六、两个运维细节&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;启动序列&lt;/strong&gt;。直接启动时从 S3 或 Hugging Face 拉大模型太慢，冷启动会超出调度器容忍度；对策是在模型&amp;quot;announce&amp;quot;时就把模型物化到 Amazon FSx，warm start 命中高性能文件系统而非对象存储。另外 OpenAI 兼容前端内嵌 Triton 还是独立跑 Triton，是打包时按部署配置的。其余步骤是机械的：解包、经 Python &lt;code&gt;entry_points&lt;/code&gt; 装自定义 vLLM 插件、清理 Prometheus multiprocess 目录、引擎就绪前闸住 gRPC 端口。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;统一 metrics 端点&lt;/strong&gt;。vLLM 把指标写成 &lt;code&gt;PROMETHEUS_MULTIPROC_DIR&lt;/code&gt; 下的 &lt;code&gt;.db&lt;/code&gt; 文件，Triton 走自己的 Prometheus 端点，两边互不知情；Triton 内置桥接只暴露 40 多个 vLLM 指标里的 9 个，token 吞吐、KV cache 利用率、prefix cache 命中率这些关键指标全缺。解法是加了一个轻量 HTTP 代理：HTTP 拉 Triton 指标，用 &lt;code&gt;MultiProcessCollector&lt;/code&gt; 从磁盘读 vLLM 指标，合并成单个 &lt;code&gt;/metrics&lt;/code&gt; 输出——存量 dashboard 和告警零改动。&lt;/p&gt;
&lt;h2 id=&#34;七深水区约束解码的规模问题&#34;&gt;七、深水区：约束解码的规模问题&lt;/h2&gt;
&lt;p&gt;这是最硬核的一节。Netflix 一些生产负载需要细粒度控制 token 生成，思路是&lt;strong&gt;把约束推进解码循环内部&lt;/strong&gt;——不为非法生成付钱再重试或修补，而是让模型&amp;quot;构造性地&amp;quot;生成合规输出。实现走 vLLM 的自定义 logits processor 接口：每个约束建模为随已生成 token 历史演进的状态机，每步吐出 token 可用性掩码；每个请求配自己的 processor 实例，因为不同请求规则不同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V0 为什么撑不住&lt;/strong&gt;：初版纯 Python 实现功能正确，但 vLLM V0 里自定义 logits processor 是逐请求跑的——GPU 为整个 batch 算出 logits，CPU 拷贝过来等传输完，然后&lt;strong&gt;串行&lt;/strong&gt;对每个请求跑约束逻辑（GIL 挡住了并行）。CPU 耗时随 batch 线性增长，尾延迟爆炸，端到端变成 CPU-bound，尽管 GPU 前向是高效批处理的。这个瓶颈在单请求 benchmark 里完全不可见，只在真实并发下现形。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V1 的结构修复&lt;/strong&gt;（2025 Q4 迁移）：vLLM V1 把 logits 处理提升到批级，processor 改写为对批级数据结构操作、跨请求一起算掩码，热路径用 C++ 多线程重写绕过 GIL。代价是 V1 API 要求经 &lt;code&gt;update_state(batch_update)&lt;/code&gt; 显式跟踪 batch 成员变化——比 V0 的逐请求接口复杂，但动态演化的 batch 里要维持正确状态别无选择。效果是 logits 处理时间随 batch 增长保持平坦。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两个设计阶段没想到的状态陷阱&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Partial prefill&lt;/strong&gt;：V1 做 chunked prefill，一个请求可能跨多个引擎 step 才填完，而 &lt;code&gt;BatchUpdate&lt;/code&gt; 的粒度分不清&amp;quot;填完了&amp;quot;还是&amp;quot;填了一半&amp;quot;，只能内部自己跟踪。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preemption&lt;/strong&gt;：显存压力下 vLLM 可能逐出半完成请求的 KV cache，之后带着不同的 prompt 和输出 token 列表重新调度——这直接打破状态机&amp;quot;输出 token 列表单调增长&amp;quot;的假设。对策是检测 token 历史在解码步之间变短，发现就重置状态机、按新 prompt 重新初始化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;八工程实践联想&#34;&gt;八、工程实践联想&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;单请求 benchmark 会撒谎。&lt;/strong&gt; V0 约束解码的瓶颈只在真实并发下出现——GPU 批处理越高效，串行 CPU 段相对越刺眼（阿姆达尔定律的实战版）。凡是有&amp;quot;批 GPU + 逐请求 CPU&amp;quot;形态的系统，压测必须带真实并发模型，否则上线即踩雷。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生态兼容比自研协议值钱。&lt;/strong&gt; OpenAI 兼容前端让&amp;quot;托管换自托管&amp;quot;几乎零成本，本质是买了个退出期权。但采用第三方组件时要主动审计&lt;strong&gt;静默行为&lt;/strong&gt;——&lt;code&gt;response_format&lt;/code&gt; 那种&amp;quot;schema 接受、执行丢弃&amp;quot;的缺口，只有端到端验证能抓到，类型系统和 schema 校验都救不了你。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;锁版本不是洁癖，是边界合同。&lt;/strong&gt; Triton 25.09 对 vLLM 0.11.2 的事故说明：两个各自快速迭代的组件之间，API 面就是合同，合同必须显式 pin 住，且要封死用户绕过 pin 的后门（禁止打包时覆盖版本）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接口变更的协调成本要摆上台面。&lt;/strong&gt; Red-Black 的&amp;quot;老请求打新部署&amp;quot;缺口是典型的分布式系统两将军问题变体；Versioned 用资源换解耦是标准解法，但更便宜的做法是从源头消灭破坏式变更——把可变配置嵌进模型。设计 schema 时就该问：这个字段未来变了，谁要协调谁？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;有状态逻辑要对底层语义变更做回归审计。&lt;/strong&gt; partial prefill 和 preemption 两个坑，根因都是状态机的隐含假设（一次填完、token 单调增长）被引擎新语义打破。引擎升级时不只跑功能测试，要把每条状态假设列出来逐条对账。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;本篇小结&#34;&gt;本篇小结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Netflix 在既有 JVM serving 体系内自建 LLM 推理全栈，核心原则是 &lt;strong&gt;LLM 不做特例&lt;/strong&gt;：所有模型统一 gRPC 打分，共享 MSS + Triton + Java 控制面。&lt;/li&gt;
&lt;li&gt;四个决策层层相扣：引擎选 vLLM（运营契合度胜过峰值性能）→ 打包选 Triton vLLM backend（I/O 规格部署时动态生成，代价是版本锁死，自定义模型留 Python backend 逃生门）→ API 面加 OpenAI 兼容前端（顺手修了 &lt;code&gt;response_format&lt;/code&gt; 静默丢失）→ 发布双策略 Red-Black / Versioned 应对 schema 变更协调。&lt;/li&gt;
&lt;li&gt;运维两个坑：模型先物化到 FSx 解决冷启动；自建代理合并 Triton 与 vLLM 双 metrics 源（官方桥接只暴露 9/40+ 指标）。&lt;/li&gt;
&lt;li&gt;约束解码是全文精华：约束建模为状态机 + 逐步 token 掩码；V0 逐请求串行被 GIL 卡死、CPU 随 batch 线性增长，V1 批级化 + C++ 热路径后耗时拉平；partial prefill 与 preemption 两个状态陷阱靠内部跟踪和&amp;quot;token 历史缩短即重置&amp;quot;解决。&lt;/li&gt;
&lt;li&gt;后续方向：system prompt 压缩、vLLM V1 异步调度、logits processor 向量化成 GPU 融合算子、低精度模型变体。&lt;/li&gt;
&lt;li&gt;全文最值得带走的元教训：设计评审看不出这些坑，&lt;strong&gt;生产负载是最终的验收测试&lt;/strong&gt;——所以平台要为&amp;quot;发现设计阶段想不到的问题&amp;quot;留好观测口和逃生门。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://netflixtechblog.com/in-house-llm-serving-at-netflix-a5a8e799ea2c&#34;&gt;In-House LLM Serving at Netflix&lt;/a&gt;，Netflix TechBlog，2026-07-17（原文）。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/vllm-project/vllm&#34;&gt;vLLM&lt;/a&gt;：开源 LLM 推理引擎，本文的 paved-path 选择。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/triton-inference-server/server&#34;&gt;NVIDIA Triton Inference Server&lt;/a&gt;：MSS 底层的模型加载、批处理与 GPU 调度层。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/NVIDIA/TensorRT-LLM&#34;&gt;TensorRT-LLM&lt;/a&gt;：平台初代引擎，被替换前的 baseline。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kserve/kserve&#34;&gt;KServe&lt;/a&gt;：与 OpenAI 前端并置启用的 HTTP/gRPC 前端。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aws.amazon.com/fsx/&#34;&gt;Amazon FSx&lt;/a&gt;：模型物化的高性能文件系统，用于压低冷启动。&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>
