——从“能跑”到“稳定可控”的完整决策过程背景业务中存在一类历史记录数据(若干字段 + 图片),需要支持批量导出为 PDF,用于归档和离线查看。单页约包含 3 条记录,每条记录包含图片资源。在极端情况下,导出任务可能涉及:数千页内容上万张图片国内 / 海外多云部署弱网与不稳定网络环境这类任务不属于实时请求链路,但对系统稳定性要求极高。一、问题定义:这不是“导出”,而是“批处理系统”在需求分析阶段,我们没有将其简单视为“生成 PDF”,而是明确了它的工程属性:✅ 高 IO 消耗(大量图片下载、文件读写)✅ 高 CPU 消耗(无头浏览器渲染、HTML → PDF)✅ 高内存消耗(图片解码、页面上下文)✅ 异步、长时间任务✅ 失败不可影响主业务因此,首要目标不是“速度最快”,而是:在极端数据量和不稳定环境下,保证导出成功率和系统隔离性。二、架构选择:为什么使用函数计算(Serverless)我们评估了三种方案:前端直接渲染并导出 PDF(否决)大数据量下浏览器内存占用极高页面卡死甚至崩溃严重影响用户体验结论:重计算任务不应放在客户端执行。放入核心后端服务(风险较高)属于资源消耗不可控的任务在并发或异常情况下,可能拖垮核心服务导出功能并非主业务链路结论:不应与核心服务共享资源池。使用函数计算进行任务隔离(最终选择)独立计算环境异步执行资源可配置即使失败也不影响主业务结论:该任务更适合放入 Serverless / 外部计算资源中。三、初始方案设计整体流程如下:前端创建导出任务将结构化数据打包为 JSON(图片仅传 URL)通过消息机制触发函数计算Node.js 函数计算启动无头浏览