35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
# 架构决策记录
|
||
|
||
## ADR-001:控制面与数据面分离
|
||
|
||
**状态:** 接受。
|
||
|
||
Gateway 只依赖本地不可变 Snapshot;Provider、数据库、配置重载和健康聚合
|
||
位于 Controller/Checker。该选择隔离外部 I/O 抖动,并允许数据面按 QPS、
|
||
控制面按 Provider/库存规模独立扩容。
|
||
|
||
## ADR-002:Distribution 使用独占提取
|
||
|
||
**状态:** 接受并覆盖早期 Lease 方案。
|
||
|
||
成功响应前在一个事务中执行 `AVAILABLE -> EXTRACTED`。系统保存审计事实,
|
||
但不提供 release、renew 或使用跟踪。这样契合“拿走真实代理后平台不再管理”
|
||
的最终产品语义,并消除重复发放。
|
||
|
||
## ADR-003:单 Worker 所有权
|
||
|
||
**状态:** 接受。
|
||
|
||
一个 Proxy 同一时刻至多归属一个 Worker,Gateway 在本地维护 Active/Reserved。
|
||
Distribution 只提取无所有权 Proxy;回收时执行 drain/ACK/归零/解除所有权。
|
||
该选择避免每请求访问 Redis 做全局并发计数。
|
||
|
||
## ADR-004:PostgreSQL 权威、Redis 可重建
|
||
|
||
**状态:** 接受。
|
||
|
||
Proxy 状态、Extraction、配置版本和 Outbox 由 PostgreSQL 持久化。Redis 只
|
||
承担 Leader、短期速率与心跳等协调;Redis 丢失后可从权威状态恢复,避免
|
||
双写状态成为不可判定的事实源。
|
||
|