技能 microservices-patterns
📦

microservices-patterns

安全

設計正式上線的微服務架構

也可从以下获取: wshobson

建構分散式系統需要在服務邊界、通訊模式和資料一致性之間取捨。這項技能提供經過驗證的模式和程式碼範例,用於分解單體架構、實現服務間的彈性通訊,以及有效管理分散式交易。

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“microservices-patterns”。 分析這個電子商務單體,包含訂單、付款、庫存、配送和使用者帳戶模組。建議微服務邊界。

预期结果:

根據領域驅動設計原則,以下是建議的服務邊界:1) 訂單服務 - 擁有訂單生命週期和訂單狀態;2) 付款服務 - 處理付款處理和退款;3) 庫存服務 - 管理庫存水準和預訂;4) 目錄服務 - 產品資訊和定價;5) 配送服務 - 履約和配送追蹤。使用者帳戶應作為跨系統共享的身份識別服務的一部分。每個服務應擁有自己的資料庫,並發布領域事件以實現最終一致性。

正在使用“microservices-patterns”。 為訂單履約設計事件驅動通訊。什麼時候應該使用事件而非直接服務呼叫?

预期结果:

在以下情況使用事件:1) 多個服務需要對同一事件做出反應(OrderCreated 觸發庫存預訂、配送標籤生成、客戶通知);2) 可以接受時間解耦(庫存可以在幾秒後預訂);3) 您希望服務之間保持鬆耦合。在以下情況使用直接同步呼叫:1) 您需要立即回應(下單前檢查庫存);2) 呼叫者沒有回應無法繼續;3) 需要強一致性。對於訂單履約,非同步發布 OrderCreated 事件以處理庫存和配送,但在下單時使用同步呼叫檢查庫存可用性。

正在使用“microservices-patterns”。 顯示帶有補償邏輯的訂單付款 saga 模式。

预期结果:

OrderPaymentSaga 步驟:1) ReserveOrder - 建立待處理訂單;補償:CancelOrder。2) ProcessPayment - 向客戶收費;補償:RefundPayment。3) ConfirmInventory - 預訂項目;補償:ReleaseInventory。4) CompleteOrder - 標記訂單確認;補償:MarkOrderFailed。執行:如果步驟 2(付款)失敗,按反向執行補償動作:ReleaseInventory(步驟 3 補償)、CancelOrder(步步驟 1 補償)。這確保系統在任何故障後都能回滾到一致的狀態。

安全审计

安全
v1 • 2/25/2026

All 29 static analysis findings are false positives from markdown code examples in educational documentation. The skill contains only documentation files (SKILL.md and implementation-playbook.md) with Python code samples demonstrating microservices patterns. No executable code, scripts, or actual security risks present. The 'external_commands' and 'network' patterns detected are from code block delimiters and example URLs in instructional content.

2
已扫描文件
646
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

分解單體應用程式

軟體架構師計劃將大型 Rails 單體分解為專注的服務。使用此技能來識別邊界上下文、定義服務邊界,並規劃 strangler fig 遷移策略。

設計事件驅動通訊

後端工程師正在實作服務之間的非同步訊息傳遞。使用此技能在 Kafka、RabbitMQ 或雲端原生訊息之間選擇、設計事件結構描述,並實作具有適當錯誤處理的事件處理常式。

實作彈性模式

平台工程師正在建立服務間通訊的可靠性。使用此技能來應用熔斷器、實作指數退避重試邏輯,並防止分散式系統中的連鎖故障。

试试这些提示

識別服務邊界
分析此單體應用程式 [描述領域和模組],並建議微服務邊界。透過業務能力和 DDD 子領域將相關功能分組。解釋每個建議服務邊界的原因。
選擇通訊模式
我需要 [服務 A] 與 [服務 B] 通訊以實現 [特定用例]。比較同步 REST 與非同步事件驅動方法。根據延遲、一致性需求和失敗處理建議最佳模式。
設計分散式交易的 Saga
為 [涉及多個服務的業務流程] 設計 saga 編排。識別每個交易步驟、定義失敗的補償動作,並展示具有錯誤處理的執行流程。
應用熔斷器模式
我的服務呼叫 [外部服務/相依項目] 時會遇到間歇性故障。設計具有適當失敗閾值、復原超時和回退行為的熔斷器。以 [您偏好的語言] 顯示程式碼。

最佳实践

  • 從模組化單體開始,只有在有明確的業務邊界和營運需求時才提取服務
  • 根據領域驅動設計的業務能力和邊界上下文(而非技術層)來設計服務
  • 優先使用非同步事件驅動通訊而非同步 REST,以實現更好的鬆耦合和彈性
  • 為所有服務間呼叫實作熔斷器、指數退避重試和超時
  • 應用每服務資料庫模式以避免共享資料庫耦合,並實現獨立部署
  • 使用分散式追蹤和結構化日誌來觀察跨服務邊界的請求

避免

  • 分散式單體 - 必須一起部署並共享資料庫的服務,削弱了微服務的優勢
  • 冗長的服務 - 服務之間過多的同步呼叫造成緊密耦合和延遲
  • 共享資料庫 - 多個服務存取同一個資料庫會造成綱要鎖定和部署依賴
  • 忽略失敗模式 - 假設網路可靠、服務始終可用,或訊息必定傳遞
  • 過早採用微服務 - 在了解領域和營運負擔之前就以微服務開始新專案

常见问题

什麼時候應該使用微服務而非單體?
當您有明確的領域邊界、需要獨立部署的多個團隊,以及處理分散式複雜性的營運成熟度時,使用微服務。對於小型團隊、簡單領域或新產品初期,請保持單體架構。
如何處理跨多個服務的交易?
對分散式交易使用 saga 模式。每個服務執行本地交易並發布事件。如果任何步驟失敗,按反向順序執行補償交易以回滾。接受跨服務的最終一致性而非 ACID 保證。
服務通訊應該使用 REST 還是訊息傳遞?
當需要立即回應和強一致性時使用同步 REST。當多個服務需要對變更做出反應且可以接受最終一致性時,使用非同步訊息傳遞(事件)。優先使用訊息以實現鬆耦合和更好的彈性。
如何防止微服務中的連鎖故障?
實作熔斷器在失敗次數達到閾值後停止呼叫失敗的服務,對暫時性故障使用指數退避重試邏輯、設定請求超時,以及隔離艙模式來隔離資源池。在相依項目不可用時,始終設計優雅的降級。
團隊使用微服務犯的最大錯誤是什麼?
在不了解領域或沒有營運就緒的情況下就開始使用微服務。這會建立分散式單體,擁有分散式系統的所有複雜性,卻沒有任何優勢。從結構良好的模組化單體開始,在有明確邊界時提取服務。
如何偵錯跨多個服務的問題?
實作分散式追蹤(OpenTelemetry、Jaeger、Zipkin)來追蹤跨服務邊界的請求。在所有日誌和事件中使用關聯 ID。使用結構化日誌集中日誌。在需要之前就設定適當的可觀測性,包括指標和儀表板。