@dtt_siye/atool 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -214
- package/README.md.atool-backup.20260410_114701 +299 -0
- package/VERSION +1 -1
- package/bin/atool.js +55 -9
- package/install.sh +14 -4
- package/lib/install-cursor.sh +22 -0
- package/lib/install-kiro.sh +26 -2
- package/lib/pre-scan.sh +3 -1
- package/lib/project-init.sh +28 -9
- package/package.json +1 -1
- package/skills/ai-project-architecture/SKILL.md +33 -534
- package/skills/ai-project-architecture/rules/architecture-validation.md +200 -0
- package/skills/ai-project-architecture/rules/compliance-check.md +83 -0
- package/skills/ai-project-architecture/rules/iron-laws.md +188 -0
- package/skills/ai-project-architecture/rules/migration.md +94 -0
- package/skills/ai-project-architecture/rules/refactoring.md +91 -0
- package/skills/ai-project-architecture/rules/testing.md +249 -0
- package/skills/ai-project-architecture/rules/verification.md +111 -0
- package/skills/atool-init/SKILL.md +24 -4
- package/skills/clarify-before-build/SKILL.md +33 -0
- package/skills/development-pipeline/SKILL.md +168 -0
- package/skills/project-analyze/SKILL.md +29 -8
- package/skills/project-analyze/phases/phase1-setup.md +61 -4
- package/skills/project-analyze/phases/phase2-understand.md +129 -27
- package/skills/project-analyze/phases/phase3-graph.md +32 -4
- package/skills/project-analyze/prompts/understand-agent.md +156 -298
- package/skills/project-analyze/rules/java.md +69 -1
- package/skills/project-query/SKILL.md +64 -734
- package/skills/project-query/rules/aggregate-stats.md +301 -0
- package/skills/project-query/rules/data-lineage.md +228 -0
- package/skills/project-query/rules/impact-analysis.md +218 -0
- package/skills/project-query/rules/neighborhood.md +234 -0
- package/skills/project-query/rules/node-lookup.md +97 -0
- package/skills/project-query/rules/path-query.md +135 -0
- package/skills/software-architecture/SKILL.md +39 -501
- package/skills/software-architecture/rules/concurrency-ha.md +346 -0
- package/skills/software-architecture/rules/ddd.md +450 -0
- package/skills/software-architecture/rules/decision-workflow.md +155 -0
- package/skills/software-architecture/rules/deployment.md +508 -0
- package/skills/software-architecture/rules/styles.md +232 -0
- package/skills/ui-ux-pro/SKILL.md +69 -0
- package/skills/writing-plans/SKILL.md +104 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
# High-Concurrency & High-Avability Design - 高并发与高可用设计
|
|
2
|
+
|
|
3
|
+
## 高并发设计八步法
|
|
4
|
+
|
|
5
|
+
### 1. 无状态设计 (Statelessness)
|
|
6
|
+
**核心原则**:
|
|
7
|
+
```markdown
|
|
8
|
+
- 优先使用无状态服务
|
|
9
|
+
- 使用基于令牌的上下文传递
|
|
10
|
+
- 避免粘性会话
|
|
11
|
+
- 会话数据外部存储
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**实现方式**:
|
|
15
|
+
```python
|
|
16
|
+
# ❌ 有状态设计
|
|
17
|
+
class UserService:
|
|
18
|
+
def __init__(self):
|
|
19
|
+
self.cache = {} # 存储在内存中
|
|
20
|
+
|
|
21
|
+
def get_user(self, user_id):
|
|
22
|
+
if user_id in self.cache:
|
|
23
|
+
return self.cache[user_id]
|
|
24
|
+
# ... 从数据库加载
|
|
25
|
+
|
|
26
|
+
# ✅ 无状态设计
|
|
27
|
+
class UserService:
|
|
28
|
+
def __init__(self, redis_client):
|
|
29
|
+
self.redis = redis_client # 外部缓存
|
|
30
|
+
|
|
31
|
+
def get_user(self, user_id):
|
|
32
|
+
# 从缓存或数据库获取
|
|
33
|
+
return self.redis.get(f"user:{user_id}")
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. 分层拆分 (Splitting)
|
|
37
|
+
**拆分策略**:
|
|
38
|
+
```markdown
|
|
39
|
+
### 按业务域拆分
|
|
40
|
+
- 用户域 (user)
|
|
41
|
+
- 订单域 (order)
|
|
42
|
+
- 支付域 (payment)
|
|
43
|
+
- 商品域 (product)
|
|
44
|
+
|
|
45
|
+
### 按读写特性拆分
|
|
46
|
+
- 读服务:只读,可缓存
|
|
47
|
+
- 写服务:写操作,强一致性
|
|
48
|
+
- 分析服务:离线处理
|
|
49
|
+
|
|
50
|
+
### 按功能/子能力拆分
|
|
51
|
+
- 核心功能:高优先级
|
|
52
|
+
- 辅助功能:低优先级
|
|
53
|
+
- 基础设施:通用服务
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. 服务治理 (Service Governance)
|
|
57
|
+
**治理组件**:
|
|
58
|
+
```markdown
|
|
59
|
+
### 服务发现
|
|
60
|
+
- 注册中心:Eureka, Consul, Nacos
|
|
61
|
+
- 健康检查:心跳检测
|
|
62
|
+
- 负载均衡:轮询、加权、一致性哈希
|
|
63
|
+
|
|
64
|
+
### 超时与重试
|
|
65
|
+
- 超时设置:读操作 < 写操作 < 外部调用
|
|
66
|
+
- 重试策略:指数退避、熔断机制
|
|
67
|
+
- 降级策略:默认值、缓存数据
|
|
68
|
+
|
|
69
|
+
### 限流与熔断
|
|
70
|
+
- 令牌桶算法:平滑限流
|
|
71
|
+
- 漏桶算法:突发流量控制
|
|
72
|
+
- 熔断器:快速失败
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 4. 缓存分层设计
|
|
76
|
+
**缓存层次**:
|
|
77
|
+
```markdown
|
|
78
|
+
### 客户端缓存
|
|
79
|
+
- 浏览器缓存 (HTTP Cache)
|
|
80
|
+
- 移动端缓存 (SQLite)
|
|
81
|
+
- CDN缓存 (静态资源)
|
|
82
|
+
|
|
83
|
+
### 边缘缓存
|
|
84
|
+
- CDN边缘节点
|
|
85
|
+
- 网关缓存
|
|
86
|
+
- 接入层缓存
|
|
87
|
+
|
|
88
|
+
### 应用缓存
|
|
89
|
+
- 本地缓存 (Caffeine, Guava)
|
|
90
|
+
- 分布式缓存 (Redis, Memcached)
|
|
91
|
+
- 多级缓存架构
|
|
92
|
+
|
|
93
|
+
### 数据层缓存
|
|
94
|
+
- 数据库缓存 (MySQL Query Cache)
|
|
95
|
+
- ORM缓存 (Hibernate Cache)
|
|
96
|
+
- 查询结果缓存
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**缓存策略**:
|
|
100
|
+
```markdown
|
|
101
|
+
### 缓存对象选择
|
|
102
|
+
- 热点数据 (80/20法则)
|
|
103
|
+
- 读取频繁,写入较少
|
|
104
|
+
- 实时性要求不高的数据
|
|
105
|
+
|
|
106
|
+
### TTL策略
|
|
107
|
+
- 短TTL:实时数据 (30秒-5分钟)
|
|
108
|
+
- 中TTL:准实时数据 (5-30分钟)
|
|
109
|
+
- 长TTL:静态数据 (30分钟-24小时)
|
|
110
|
+
|
|
111
|
+
### 失效策略
|
|
112
|
+
- 主动失效:数据变更时
|
|
113
|
+
- 被动失效:定时过期
|
|
114
|
+
- 条件失效:基于业务逻辑
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 5. 消息队列与异步
|
|
118
|
+
**MQ使用场景**:
|
|
119
|
+
```markdown
|
|
120
|
+
### 解耦
|
|
121
|
+
- 服务间异步通信
|
|
122
|
+
- 削峰填谷
|
|
123
|
+
- 事件驱动架构
|
|
124
|
+
|
|
125
|
+
### 非阻塞工作
|
|
126
|
+
- 耗时操作异步化
|
|
127
|
+
- 批处理任务
|
|
128
|
+
- 后台处理
|
|
129
|
+
|
|
130
|
+
### 流量缓冲
|
|
131
|
+
- 突发流量处理
|
|
132
|
+
- 峰值削平
|
|
133
|
+
- 系统保护
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**消息策略**:
|
|
137
|
+
```markdown
|
|
138
|
+
### 消息类型
|
|
139
|
+
- 事件 (Event):状态变更通知
|
|
140
|
+
- 命令 (Command):执行特定操作
|
|
141
|
+
- 请求 (Request):同步请求
|
|
142
|
+
|
|
143
|
+
### 重试与死信
|
|
144
|
+
- 重试机制:指数退避
|
|
145
|
+
- 死信队列:失败消息处理
|
|
146
|
+
- 补偿机制:事务回滚
|
|
147
|
+
|
|
148
|
+
### 顺序保证
|
|
149
|
+
- 分区 (Partition):消息顺序
|
|
150
|
+
- 消费者组:并行处理
|
|
151
|
+
- 幂等性:重复处理
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 6. 减少请求次数
|
|
155
|
+
**优化策略**:
|
|
156
|
+
```markdown
|
|
157
|
+
### 静态化
|
|
158
|
+
- CDN加速
|
|
159
|
+
- 浏览器缓存
|
|
160
|
+
- 预渲染页面
|
|
161
|
+
|
|
162
|
+
### 请求合并
|
|
163
|
+
- 批量查询
|
|
164
|
+
- 管道传输
|
|
165
|
+
- 数据聚合
|
|
166
|
+
|
|
167
|
+
### 限流与整形
|
|
168
|
+
- 令牌桶
|
|
169
|
+
- 漏桶
|
|
170
|
+
- 速率限制
|
|
171
|
+
|
|
172
|
+
### 连接优化
|
|
173
|
+
- 连接池
|
|
174
|
+
- HTTP/2多路复用
|
|
175
|
+
- Keep-Alive
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 7. 优化关键路径
|
|
179
|
+
**并行处理**:
|
|
180
|
+
```markdown
|
|
181
|
+
### 独立步骤并行化
|
|
182
|
+
- 异步通知
|
|
183
|
+
- 并行计算
|
|
184
|
+
- 流水线处理
|
|
185
|
+
|
|
186
|
+
### 异步模式
|
|
187
|
+
- 发布订阅
|
|
188
|
+
- 事件驱动
|
|
189
|
+
- 回调机制
|
|
190
|
+
|
|
191
|
+
### 读写分离
|
|
192
|
+
- 主从复制
|
|
193
|
+
- 读写分离
|
|
194
|
+
- 分库分表
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### 8. 资源扩展策略
|
|
198
|
+
**扩展方式**:
|
|
199
|
+
```markdown
|
|
200
|
+
### 水平扩展
|
|
201
|
+
- 无状态服务实例
|
|
202
|
+
- 负载均衡
|
|
203
|
+
- 自动伸缩
|
|
204
|
+
|
|
205
|
+
### 垂直扩展
|
|
206
|
+
- 服务器升级
|
|
207
|
+
- 优化配置
|
|
208
|
+
- 性能调优
|
|
209
|
+
|
|
210
|
+
### 弹性设计
|
|
211
|
+
- 自动伸缩
|
|
212
|
+
- 资源限制
|
|
213
|
+
- 优雅降级
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 高可用设计原则
|
|
217
|
+
|
|
218
|
+
### 1. 降级策略 (Degradation)
|
|
219
|
+
```markdown
|
|
220
|
+
### 集中式降级开关
|
|
221
|
+
- 统一控制降级逻辑
|
|
222
|
+
- 实时生效
|
|
223
|
+
- 灰度发布支持
|
|
224
|
+
|
|
225
|
+
### 降级策略
|
|
226
|
+
- 本地缓存:降级到缓存数据
|
|
227
|
+
- 陈旧数据:降级到历史数据
|
|
228
|
+
- 只读模式:降级到只读功能
|
|
229
|
+
|
|
230
|
+
### 前置降级
|
|
231
|
+
- 网关层降级
|
|
232
|
+
- Nginx层面降级
|
|
233
|
+
- CDN层面降级
|
|
234
|
+
|
|
235
|
+
### 业务优先级降级
|
|
236
|
+
- 核心流程:保持运行
|
|
237
|
+
- 非核心功能:延迟/禁用
|
|
238
|
+
- 可选功能:暂时关闭
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 2. 限流与保护
|
|
242
|
+
```markdown
|
|
243
|
+
### 流量控制
|
|
244
|
+
- 恶意流量识别
|
|
245
|
+
- 异常IP拦截
|
|
246
|
+
- 网关层面限流
|
|
247
|
+
|
|
248
|
+
### 限流算法
|
|
249
|
+
- 固定窗口
|
|
250
|
+
- 滑动窗口
|
|
251
|
+
- 令牌桶
|
|
252
|
+
- 漏桶
|
|
253
|
+
|
|
254
|
+
### 保护机制
|
|
255
|
+
- 熔断器
|
|
256
|
+
- 隔离舱
|
|
257
|
+
- 超时控制
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### 3. 回滚策略
|
|
261
|
+
```markdown
|
|
262
|
+
### 必需元素
|
|
263
|
+
- 回滚路径
|
|
264
|
+
- 稳定版本引用
|
|
265
|
+
- 灰度发布策略
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 4. 监控与告警
|
|
269
|
+
**监控体系**:
|
|
270
|
+
```markdown
|
|
271
|
+
### 基础监控
|
|
272
|
+
- 指标 (Metrics):QPS、响应时间、错误率
|
|
273
|
+
- 日志 (Logs):应用日志、系统日志
|
|
274
|
+
- 追踪 (Traces):分布式追踪
|
|
275
|
+
|
|
276
|
+
### 业务监控
|
|
277
|
+
- 业务指标:订单量、用户数、交易额
|
|
278
|
+
- 错误监控:业务错误率
|
|
279
|
+
- 性能监控:关键路径性能
|
|
280
|
+
|
|
281
|
+
### 告警配置
|
|
282
|
+
- 阈值设置:P99、P95、平均响应时间
|
|
283
|
+
- 告警级别:紧急、重要、警告
|
|
284
|
+
- 通知方式:短信、电话、邮件、钉钉
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## 高并发与高可用模式
|
|
288
|
+
|
|
289
|
+
### 模式1:CQRS模式
|
|
290
|
+
```markdown
|
|
291
|
+
### 命令端 (Command)
|
|
292
|
+
- 处理写操作
|
|
293
|
+
- 强一致性
|
|
294
|
+
- 低延迟
|
|
295
|
+
|
|
296
|
+
### 查询端 (Query)
|
|
297
|
+
- 处理读操作
|
|
298
|
+
- 最终一致性
|
|
299
|
+
- 高性能
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 模式2:事件溯源
|
|
303
|
+
```markdown
|
|
304
|
+
### 事件存储
|
|
305
|
+
- 所有状态变更记录为事件
|
|
306
|
+
- 不可变存储
|
|
307
|
+
- 时间序列
|
|
308
|
+
|
|
309
|
+
### 事件重放
|
|
310
|
+
- 状态重建
|
|
311
|
+
- 审计日志
|
|
312
|
+
- 业务追溯
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 模式3:Saga模式
|
|
316
|
+
```markdown
|
|
317
|
+
### 分布式事务
|
|
318
|
+
- 基于补偿机制
|
|
319
|
+
- 最终一致性
|
|
320
|
+
- 可回滚操作
|
|
321
|
+
|
|
322
|
+
### 消息补偿
|
|
323
|
+
- 正常流程:发送消息
|
|
324
|
+
- 补偿流程:反向操作
|
|
325
|
+
- 重试机制:指数退避
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## 设计检查清单
|
|
329
|
+
|
|
330
|
+
### 设计前
|
|
331
|
+
- [ ] 明确定义性能目标 (QPS、响应时间)
|
|
332
|
+
- [ ] 识别关键路径和瓶颈
|
|
333
|
+
- [ ] 评估业务优先级
|
|
334
|
+
- [ ] 考虑成本约束
|
|
335
|
+
|
|
336
|
+
### 设计中
|
|
337
|
+
- [ ] 实现无状态设计
|
|
338
|
+
- [ ] 设计合理的缓存策略
|
|
339
|
+
- [ ] 使用异步解耦
|
|
340
|
+
- [ ] 实现降级和限流
|
|
341
|
+
|
|
342
|
+
### 设计后
|
|
343
|
+
- [ ] 建立监控体系
|
|
344
|
+
- [ ] 制定应急预案
|
|
345
|
+
- [ ] 进行性能压测
|
|
346
|
+
- [ ] 验证高可用性
|