Dandelion 提出的新编程模型核心在于“将云原生应用重构为纯计算函数 + 通信函数的 DAG 数据流图”,从而实现极致弹性与资源效率。以下是对该模型的详细解析,以及对现有应用兼容性和改造难度的评估:


✅ 新编程模型思路详解

维度 传统 FaaS(如 AWS Lambda) Dandelion 新模型
函数定义 包含计算+系统调用+网络通信 明确拆分为:
- 纯计算函数(无系统调用)
- 通信函数(平台提供,如 HTTP)
运行环境 需完整 POSIX 沙箱(如 Firecracker MicroVM) 轻量级隔离(KVM/进程/CHERI/rWasm),无需 Guest OS
冷启动 数十毫秒(含快照) 百微秒级(<100μs)
编程接口 开发者可自由使用系统调用 纯函数通过文件语义读写输入输出(无 syscall)
数据传递 依赖外部存储(如 S3) 明确声明输入输出,平台自动调度
并发模型 每个函数独立运行,OS 调度 DAG 显式表达并行性,平台可弹性调度 CPU 核心

🧩 应用兼容性评估

应用类型 兼容性 改造难度 说明
数据处理管道(如ETL、MapReduce) ✅ 高 🟢 低 天然符合 DAG 模型,易于拆分
AI 推理链(如 Text2SQL、RAG) ✅ 高 🟢 低至中等 LLM调用→SQL查询→格式化输出,天然为多个阶段
REST API 服务 ⚠️ 中 🟡 中等 需将每个 API endpoint 拆分为 DAG;I/O 密集型部分需转为通信函数
微服务链(如订单→库存→支付) ⚠️ 中 🟡 中等 需将每个服务调用转为通信函数,计算逻辑封装为纯函数
需要共享内存/线程同步的应用 ❌ 低 🔴 高 如在线游戏、数据库内核,不适合 Dandelion 模型
传统 POSIX 应用(如 NGINX、Redis) ❌ 低 🔴 高 需重写为无状态纯函数,或放弃使用

🔧 改造难度详解

✅ 低难度(适合优先迁移)

⚠️ 中等难度

❌ 高难度(不建议迁移)


🧪 实际案例:Text2SQL 改造示例

原始流程 Dandelion DAG 表达
用户输入 → LLM 推理 → SQL 查询 → 格式化结果 4 个节点:
1. 输入解析(纯函数)
2. LLM 调用(通信函数)
3. SQL 执行(通信函数)
4. 输出格式化(纯函数)

改造工作量:一位无经验的学生在几小时内完成 [论文 7.7]

详见应用改造对比:Web 服务(REST API) vs AI Agent(Text2SQL 场景)


🔮 未来兼容性增强方向

Dandelion 团队计划支持:


✅ 总结建议

一句话总结:Dandelion 的编程模型适合“云原生、无状态、数据驱动”的现代应用,对传统有状态服务兼容性有限,但可通过架构重构逐步适配。

建议 场景
立即迁移 无状态、数据并行、AI 推理链
试点改造 REST API、日志处理、ETL
观望评估 有状态服务、异步系统
不建议迁移 共享内存、系统级服务、训练任务