Agent Skills
返回列表
💻

持久化对象

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/kg-durable-objects

技能介绍

解决的问题

在 Cloudflare Workers 上构建实时协作或状态化应用时,开发者常面临强一致性、实体协调和状态持久化的挑战。例如,聊天室需要消息顺序一致,库存系统需要原子扣减,多人游戏需要状态同步。传统无状态 Workers 难以处理这些场景,而分散的存储方案可能导致数据不一致或协调困难。

技能如何工作

核心能力包括将协调原子(如单个聊天室、用户或游戏)建模为独立 DO 实例,通过 getByName() 确定性路由确保同一输入指向同一实例,使用 SQLite 存储实现数据持久化,利用 RPC 方法替代 fetch handler 提升兼容性,并通过 setAlarm() 实现每实体定时任务。关键步骤包括:

  1. 确认是否需要 DO,避免无状态 CRUD 场景误用
  2. 定义协调原子,避免全局单例
  3. 编写 wrangler 配置声明绑定与迁移
  4. 实现 DO 类,在构造函数中用 blockConcurrencyWhile() 初始化表结构
  5. 同步写入 storage.sql.exec,先持久化再更新内存状态
  6. 使用 @cloudflare/vitest-pool-workers 进行 RPC 方法单测
  7. 对照关键规则和反模式清单审查代码

适用边界与注意点

DO 适用于需要强一致性、实体协调或持久连接的场景,如聊天室、库存系统、WebSocket 长连接。但不适用于无状态请求处理(应使用普通 Workers)、全球分布式无协调读(使用 KV/缓存)或高扇出独立请求。需避免单一全局 DO、每次请求调用 blockConcurrencyWhile()、关键状态仅存内存等反模式,确保数据持久化和原子操作。

使用场景

  • 在Cloudflare Workers上开发实时聊天室时需确保消息顺序一致,用DO实现每房间独立协调与SQLite存储
  • 构建多租户SaaS应用时需为每个用户隔离数据,通过DO绑定独立存储实例实现多租户数据隔离
  • 开发多人协作游戏时需处理回合制状态同步,用DO的强一致性保证游戏状态不冲突
  • 设计库存系统时需原子扣减库存并设置每实体定时任务,用DO+setAlarm实现库存自动续期

适合人员

  • 边缘计算工程师需在Workers上实现实时状态应用并处理强一致性需求
  • 后端架构师关注多租户数据隔离和库存原子操作
  • 实时系统开发者构建聊天室/游戏时需解决实体协调问题
  • 云原生团队需理解DO适用场景与反模式避免设计错误