用途:在 Cloudflare 边缘构建有状态、可协调的应用,创建或审查 Durable Objects 代码。适用于聊天室、多人游戏、协作文档、库存与预订等强一致场景,以及多租户、按用户存储、WebSocket 实时通知和按实体的定时任务。不适用于无状态请求处理、需要最大全球分布或高扇出独立请求的场景。
主要能力:实现 RPC 方法、alarms 与 WebSocket 处理器;配置 wrangler.jsonc/toml 的 DO 绑定与迁移;使用 @cloudflare/vitest-pool-workers 编写测试;设计分片策略与父子关系。
使用方式:优先检索官方文档而非依赖预训练知识,相关资源包括 https://developers.cloudflare.com/durable-objects/ 及其 api、best-practices、examples 页面。核心规则:围绕协调原子建模,每个聊天室/游戏/用户一个 DO;用 getByName() 做确定性路由;使用 SQLite 存储并在迁移中配置 new_sqlite_classes;仅在构造函数中用 blockConcurrencyWhile() 初始化 schema;使用 RPC 方法而非 fetch() 处理器(兼容日期 >= 2024-04-03);先持久化再缓存;每个 DO 一个 alarm,setAlarm() 会替换已有 alarm。
限制与反模式:避免单一全局 DO 处理所有请求、每次请求都用 blockConcurrencyWhile()、仅将关键状态存于内存、在相关存储写入之间使用 await、在 fetch() 或外部 I/O 期间持有 blockConcurrencyWhile()。具体价格、平台支持范围等资料暂未提供。