Skip to content

ADR-0003 能力分层与部署分级

This page isn't translated yet — showing the Chinese version.

  • 状态:已接受
  • 日期:2026-10-22

部署者规模差异巨大(10 人私服 vs 10k 公共平台),不可能也不应该要求所有人装全家桶。同时要避免“为演进先砍功能”的短视。

  • 能力分层:外部组件(认证/存储/搜索/缓存/限流/队列/邮件)全部藏在 Go 接口后(见 Mythicove/shared),业务代码只依赖接口。
  • 部署分级:A(10100)/B(1001k)/C(1k5k)/D(5k10k+) 四档,各自给定资源与必选/可选组件。
  • 组件可选:Zitadel(认证)、Meilisearch(仅 Hoard 搜索)、Redis(缓存/限流)、asynq(队列)均为可选,低档用进程内/PG 降级实现,不改业务代码。
  • “Zitadel 可选、Meili 可选、Redis 可选”是架构保证,而非演进妥协——小部署单二进制 + Postgres 即可跑,大部署无痛切到完整全家桶。
  • 接口分层让 A→D 是“加资源/换实现”,而非改代码。
  • 正:部署门槛低、运维可选、横向扩展无痛。
  • 负:需为每个能力维护“低档 + 高档”两套实现,并做契约测试锁定行为一致性(尤其 Search 的 pg_trgm → Meilisearch 切换)。