ADR-0003 能力分层与部署分级
This page isn't translated yet — showing the Chinese version.
- 状态:已接受
- 日期:2026-10-22
部署者规模差异巨大(10 人私服 vs 10k 公共平台),不可能也不应该要求所有人装全家桶。同时要避免“为演进先砍功能”的短视。
- 能力分层:外部组件(认证/存储/搜索/缓存/限流/队列/邮件)全部藏在 Go 接口后(见
Mythicove/shared),业务代码只依赖接口。 - 部署分级:A(10
100)/B(1001k)/C(1k5k)/D(5k10k+) 四档,各自给定资源与必选/可选组件。 - 组件可选:Zitadel(认证)、Meilisearch(仅 Hoard 搜索)、Redis(缓存/限流)、asynq(队列)均为可选,低档用进程内/PG 降级实现,不改业务代码。
- “Zitadel 可选、Meili 可选、Redis 可选”是架构保证,而非演进妥协——小部署单二进制 + Postgres 即可跑,大部署无痛切到完整全家桶。
- 接口分层让 A→D 是“加资源/换实现”,而非改代码。
- 正:部署门槛低、运维可选、横向扩展无痛。
- 负:需为每个能力维护“低档 + 高档”两套实现,并做契约测试锁定行为一致性(尤其
Search的 pg_trgm → Meilisearch 切换)。

