1.1 KiB
1.1 KiB
ADR 000X: [简短的决策标题]
- 状态: [已提议 | 已通过 | 已废弃 | 已取代]
- 决策人: [姓名]
- 日期: [YYYY-MM-DD]
1. 背景 (Context)
描述我们需要解决的问题是什么,以及当前的限制条件。 例如:当前的标书生成速度过慢(平均 5分钟),因为是同步调用 LLM。并发量上来后,服务器阻塞严重。
2. 决策 (Decision)
描述我们决定做什么。 例如:我们将引入 Celery + Redis 实现异步任务队列,将生成任务剥离出主线程。
3. 备选方案 (Alternatives)
我们还考虑了什么方案?为什么没选?
- 方案 A:使用 Python 原生 asyncio。
- 原因:CPU 密集型任务下 asyncio 表现不佳,且无法跨机器扩展。
- 方案 B:使用 Kafka。
- 原因:对于当前体量,Kafka 运维成本过高,Redis 足够轻量。
4. 后果 (Consequences)
决策带来的好处和坏处(权衡)。
- 好:API 响应时间降至 100ms;支持水平扩展 Worker 节点。
- 坏:增加了运维 Redis 和 Celery Worker 的复杂度;调试异步任务比同步代码困难。