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,匹配業務訊息模型模板
來源於7w4.net。
| 規則 | 正例 | 反例 |
|---|---|---|
格式:<業務域>.<資料型別>.<事件名> |
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 版本節即可,不單開檔案這個 Skill 質量較高,涵蓋了 Kafka 設計的方方面面,文件結構清晰、查閱方便。它提供了實用的速查表和豐富的業務模板,新手也能快速上手。但美中不足的是,它主要以文字指南為主,缺少可直接執行的程式碼示例,實際使用時可能還需要自己摸索。如果能增加一些常見問題的解答和具體配置案例,會更加實用。總體而言,這是一套紮實的設計規範,適合需要深度瞭解 Kafka 的使用者參考使用。