code-yangzz 1.0.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.
Files changed (108) hide show
  1. package/README.md +102 -0
  2. package/agents/meta-artisan.md +164 -0
  3. package/agents/meta-conductor.md +482 -0
  4. package/agents/meta-genesis.md +165 -0
  5. package/agents/meta-librarian.md +213 -0
  6. package/agents/meta-prism.md +268 -0
  7. package/agents/meta-scout.md +173 -0
  8. package/agents/meta-sentinel.md +161 -0
  9. package/agents/meta-warden.md +304 -0
  10. package/bin/install.js +390 -0
  11. package/bin/lib/utils.js +72 -0
  12. package/bin/lib/watermark.js +176 -0
  13. package/config/CLAUDE.md +363 -0
  14. package/config/settings.json +120 -0
  15. package/hooks/block-dangerous-bash.mjs +36 -0
  16. package/hooks/post-console-log-warn.mjs +27 -0
  17. package/hooks/post-format.mjs +24 -0
  18. package/hooks/post-typecheck.mjs +27 -0
  19. package/hooks/pre-git-push-confirm.mjs +19 -0
  20. package/hooks/stop-completion-guard.mjs +159 -0
  21. package/hooks/stop-console-log-audit.mjs +44 -0
  22. package/hooks/subagent-context.mjs +27 -0
  23. package/hooks/user-prompt-submit.js +233 -0
  24. package/package.json +36 -0
  25. package/prompt-optimizer/prompt-optimizer-meta.md +159 -0
  26. package/skills/agent-teams/SKILL.md +215 -0
  27. package/skills/domains/ai/SKILL.md +34 -0
  28. package/skills/domains/ai/agent-dev.md +242 -0
  29. package/skills/domains/ai/llm-security.md +288 -0
  30. package/skills/domains/ai/prompt-and-eval.md +279 -0
  31. package/skills/domains/ai/rag-system.md +542 -0
  32. package/skills/domains/architecture/SKILL.md +42 -0
  33. package/skills/domains/architecture/api-design.md +225 -0
  34. package/skills/domains/architecture/caching.md +298 -0
  35. package/skills/domains/architecture/cloud-native.md +285 -0
  36. package/skills/domains/architecture/message-queue.md +328 -0
  37. package/skills/domains/architecture/security-arch.md +297 -0
  38. package/skills/domains/data-engineering/SKILL.md +207 -0
  39. package/skills/domains/development/SKILL.md +46 -0
  40. package/skills/domains/development/cpp.md +246 -0
  41. package/skills/domains/development/go.md +323 -0
  42. package/skills/domains/development/java.md +277 -0
  43. package/skills/domains/development/python.md +288 -0
  44. package/skills/domains/development/rust.md +313 -0
  45. package/skills/domains/development/shell.md +313 -0
  46. package/skills/domains/development/typescript.md +277 -0
  47. package/skills/domains/devops/SKILL.md +39 -0
  48. package/skills/domains/devops/cost-optimization.md +271 -0
  49. package/skills/domains/devops/database.md +217 -0
  50. package/skills/domains/devops/devsecops.md +198 -0
  51. package/skills/domains/devops/git-workflow.md +181 -0
  52. package/skills/domains/devops/observability.md +279 -0
  53. package/skills/domains/devops/performance.md +335 -0
  54. package/skills/domains/devops/testing.md +283 -0
  55. package/skills/domains/frontend-design/SKILL.md +38 -0
  56. package/skills/domains/frontend-design/agents/openai.yaml +4 -0
  57. package/skills/domains/frontend-design/claymorphism/SKILL.md +119 -0
  58. package/skills/domains/frontend-design/claymorphism/references/tokens.css +52 -0
  59. package/skills/domains/frontend-design/component-patterns.md +202 -0
  60. package/skills/domains/frontend-design/engineering.md +287 -0
  61. package/skills/domains/frontend-design/glassmorphism/SKILL.md +140 -0
  62. package/skills/domains/frontend-design/glassmorphism/references/tokens.css +32 -0
  63. package/skills/domains/frontend-design/liquid-glass/SKILL.md +137 -0
  64. package/skills/domains/frontend-design/liquid-glass/references/tokens.css +81 -0
  65. package/skills/domains/frontend-design/neubrutalism/SKILL.md +143 -0
  66. package/skills/domains/frontend-design/neubrutalism/references/tokens.css +44 -0
  67. package/skills/domains/frontend-design/state-management.md +680 -0
  68. package/skills/domains/frontend-design/ui-aesthetics.md +110 -0
  69. package/skills/domains/frontend-design/ux-principles.md +156 -0
  70. package/skills/domains/infrastructure/SKILL.md +200 -0
  71. package/skills/domains/mobile/SKILL.md +224 -0
  72. package/skills/domains/orchestration/SKILL.md +29 -0
  73. package/skills/domains/orchestration/multi-agent.md +263 -0
  74. package/skills/domains/security/SKILL.md +72 -0
  75. package/skills/domains/security/blue-team.md +436 -0
  76. package/skills/domains/security/code-audit.md +265 -0
  77. package/skills/domains/security/pentest.md +226 -0
  78. package/skills/domains/security/red-team.md +374 -0
  79. package/skills/domains/security/threat-intel.md +372 -0
  80. package/skills/domains/security/vuln-research.md +369 -0
  81. package/skills/meta-theory/SKILL.md +878 -0
  82. package/skills/meta-theory/references/create-agent.md +248 -0
  83. package/skills/meta-theory/references/dev-governance.md +1108 -0
  84. package/skills/meta-theory/references/intent-amplification.md +190 -0
  85. package/skills/meta-theory/references/meta-theory.md +346 -0
  86. package/skills/meta-theory/references/rhythm-orchestration.md +257 -0
  87. package/skills/meta-theory/references/ten-step-governance.md +285 -0
  88. package/skills/orchestration/multi-agent/SKILL.md +493 -0
  89. package/skills/run_skill.js +128 -0
  90. package/skills/tools/gen-docs/SKILL.md +115 -0
  91. package/skills/tools/gen-docs/agents/openai.yaml +4 -0
  92. package/skills/tools/gen-docs/scripts/doc_generator.js +435 -0
  93. package/skills/tools/lib/shared.js +98 -0
  94. package/skills/tools/override-refusal/SKILL.md +55 -0
  95. package/skills/tools/override-refusal/agents/openai.yaml +4 -0
  96. package/skills/tools/override-refusal/scripts/refusal_rewriter.js +229 -0
  97. package/skills/tools/verify-change/SKILL.md +139 -0
  98. package/skills/tools/verify-change/agents/openai.yaml +4 -0
  99. package/skills/tools/verify-change/scripts/change_analyzer.js +289 -0
  100. package/skills/tools/verify-module/SKILL.md +126 -0
  101. package/skills/tools/verify-module/agents/openai.yaml +4 -0
  102. package/skills/tools/verify-module/scripts/module_scanner.js +171 -0
  103. package/skills/tools/verify-quality/SKILL.md +159 -0
  104. package/skills/tools/verify-quality/agents/openai.yaml +4 -0
  105. package/skills/tools/verify-quality/scripts/quality_checker.js +337 -0
  106. package/skills/tools/verify-security/SKILL.md +142 -0
  107. package/skills/tools/verify-security/agents/openai.yaml +4 -0
  108. package/skills/tools/verify-security/scripts/security_scanner.js +283 -0
@@ -0,0 +1,285 @@
1
+ ---
2
+ name: cloud-native
3
+ description: 云原生架构。容器、Kubernetes、Serverless、微服务。当用户提到云原生、容器、Docker、Kubernetes、K8s、Serverless时使用。
4
+ ---
5
+
6
+ # 🏗 阵法技能文档 · 云原生架构
7
+
8
+
9
+ ## Docker
10
+
11
+ ### Dockerfile
12
+ ```dockerfile
13
+ # 多阶段构建
14
+ FROM node:18-alpine AS builder
15
+ WORKDIR /app
16
+ COPY package*.json ./
17
+ RUN npm ci
18
+ COPY . .
19
+ RUN npm run build
20
+
21
+ FROM node:18-alpine
22
+ WORKDIR /app
23
+ COPY --from=builder /app/dist ./dist
24
+ COPY --from=builder /app/node_modules ./node_modules
25
+ EXPOSE 3000
26
+ USER node
27
+ CMD ["node", "dist/main.js"]
28
+ ```
29
+
30
+ ### Docker Compose
31
+ ```yaml
32
+ version: '3.8'
33
+ services:
34
+ app:
35
+ build: .
36
+ ports:
37
+ - "3000:3000"
38
+ environment:
39
+ - DATABASE_URL=postgres://db:5432/mydb
40
+ depends_on:
41
+ - db
42
+ healthcheck:
43
+ test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
44
+ interval: 30s
45
+ timeout: 10s
46
+ retries: 3
47
+
48
+ db:
49
+ image: postgres:15-alpine
50
+ volumes:
51
+ - postgres_data:/var/lib/postgresql/data
52
+ environment:
53
+ POSTGRES_DB: mydb
54
+ POSTGRES_PASSWORD: ${DB_PASSWORD}
55
+
56
+ volumes:
57
+ postgres_data:
58
+ ```
59
+
60
+ ### 安全最佳实践
61
+ ```yaml
62
+ 镜像安全:
63
+ - 使用官方基础镜像
64
+ - 最小化镜像 (alpine/distroless)
65
+ - 扫描漏洞 (Trivy)
66
+ - 固定版本标签
67
+
68
+ 运行时安全:
69
+ - 非 root 用户运行
70
+ - 只读文件系统
71
+ - 限制资源
72
+ - 禁用特权模式
73
+ ```
74
+
75
+ ## Kubernetes
76
+
77
+ ### 基础资源
78
+ ```yaml
79
+ # Deployment
80
+ apiVersion: apps/v1
81
+ kind: Deployment
82
+ metadata:
83
+ name: myapp
84
+ spec:
85
+ replicas: 3
86
+ selector:
87
+ matchLabels:
88
+ app: myapp
89
+ template:
90
+ metadata:
91
+ labels:
92
+ app: myapp
93
+ spec:
94
+ containers:
95
+ - name: myapp
96
+ image: myapp:1.0.0
97
+ ports:
98
+ - containerPort: 3000
99
+ resources:
100
+ requests:
101
+ memory: "128Mi"
102
+ cpu: "100m"
103
+ limits:
104
+ memory: "256Mi"
105
+ cpu: "200m"
106
+ livenessProbe:
107
+ httpGet:
108
+ path: /health
109
+ port: 3000
110
+ initialDelaySeconds: 10
111
+ periodSeconds: 10
112
+ readinessProbe:
113
+ httpGet:
114
+ path: /ready
115
+ port: 3000
116
+ initialDelaySeconds: 5
117
+ periodSeconds: 5
118
+ ---
119
+ # Service
120
+ apiVersion: v1
121
+ kind: Service
122
+ metadata:
123
+ name: myapp
124
+ spec:
125
+ selector:
126
+ app: myapp
127
+ ports:
128
+ - port: 80
129
+ targetPort: 3000
130
+ type: ClusterIP
131
+ ---
132
+ # Ingress
133
+ apiVersion: networking.k8s.io/v1
134
+ kind: Ingress
135
+ metadata:
136
+ name: myapp
137
+ annotations:
138
+ nginx.ingress.kubernetes.io/ssl-redirect: "true"
139
+ spec:
140
+ tls:
141
+ - hosts:
142
+ - myapp.example.com
143
+ secretName: myapp-tls
144
+ rules:
145
+ - host: myapp.example.com
146
+ http:
147
+ paths:
148
+ - path: /
149
+ pathType: Prefix
150
+ backend:
151
+ service:
152
+ name: myapp
153
+ port:
154
+ number: 80
155
+ ```
156
+
157
+ ### 配置管理
158
+ ```yaml
159
+ # ConfigMap
160
+ apiVersion: v1
161
+ kind: ConfigMap
162
+ metadata:
163
+ name: myapp-config
164
+ data:
165
+ APP_ENV: production
166
+ LOG_LEVEL: info
167
+ ---
168
+ # Secret
169
+ apiVersion: v1
170
+ kind: Secret
171
+ metadata:
172
+ name: myapp-secret
173
+ type: Opaque
174
+ stringData:
175
+ DATABASE_URL: postgres://user:pass@db:5432/mydb
176
+ ```
177
+
178
+ ### 安全策略
179
+ ```yaml
180
+ # NetworkPolicy
181
+ apiVersion: networking.k8s.io/v1
182
+ kind: NetworkPolicy
183
+ metadata:
184
+ name: myapp-network-policy
185
+ spec:
186
+ podSelector:
187
+ matchLabels:
188
+ app: myapp
189
+ policyTypes:
190
+ - Ingress
191
+ - Egress
192
+ ingress:
193
+ - from:
194
+ - podSelector:
195
+ matchLabels:
196
+ app: frontend
197
+ ports:
198
+ - port: 3000
199
+ egress:
200
+ - to:
201
+ - podSelector:
202
+ matchLabels:
203
+ app: database
204
+ ports:
205
+ - port: 5432
206
+ ---
207
+ # PodSecurityPolicy (已废弃,使用 Pod Security Standards)
208
+ # Pod Security Admission
209
+ apiVersion: v1
210
+ kind: Namespace
211
+ metadata:
212
+ name: myapp
213
+ labels:
214
+ pod-security.kubernetes.io/enforce: restricted
215
+ ```
216
+
217
+ ## Serverless
218
+
219
+ ### AWS Lambda
220
+ ```python
221
+ import json
222
+
223
+ def handler(event, context):
224
+ body = json.loads(event.get('body', '{}'))
225
+
226
+ return {
227
+ 'statusCode': 200,
228
+ 'headers': {'Content-Type': 'application/json'},
229
+ 'body': json.dumps({'message': 'Hello!'})
230
+ }
231
+ ```
232
+
233
+ ### Serverless Framework
234
+ ```yaml
235
+ service: myapp
236
+
237
+ provider:
238
+ name: aws
239
+ runtime: python3.9
240
+ region: us-east-1
241
+ environment:
242
+ TABLE_NAME: ${self:service}-${sls:stage}
243
+
244
+ functions:
245
+ hello:
246
+ handler: handler.hello
247
+ events:
248
+ - http:
249
+ path: /hello
250
+ method: get
251
+
252
+ process:
253
+ handler: handler.process
254
+ events:
255
+ - sqs:
256
+ arn: !GetAtt MyQueue.Arn
257
+
258
+ resources:
259
+ Resources:
260
+ MyQueue:
261
+ Type: AWS::SQS::Queue
262
+ ```
263
+
264
+ ## 微服务模式
265
+
266
+ ```yaml
267
+ 服务发现:
268
+ - DNS (Kubernetes Service)
269
+ - Service Mesh (Istio)
270
+
271
+ 负载均衡:
272
+ - 客户端负载均衡
273
+ - 服务端负载均衡
274
+
275
+ 熔断器:
276
+ - Circuit Breaker
277
+ - Retry with backoff
278
+ - Timeout
279
+
280
+ 可观测性:
281
+ - 日志聚合 (ELK)
282
+ - 指标监控 (Prometheus)
283
+ - 分布式追踪 (Jaeger)
284
+ ```
285
+
@@ -0,0 +1,328 @@
1
+ ---
2
+ name: message-queue
3
+ description: 消息队列技能文档。Kafka、RabbitMQ、Redis Streams、事件驱动架构。当用户提到消息队列、Kafka、RabbitMQ、事件驱动、CQRS、Saga时路由到此。
4
+ ---
5
+
6
+ # 🏗 阵法技能文档 · 消息队列
7
+
8
+ ## 核心概念
9
+
10
+ ```
11
+ Producer → Broker → Consumer
12
+ 发送 存储 消费
13
+
14
+ 模式:
15
+ 点对点 (Queue): 1 Producer → 1 Consumer
16
+ 发布订阅 (Topic): 1 Producer → N Consumers
17
+ ```
18
+
19
+ | 概念 | 含义 | 类比 |
20
+ |------|------|------|
21
+ | Producer | 消息生产者 | 发令者 |
22
+ | Consumer | 消息消费者 | 执行者 |
23
+ | Broker | 消息中间件 | 传令阵 |
24
+ | Topic/Queue | 消息通道 | 传音符 |
25
+ | Partition | 分区(并行单元) | 阵眼 |
26
+ | Offset | 消费位置 | 修行进度 |
27
+
28
+ ---
29
+
30
+ ## Kafka
31
+
32
+ ### 架构
33
+
34
+ ```
35
+ Producer ──→ Broker Cluster ──→ Consumer Group
36
+
37
+ ┌────┴────┐
38
+ │ Topic-A │
39
+ │ P0 P1 P2 │ (3 Partitions)
40
+ └──────────┘
41
+
42
+ Replication: Leader + Followers
43
+ ZooKeeper/KRaft: 元数据管理
44
+ ```
45
+
46
+ ### 生产者
47
+
48
+ ```python
49
+ from confluent_kafka import Producer
50
+
51
+ conf = {
52
+ 'bootstrap.servers': 'kafka:9092',
53
+ 'acks': 'all', # 等待所有副本确认
54
+ 'retries': 3,
55
+ 'retry.backoff.ms': 1000,
56
+ 'enable.idempotence': True, # 幂等生产者
57
+ 'linger.ms': 5, # 批量发送延迟
58
+ 'batch.size': 16384, # 批量大小
59
+ 'compression.type': 'snappy', # 压缩
60
+ }
61
+
62
+ producer = Producer(conf)
63
+
64
+ def delivery_report(err, msg):
65
+ if err:
66
+ print(f"Delivery failed: {err}")
67
+
68
+ producer.produce(
69
+ topic='orders',
70
+ key=order_id.encode(), # 相同 key → 相同 partition → 有序
71
+ value=json.dumps(order).encode(),
72
+ callback=delivery_report
73
+ )
74
+ producer.flush()
75
+ ```
76
+
77
+ ### 消费者
78
+
79
+ ```python
80
+ from confluent_kafka import Consumer
81
+
82
+ conf = {
83
+ 'bootstrap.servers': 'kafka:9092',
84
+ 'group.id': 'order-processor',
85
+ 'auto.offset.reset': 'earliest',
86
+ 'enable.auto.commit': False, # 手动提交
87
+ 'max.poll.interval.ms': 300000,
88
+ }
89
+
90
+ consumer = Consumer(conf)
91
+ consumer.subscribe(['orders'])
92
+
93
+ try:
94
+ while True:
95
+ msg = consumer.poll(1.0)
96
+ if msg is None:
97
+ continue
98
+ if msg.error():
99
+ handle_error(msg.error())
100
+ continue
101
+
102
+ process_message(msg.value())
103
+ consumer.commit(asynchronous=False) # 处理成功后提交
104
+ finally:
105
+ consumer.close()
106
+ ```
107
+
108
+ ### Kafka 关键配置
109
+
110
+ ```yaml
111
+ Broker:
112
+ num.partitions: 6 # 默认分区数
113
+ default.replication.factor: 3 # 副本数
114
+ min.insync.replicas: 2 # 最小同步副本
115
+ log.retention.hours: 168 # 保留 7 天
116
+ log.segment.bytes: 1073741824 # 1GB 段文件
117
+
118
+ Topic 设计:
119
+ 分区数 = max(生产吞吐/单分区写入能力, 消费者数)
120
+ 副本数 = 3 (生产环境)
121
+ Key 选择: 业务ID (保证同一实体有序)
122
+ ```
123
+
124
+ ---
125
+
126
+ ## RabbitMQ
127
+
128
+ ### Exchange 类型
129
+
130
+ | 类型 | 路由规则 | 适用场景 |
131
+ |------|----------|----------|
132
+ | Direct | 精确匹配 routing key | 点对点 |
133
+ | Fanout | 广播到所有绑定队列 | 发布订阅 |
134
+ | Topic | 通配符匹配 routing key | 灵活路由 |
135
+ | Headers | 匹配消息头 | 复杂路由 |
136
+
137
+ ```
138
+ Producer → Exchange → Binding → Queue → Consumer
139
+
140
+ routing_key 匹配
141
+ ```
142
+
143
+ ### 可靠性保证
144
+
145
+ ```yaml
146
+ 生产者:
147
+ - Publisher Confirms (确认模式)
148
+ - 持久化消息 (delivery_mode=2)
149
+ - 事务模式 (性能差,不推荐)
150
+
151
+ Broker:
152
+ - 持久化队列 (durable=True)
153
+ - 镜像队列 / Quorum Queue
154
+ - 磁盘持久化
155
+
156
+ 消费者:
157
+ - 手动 ACK (auto_ack=False)
158
+ - 预取限制 (prefetch_count)
159
+ - 死信队列 (DLX) 处理失败消息
160
+ ```
161
+
162
+ ### 死信队列 (DLQ)
163
+
164
+ ```
165
+ 正常队列 ──(消费失败/TTL过期/队列满)──→ 死信交换机 → 死信队列
166
+
167
+ 人工处理 / 重试
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Redis Streams
173
+
174
+ ```bash
175
+ # 生产
176
+ XADD orders * user_id "123" amount "99.99"
177
+
178
+ # 消费组
179
+ XGROUP CREATE orders order-group $ MKSTREAM
180
+ XREADGROUP GROUP order-group consumer-1 COUNT 10 BLOCK 5000 STREAMS orders >
181
+
182
+ # 确认
183
+ XACK orders order-group <message-id>
184
+
185
+ # 查看待处理
186
+ XPENDING orders order-group
187
+ ```
188
+
189
+ | 特性 | 适用 | 不适用 |
190
+ |------|------|--------|
191
+ | 轻量级 | 中小规模、低延迟 | 海量数据持久化 |
192
+ | 消费组 | 多消费者并行 | 复杂路由 |
193
+ | 内存存储 | 实时处理 | 长期存储 |
194
+
195
+ ---
196
+
197
+ ## 事件驱动架构
198
+
199
+ ### Event Sourcing
200
+
201
+ ```
202
+ 传统: 只存最终状态
203
+ Account { balance: 100 }
204
+
205
+ Event Sourcing: 存储所有事件
206
+ AccountCreated { initial: 0 }
207
+ MoneyDeposited { amount: 200 }
208
+ MoneyWithdrawn { amount: 100 }
209
+ → 重放得到 balance: 100
210
+ ```
211
+
212
+ ### CQRS (Command Query Responsibility Segregation)
213
+
214
+ ```
215
+ Command (写) ──→ Write Model ──→ Event Store
216
+
217
+ Event Bus
218
+
219
+ Query (读) ←── Read Model ←── Projection
220
+ ```
221
+
222
+ ### Saga 模式
223
+
224
+ ```
225
+ 分布式事务编排:
226
+
227
+ Choreography (编舞):
228
+ Order → Payment → Inventory → Shipping
229
+ 每个服务监听事件,自主决策
230
+
231
+ Orchestration (编排):
232
+ Saga Orchestrator
233
+ ├→ Order Service: 创建订单
234
+ ├→ Payment Service: 扣款
235
+ ├→ Inventory Service: 扣库存
236
+ └→ Shipping Service: 发货
237
+
238
+ 失败补偿:
239
+ Shipping失败 → 补偿Inventory → 补偿Payment → 补偿Order
240
+ ```
241
+
242
+ ---
243
+
244
+ ## 选型对比
245
+
246
+ | 维度 | Kafka | RabbitMQ | Redis Streams |
247
+ |------|-------|----------|---------------|
248
+ | 吞吐量 | 极高 (百万/s) | 高 (万/s) | 高 (十万/s) |
249
+ | 延迟 | ms 级 | μs-ms 级 | μs 级 |
250
+ | 持久化 | 磁盘 | 磁盘/内存 | 内存+AOF |
251
+ | 消息顺序 | 分区内有序 | 队列内有序 | 流内有序 |
252
+ | 消息回溯 | ✅ 支持 | ❌ 不支持 | ✅ 支持 |
253
+ | 协议 | 自有协议 | AMQP | Redis协议 |
254
+ | 适用 | 大数据/日志/流处理 | 业务消息/RPC | 轻量级实时 |
255
+
256
+ ### 选型决策树
257
+
258
+ ```
259
+ 需要消息回溯?
260
+ ├─ 是 → Kafka / Redis Streams
261
+ └─ 否 → 需要复杂路由?
262
+ ├─ 是 → RabbitMQ
263
+ └─ 否 → 吞吐量要求?
264
+ ├─ 极高 (>10万/s) → Kafka
265
+ ├─ 中等 → RabbitMQ
266
+ └─ 轻量 → Redis Streams
267
+ ```
268
+
269
+ ---
270
+
271
+ ## 常见问题
272
+
273
+ ### 消息丢失
274
+
275
+ ```yaml
276
+ 防丢三板斧:
277
+ 生产端: acks=all + retries + 幂等
278
+ Broker: replication + 持久化 + min.insync.replicas
279
+ 消费端: 手动提交 + 处理后确认
280
+ ```
281
+
282
+ ### 消息重复
283
+
284
+ ```yaml
285
+ 幂等处理:
286
+ - 数据库唯一约束 (message_id)
287
+ - Redis SETNX 去重
288
+ - 业务层幂等设计 (状态机)
289
+ ```
290
+
291
+ ### 消息积压
292
+
293
+ ```yaml
294
+ 应急:
295
+ - 增加消费者实例
296
+ - 临时扩大分区 (Kafka)
297
+ - 跳过非关键消息
298
+
299
+ 根治:
300
+ - 优化消费者处理速度
301
+ - 合理设置分区数
302
+ - 监控消费 lag 告警
303
+ ```
304
+
305
+ ---
306
+
307
+ ## 最佳实践
308
+
309
+ ```yaml
310
+ 设计:
311
+ - 消息体尽量小,大数据用引用
312
+ - 消息必须包含唯一ID和时间戳
313
+ - 定义清晰的消息 Schema (Avro/Protobuf)
314
+ - 版本兼容 (向后兼容)
315
+
316
+ 运维:
317
+ - 监控消费 lag
318
+ - 死信队列告警
319
+ - 定期清理过期消息
320
+ - 容量规划 (磁盘/内存)
321
+
322
+ 安全:
323
+ - TLS 加密传输
324
+ - SASL 认证
325
+ - ACL 授权
326
+ - 审计日志
327
+ ```
328
+