Kafka訊息佇列設計

👤 Adodo 📦 v1.0.0 ⭐ 4.6 ⬇️ 203 下載
💻 開發程式設計 免費

📖 技能介紹


name: kafka-design description: 幫助Agent為專案進行Kafka Topic設計、分割槽策略、消費者組設計、Schema管理,並提供場景化使用指南。當用戶需要設計訊息佇列、事件流、資料管道時觸發。 version: 1.0.0 metadata: clawdbot: emoji: "🪨" requires: anyBins: ["kafka-topics"] os: ["linux", "darwin"]


Kafka 設計與使用助手

觸發條件

當用戶出現以下意圖時啟用本 Skill: - 設計 Kafka Topic / 分割槽策略 - 消費者組設計 / 消費模型 - Schema 管理 / 序列化方案 - 訊息可靠性 / 冪等 / 事務 - 事件溯源 / CDC 資料管道 - "如何設計 xxx 的 Topic"

設計流程(Agent 執行路徑)

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,匹配業務訊息模型模板

快速參考

Topic 命名鐵律

規則 正例 反例
格式:<業務域>.<資料型別>.<事件名> 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_idorder_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 lz4zstd 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 版本檢查時自動載入(版本 ≤ 使用者目標版本時)

版本參考文件啟用規則

  1. 模組啟用時 — 始終載入 references/version-major.md,Agent 需主動對比使用者使用的 Kafka 版本,若存在廢棄項或重大變更,立即提示使用者
  2. 深度特性 Step 0 自動載入 — 版本檢查時載入所有 version-X.Y.md(X.Y ≤ 使用者目標版本)。設計過程中 Agent 從已載入的上下文中自主檢索匹配相關特性,使用者無需指定版本號
  3. 深度特性按大版本拆分,小版本持續追加 — 如 version-4.0.md 包含該大版本下所有小版本的設計級特性。更新時在檔案中新增 ## X.Y.Z 版本節即可,不單開檔案

硬規則

  1. 設計規範內容來自權威資料(Apache Kafka 官方文件/Confluent 最佳實踐),不編造
  2. 必須明確訊息語義(At-Least-Once / Exactly-Once),不同場景不可混用
  3. 分割槽數必須提前規劃,事後只能增加不能減少

    7w4.net小蔥技能。

  4. 需要順序的訊息必須使用相同 Key 路由到同一分割槽
  5. 消費者組 ID 必須穩定且有業務含義,不可隨機生成
  6. 必須設定保留策略(時間/大小),Topic 不是永久儲存
  7. 禁止依賴 ZooKeeper(3.5 起標記棄用,4.0 完全刪除。新叢集必須使用 KRaft 模式)

🤖 AI 評測

這個 Skill 質量較高,涵蓋了 Kafka 設計的方方面面,文件結構清晰、查閱方便。它提供了實用的速查表和豐富的業務模板,新手也能快速上手。但美中不足的是,它主要以文字指南為主,缺少可直接執行的程式碼示例,實際使用時可能還需要自己摸索。如果能增加一些常見問題的解答和具體配置案例,會更加實用。總體而言,這是一套紮實的設計規範,適合需要深度瞭解 Kafka 的使用者參考使用。

📊 多維度評分

適應性4.2
規範性4.7
有效性4.9
可靠性4.4
可信度4.4

📁 包含檔案 (8 個)

📄 SKILL.md 6.2 KB
📄 references/best-practices.md 7.7 KB
📄 references/design-spec.md 4.1 KB
📄 references/patterns.md 3.6 KB
📄 references/usage-guide.md 4.6 KB
📄 references/version-3.0.md 5.3 KB
📄 references/version-4.0.md 6.8 KB
📄 references/version-major.md 4.3 KB