上一代耐久执行引擎有个共同点:要你额外养一套基础设施。Temporal 要 Cassandra 或 Postgres,Inngest 要一个常驻服务加数据库。Restate 的想法相反,它把自己做成一个单二进制,塞在你服务和调用方中间,日志、状态、队列全在里头,不要外部数据库。
Restate 到底是什么
一句话:一个 Rust 写的单二进制,站在你的服务前面当协调层,把每次调用的每一步记进 journal,进程崩了按日志重放,跳过已经完成的步骤。
GitHub 上 restatedev/restate 4,674 星、233 个 fork,2023 年 1 月建仓,最新 v1.8.1 在 10 月 21 日发布,11 月 2 日还有一个 hotfix,11 月 6 日仓库仍有提交。创始团队来自 Apache Flink,2026 年 9 月 30 日拿了 2,000 万美元 A 轮,Singular 领投,Redpoint 和 Capital One Ventures 跟投,累计 2,700 万。新闻稿里点名 Replit Agent 用它做耐久执行。
它给你的四样东西比「工作流引擎」更宽:
- Durable functions:
ctx.run包住的每一步都落 journal,重放时按顺序对上号 - Virtual Object:带持久状态、按 key 一次只跑一个写请求的实体,会话、购物车、Agent 上下文都往这里塞
- Virtual Queue:1.7 引入的流控,按 scope 和 limit key 限并发、排优先级
- Awakeable:一次性回调 token,发给外部系统,人点了按钮再回来
SDK 覆盖 TypeScript、Java、Kotlin、Python、Go、Rust、Ruby 七种。TS SDK 已经到 1.18.3(11 月 4 日),Python SDK 1.4.2,要求 Python 3.11 以上。
上手
docker run --rm -p 8080:8080 -p 9070:9070
docker.restate.dev/restatedev/restate:latest
npm i @restatedev/restate-sdk
8080 是入口,9070 是管理台和 UI。服务跑起来之后注册一下:
restate deployments register http://localhost:9080
一个带人工审批的 Agent 大概长这样:
const agent = restate.service({
name: "Agent",
handlers: {
run: restate.createServiceHandler(async (ctx, task) => {
const plan = await ctx.run("plan", () => llm.plan(task));
const { id, promise } = ctx.awakeable();
await ctx.run("ask", () => slack.ask(id, plan));
const decision = await promise; // 挂起,进程可以收走
return ctx.run("apply", () => llm.apply(plan, decision));
}),
},
});
restate.serve({ services: [agent], port: 9080 });
1.8 动了什么
10 月 14 日的 1.8.0 是三件事:Virtual Queue 默认开启,不用再手动开;CLI 重写成给脚本和 AI Agent 用的,加了 --json、--dry-run/--yes、invocations journal、search 这些命令;服务协议 v7 成为默认。10 月 15 日的文章标题叫 Mind the Queue,说的就是调度器这套。
1.7(7 月)是端到端流控,1.8 把它变成默认。这条线的意思是:Restate 不只想做”跑挂了能续”,还想管”谁能先跑、并发多少”。
钱和部署
自托管免费,单二进制没有外部依赖,单节点能跑,也能组 HA 集群。Restate Cloud 有免费额度、不要信用卡;再往上是托管版和 BYOC(7 月推出,跑在你自己的云账号和 VPC 里,数据不出你的边界)。托管的具体档位官网用 JS 渲染,抓不到静态价格,签之前自己看一眼。
几句实话
一,许可证不是 Apache 2.0。 是 BSL 1.1,附加条款写得很明白:不能拿它做「Public Restate Platform Service」——让第三方注册自己的服务、再通过你的服务调用。自己产品内部用、给客户跑你自己写的服务,都允许。发布满四年转 Apache 2.0。
二,1.8 升级有硬门槛。 所有节点必须先到 1.7.3 以上,而且每个分区要做一次性迁移,迁移期间该分区不可用。生产升级得排窗口,别在工作日中午点。
三,编程模型有约束。 代码必须可重放:副作用包进 ctx.run,随机数用 ctx.rand,时间用 ctx.date。你要是随手 Math.random()、随手 Date.now(),重放就会对不上,日志直接报错。这是所有耐久执行的共同代价,Restate 不例外。
四,生态还小。 4,674 星、478 个 open issue,跟 Temporal 那种跑了多年的项目比,案例和踩坑帖都少。它赌的是「更轻、更便宜、延迟更低」,不是「更成熟」。
五,它不托管你的代码。 服务还是你自己部署到 K8s、Cloud Run、Workers 或者一台 VPS 上,Restate 只负责调度和记账。想要进去拖拽画流程的,那是 Dify 和 n8n 的活;想横向比一遍耐久执行这条路,可以接着看 Inngest 那篇。
适合谁
你已经在写后端,手上有个 Agent 要跑十分钟、要等人审批、失败不能重复扣款,还想少养一套中间件——Restate 值得试。反过来,如果你的流程本来就短、一次 HTTP 就答完,加这层只是多一跳;如果你要的是可视化编排和现成模板,别从这儿开始。