name: kafka-design description: 帮助Agent为项目进行Kafka Topic设计、分区策略、消费者组设计、Schema管理,并提供场景化使用指南。当用户需要设计消息队列、事件流、数据管道时触发。 version: 1.0.0 metadata: clawdbot: emoji: "🪨" requires: anyBins: ["kafka-topics"] os: ["linux", "darwin"]
当用户出现以下意图时激活本 Skill: - 设计 Kafka Topic / 分区策略 - 消费者组设计 / 消费模型 - Schema 管理 / 序列化方案 - 消息可靠性 / 幂等 / 事务 - 事件溯源 / CDC 数据管道 - "如何设计 xxx 的 Topic"
0. 版本检查 → 加载 references/version-major.md 对比用户版本,识别废弃项和重大变更。同时加载所有 version-X.Y.md(X.Y ≤ 用户目标版本),后续设计过程中 Agent 从已加载的上下文中自主匹配深度特性
1. 需求分析 → 理解消息流、吞吐量、延迟要求、消息大小
2. Topic 设计 → 命名规范、分区数、副本因子、保留策略
3. 消息设计 → Key 策略、序列化格式(Avro/Protobuf/JSON)、Schema Registry
4. 消费者组设计 → 分区分配策略、偏移量管理、重平衡处理
5. 可靠性设计 → ACK 策略、幂等生产者、事务、Exactly-Once
6. 使用指引 → 加载 references/usage-guide.md,给出场景化操作
7. 生产建议 → 加载 references/best-practices.md,给出集群/监控/运维建议
8. 模板参考 → 加载 references/patterns.md,匹配业务消息模型模板
| 规则 | 正例 | 反例 |
|---|---|---|
格式:<业务域>.<数据类型>.<事件名> |
order.checkout.completed |
order_events |
| 小写+点号分隔 | user.profile.updated |
User.Profile.Updated |
| 事件名用动词过去式 | payment.refund.processed |
payment.refund.request |
| 不带版本号和日期 | inventory.stock.changed |
inventory.v2.stock.changed |
| 不超过 249 字符 | — | — |
| 场景 | 分区策略 | Key 设计 |
|---|---|---|
| 有序消费(同实体) | 按实体 ID 哈希 | user_id 或 order_id |
| 负载均衡 | Round-Robin(null key) | 不设 Key |
| 多租户隔离 | 按租户 ID 分区 | tenant_id |
| 顺序性+并行 | 按聚合根 ID | aggregate_id |
| 热点规避 | 复合 Key 或 Salt | hot_key + salt(n) |
| 语义 | Producer 配置 | Consumer 配置 | 适用场景 |
|---|---|---|---|
| At-Most-Once | acks=0 |
enable.auto.commit=true |
日志/指标(允许丢) |
| At-Least-Once | acks=all |
先处理后提交 | 订单/支付(默认) |
| Exactly-Once | transactional.id + acks=all |
isolation.level=read_committed |
金融/转账 |
| 参数 | 推荐值 | 说明 |
|---|---|---|
acks |
all |
强一致性;允许丢用 1 |
compression.type |
lz4 或 zstd |
lz4 快/zstd 高压缩率 |
linger.ms |
5-10 |
微批次,平衡延迟和吞吐 |
batch.size |
16384 (16KB, 默认) |
高吞吐场景可调至 65536 (64KB) |
max.in.flight.requests.per.connection |
5 (幂等时默认 5,可适当调高) |
非幂等时设为 1 保序 |
enable.idempotence |
true |
默认开启,防止重复 |
| 参数 | 推荐值 | 说明 |
|---|---|---|
enable.auto.commit |
false |
手动提交,精确控制 |
auto.offset.reset |
earliest(新组)/ 显式指定 |
新消费者组首次启动默认 latest 会跳过存量消息,需根据业务语义明确指定 |
max.poll.records |
500 |
按消息大小调整 |
max.poll.interval.ms |
300000(5min) |
处理超时,需大于业务耗时 |
session.timeout.ms |
45000 |
心跳超时,影响再平衡速度 |
详细内容按需加载 references/:
| 主题 | 文件 | 何时加载 |
|---|---|---|
| Topic/分区/命名/消息设计规范 | references/design-spec.md |
Step 2-3 Topic 和消息设计 |
| 场景化操作(创建/生产/消费/管理Topic/迁移) | references/usage-guide.md |
Step 6 使用指引 |
| 最佳实践(分区/可靠性/集群/监控/运维) | references/best-practices.md |
Step 7 生产建议 |
| 业务消息模型模板(6类业务完整设计) | references/patterns.md |
Step 8 模板参考 |
| 重大版本特性(废弃/依赖变更/新模块) | references/version-major.md |
Step 0 版本检查(模块激活时即加载) |
| 深度版本特性 — 4.x(Share Groups/队列/Streams DLQ/服务端重平衡) | references/version-4.0.md |
Step 0 版本检查时自动加载(版本 ≤ 用户目标版本时) |
| 深度版本特性 — 3.x(KRaft/Tiered Storage/新消费者协议/Connect增强) | references/version-3.0.md |
Step 0 版本检查时自动加载(版本 ≤ 用户目标版本时) |
references/version-major.md,Agent 需主动对比用户使用的 Kafka 版本,若存在废弃项或重大变更,立即提示用户version-4.0.md 包含该大版本下所有小版本的设计级特性。更新时在文件中新增 ## X.Y.Z 版本节即可,不单开文件访问小葱技能站7w4.net,解锁更多实用的AI技能插件。
这个 Skill 质量较高,涵盖了 Kafka 设计的方方面面,文档结构清晰、查阅方便。它提供了实用的速查表和丰富的业务模板,新手也能快速上手。但美中不足的是,它主要以文字指南为主,缺少可直接运行的代码示例,实际使用时可能还需要自己摸索。如果能增加一些常见问题的解答和具体配置案例,会更加实用。总体而言,这是一套扎实的设计规范,适合需要深度了解 Kafka 的用户参考使用。