ARC 1先看见共享状态第 1–4 章

第一篇回顾 —— 先看见共享状态(第 1–4 章)

第一篇从业务责任边界推进到双节点可见,尚未覆盖并发冲突、repair 或生产网络。

本篇形成的认识

  • 第 1 章先把订单、支付和事件历史留在各自事实源,只把可修复协同状态交给 DSM。
  • 第 2 章建立 Runtime 生命周期,并把本地 put 成功限定为本地提交。
  • 第 3 章用 locator、entry key、entity、metadata、codec 和 schema 建立稳定身份。
  • 第 4 章观察在线 delta,让节点 B 在本地提交之后最终读到节点 A 的 RouteHint。

可验证的学习结果

  • 判断一个状态是否具备「可从同伴修复或从权威源重建」的前提。
  • 构建单节点 Runtime,注册并关闭集合。
  • 为 RouteHint 选择稳定 key 和明确 schema。
  • 用条件等待和 REMOTE_DELTA 证明受控双节点传播。

本篇如何兑现 DSM 价值

第一篇把“共享状态”落实为可检查的责任边界、稳定身份、Runtime 生命周期和远端可见性。业务服务可以复用集合注册、状态编码和基础传播入口,同时仍需决定哪些状态适合共享,以及本地成功后何时可以依赖远端结果。

四个容易混淆的时刻

时刻 已经证明 还没有证明
runtime.start() 返回 本地 Runtime 进入运行生命周期 peer 已发现、集合已同步
register.put() 返回 本地接受变更 任一远端已应用
节点 B get() 命中 B 当前可见该值 所有节点相同、不会再冲突
双节点测试通过 固定源码在受控 fake membership 下满足断言 真实网络、生产容量、故障修复

常见错误

错误 纠正
把 DSM 当事务数据库 从不可撤销业务承诺和审计责任重新分类
每次发布用新 entry key 用稳定业务身份,让 Register 更新同一逻辑条目
用 sleep 验证复制 等待目标条件并设置明确超时
测试通过就宣称生产可用 写出测试拓扑、通信实现和未覆盖边界

迁移练习

给「临时功能开关」写两份设计:一份有权威配置中心,DSM 只保存可重建 hint;另一份没有权威源、开关直接控制资金动作。解释为什么前者可能进入 DSM,而后者需要更强的事实与审计系统。

下一步

进入第二篇,用 Register、Lease 和 CRDT 分别回答当前值、所有权和可合并更新。