1000f8a80d
- Add gRPC service modules: auth, channel, channel settings, member, permission - Update protobuf definitions and generated code - Remove immediate/ real-time module (superseded by IM service) - Update etcd discovery and registration - Update cache, error, config, and build infrastructure - Add ADR documentation - Update OpenAPI spec
50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
# ADR-002: 两级缓存架构 / Two-Tier Caching Architecture
|
||
|
||
## 状态 / Status
|
||
|
||
**Accepted**
|
||
|
||
**日期 / Date**: 2024-01-01
|
||
|
||
## 背景 / Context
|
||
|
||
平台需要缓存机制来减少数据库负载,提高响应速度。需要在性能和一致性之间取得平衡。
|
||
|
||
The platform needs a caching mechanism to reduce database load and improve response times. A balance between performance and consistency is required.
|
||
|
||
## 决策 / Decision
|
||
|
||
采用 **两级缓存架构**:L1 (内存 LRU-TTL) + L2 (Redis)。
|
||
|
||
Adopted **two-tier caching**: L1 (in-memory LRU-TTL) + L2 (Redis).
|
||
|
||
## 考虑的方案 / Considered Options
|
||
|
||
1. **纯 Redis** — 简单但网络延迟高
|
||
2. **纯内存缓存** — 快但不跨实例共享
|
||
3. **两级缓存** — 兼顾速度和共享
|
||
|
||
## 后果 / Consequences
|
||
|
||
### 正面 / Positive
|
||
|
||
- L1 提供极低延迟 / L1 provides ultra-low latency
|
||
- L2 提供跨实例共享 / L2 provides cross-instance sharing
|
||
- 减少数据库负载 / Reduces database load
|
||
|
||
### 负面 / Negative
|
||
|
||
- 缓存一致性复杂 / Cache consistency is complex
|
||
- 内存占用增加 / Increased memory usage
|
||
|
||
### 风险 / Risks
|
||
|
||
- 缓存雪崩 / Cache avalanche
|
||
- 缓存穿透 / Cache penetration
|
||
|
||
## 实现细节 / Implementation Details
|
||
|
||
- **L1**: `DashMap + Mutex<LruTracker>`, TTL 5 分钟
|
||
- **L2**: Redis via r2d2, TTL 可配置
|
||
- **策略**: L1 miss → L2 miss → 数据库查询
|