跳转到内容

x/data Primer

实验性 — API 兼容性未冻结。采用前请先评估。查看发布策略了解当前成熟度。

当你已经通过 x/* 家族 确认问题属于不应留在稳定 store 层的高级数据拓扑时,打开这一页:读写分离编排、分片与路由拓扑、超出 store/kv 的持久化 KV 引擎,或超出 store/idempotency 的幂等性提供者。

x/data 是拓扑型数据能力的规范入口点。其下级包 x/data/cache(带一致性哈希、复制、故障转移和 Redis 适配器的分布式缓存)首先通过 x/data 访问,而不是直接打开。

x/data 在家族层面是实验性的。两个下级包自 v1.1.0 起带有更窄的 beta surface 承诺——其导出 API 在 v1.0.0 → v1.1.0 期间未发生变化,并已有 owner 签字记录:

子包分级含义
filebeta surfaceAPI 在连续两个发布版本中未变化;通过应用本地 adapter 采用
idempotencybeta surfaceAPI 在连续两个发布版本中未变化;通过应用本地 adapter 采用
cachekvenginemigratepgxrwshardingsqlxexperimental可能在没有弃用期的情况下发生变化

在稳定生产路径中依赖任何 x/data 子包之前,请查看发布策略

  • 你正在实现或修改主从路由的读写分离(rw/
  • 你正在添加分片或数据路由拓扑逻辑(sharding/
  • 你正在构建超出稳定 store/kv 基础元语的持久化 KV 引擎实现(kvengine/
  • 你正在实现超出 store/idempotency 的带持久化存储的幂等性提供者(idempotency/
  • 你正在添加按租户范围数据访问的 tenant 感知拓扑适配器
  • 你需要分布式或 Redis 缓存拓扑 — 在打开 x/data/cache 前先在此确认归属
  • 改动关于稳定持久化基础元语 — 那属于 store(cache、db、file、kv、idempotency 接口)
  • 工作是业务仓库逻辑,如领域专属查询构建器或数据映射器 — 保留在应用代码中
  • 改动关于文件操作的 HTTP 传输 — 那属于 x/fileapi
  • 工作是简单的进程内缓存 — 直接使用 store/cache 中的 cache.MemoryCache
  1. x/data/module.yaml
  2. x/data/rw/(读写分离)
  3. x/data/sharding/(路由拓扑)
  4. x/data/kvengine/(持久化 KV)
  5. x/data/idempotency/(幂等性提供者)
  6. x/data/cache/(如果涉及分布式或 Redis 缓存拓扑)
这些工作适合留在 x/data一旦变成这些问题就应移出
rw:主从选择、读偏好路由、故障转移协调稳定 store/db 接口定义
sharding:分片键解析、环拓扑、分片感知查询路由烘焙进领域查询的业务专属分区策略
kvengine:带 WAL、压缩或分层存储的持久化 KV 实现稳定 store/kv 接口 — 那是内核合约
idempotency:带 TTL 和存储后端的持久化幂等性提供者稳定 store/idempotency 接口或业务重复数据删除逻辑
分布式或 Redis 缓存拓扑 → 通过 x/data/cache 访问x/data/cache 成为新数据工作的竞争性家族入口点

稳定 store 层定义接口和简单基础元语。拓扑型行为——分片、读写分离、故障转移——属于这里,因为它们引入了稳定层不能吸收的复杂性和可选性。x/data/cache 是下级包:为新的分布式缓存工作直接打开它会绕过防止边界漂移的家族归属检查。