70 lines
2.5 KiB
Markdown
70 lines
2.5 KiB
Markdown
# Plan — Round 2 Performance Evaluation (2026-05-26)
|
||
|
||
> Agent: council/PerformanceBenchmarker
|
||
|
||
## Phase: Draft → Review → Finalize
|
||
|
||
---
|
||
|
||
## 评估任务清单
|
||
|
||
- [x] **Task 1**: [Done: PerformanceBenchmarker] 检查 git log 和文件结构
|
||
- [x] **Task 2**: [Done: PerformanceBenchmarker] 探索 SeatMapService + seatmap API + SKIP LOCKED 实现
|
||
- [x] **Task 3**: [Done: PerformanceBenchmarker] 输出 Round 1 性能评估报告
|
||
- [x] **Task 4**: [Done: PerformanceBenchmarker] Round 2:代码实测验证 + 交叉审查其他成员报告
|
||
- [x] **Task 5**: [Pending] 等待西莉雅汇总最终报告
|
||
|
||
---
|
||
|
||
## 阶段划分
|
||
|
||
| 阶段 | 内容 | 状态 |
|
||
|------|------|------|
|
||
| **Draft** | Task 1-3(独立评估 Round 1) | ✅ 完成 |
|
||
| **Review** | Task 4(代码实测 + 交叉审查) | ✅ 完成 |
|
||
| **Finalize** | 西莉雅汇总所有成员报告 | ⏳ 等待西莉雅 |
|
||
|
||
---
|
||
|
||
## 依赖关系
|
||
|
||
- 本轮评估无对其他成员的依赖,可独立完成
|
||
- 最终综合报告由西莉雅(协调者)负责
|
||
|
||
---
|
||
|
||
## 投票结果
|
||
|
||
**议题:下一步主攻方向**
|
||
- 投票:**C(双线并行)**(Round 1 + Round 2 一致)
|
||
|
||
详见 `docs/council-eval-performancebenchmark.md`
|
||
|
||
---
|
||
|
||
## 关键发现摘要(Round 2 修正版)
|
||
|
||
| # | 严重程度 | 问题 | 量化 |
|
||
|---|----------|------|------|
|
||
| P1-R2 | 🔴 严重 | seatmap API 全量扫描无缓存过滤 | 500 并发 = 2.5 GB/s |
|
||
| P2-R2 | 🟡 高 | `SeatSkuService::getSoldSeats()` 方法缺失(与 BackendArchitect P0-1 双重确认) | soldSeats stub |
|
||
| P3-R2 | 🟡 高 | 无细粒度差量轮询 API,所有用户全量拉取 | 500 并发 = 2500 DB SELECT/s |
|
||
| P4-R2 | 🟡 高 | inventory > 0 vs =0 两套逻辑不一致 | 状态不一致窗口 |
|
||
| P5-R2 | 🟢 中 | verifyTicket() 无 SKIP LOCKED | 低频,优化非必须 |
|
||
| P6-R2 | 🟢 中 | onOrderPaid 无事务包装 | P2(SecurityEngineer 已评) |
|
||
|
||
**超卖归因修正(Round 2 关键)**:
|
||
- ShopXO `dec()` 原子条件 UPDATE = 主要防线,不需要 FOR UPDATE SKIP LOCKED
|
||
- issueTicket() TOCTOU = P1-suggestion(唯一索引修复),非 P0
|
||
- verifyTicket() = 已有 `lock(true)`,SKIP LOCKED 是优化非必须
|
||
|
||
---
|
||
|
||
## 优先级建议(基于修正后 P 表)
|
||
|
||
1. **P0**:添加 `(goods_id, inventory, id)` 复合索引 → 消除全量扫描
|
||
2. **P0**:`SeatSkuService::getSoldSeats()` 实现 → 解锁 soldSeats API
|
||
3. **P1**:新增 `GET /seatmap/delta` 差量轮询 API → 降低 80% 带宽和 DB QPS
|
||
4. **P1**:加唯一索引 `(order_id, seat_info)`(SecurityEngineer 建议)
|
||
5. **P2**:Phase 4 Tree API 实现
|