25 lines
1.1 KiB
Markdown
25 lines
1.1 KiB
Markdown
# 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 的复杂度;调试异步任务比同步代码困难。 |