microservices-patterns
Entwerfen von Microservices-Architekturen mit bewährten Mustern
Der Aufbau verteilter Systeme mit Microservices bringt Komplexität bei Servicegrenzen, Dienstkommunikation und Fehlertoleranz mit sich. Diese Fähigkeit bietet erprobte Muster für die Servicezerlegung, ereignisgesteuerte Architektur, Saga-Koordination und Circuit-Breaker-Implementierung, um Ihnen zu helfen, widerstandsfähige, skalierbare Systeme zu bauen.
Die Skill-ZIP herunterladen
In Claude hochladen
Gehe zu Einstellungen → Fähigkeiten → Skills → Skill hochladen
Einschalten und loslegen
Teste es
Verwendung von "microservices-patterns". How should I decompose an e-commerce platform into microservices?
Erwartetes Ergebnis:
- Für eine E-Commerce-Plattform empfehle ich, Dienste um Geschäftsfähigkeiten zu organisieren:
- 1. **Order Service** - Verwaltet den Auftragslebenszyklus, Warenkorb und Auftragshistorie
- 2. **Payment Service** - Bearbeitet Zahlungsverarbeitung, Rückerstattungen und Zahlungsmethoden
- 3. **Inventory Service** - Verfolgt Produktbestand, Reservationen und Lagerstandorte
- 4. **Catalog Service** - Produktlisten, Suche und Kategorieverwaltung
- 5. **User Service** - Authentifizierung, Profile und Präferenzen
- 6. **Shipping Service** - Lieferverfolgung, Labelgenerierung und Spediteuranbindung
- Jeder Dienst besitzt seine eigene Datenbank und kommuniziert über gut definierte APIs oder Ereignisse. Der Order Service veröffentlicht OrderCreated-Ereignisse, die Payment- und Inventory-Dienste konsumieren, um ihre jeweiligen Operationen asynchron zu verarbeiten.
Verwendung von "microservices-patterns". How do I handle a payment failure in my order fulfillment saga?
Erwartetes Ergebnis:
- Wenn der Zahlungsschritt in der OrderFulfillmentSaga fehlschaltet, löst der Saga-Orchestrator kompensierende Aktionen in umgekehrter Reihenfolge aus:
- 1. Zahlung fehlgeschlagen - keine Kompensation für Zahlung erforderlich
- 2. Bestand kompensieren: Geben Sie die Reservation frei durch Aufruf von InventoryService.release(reservation_id)
- 3. Auftrag kompensieren: Stornieren Sie den Auftrag durch Aufruf von OrderService.cancel(order_id)
- 4. Geben Sie ein fehlgeschlagenes Ergebnis mit Fehlerdetails an den Client zurück
- Der Schlüssel liegt darin, jede kompensierende Aktion idempotent zu gestalten und Fälle zu behandeln, in denen die Kompensation selbst teilweise fehlschlagen könnte. Protokollieren Sie alle kompensierenden Aktionen und alarmieren Sie Operatoren für manuelle Eingriffe bei Bedarf.
Verwendung von "microservices-patterns". Why is my circuit breaker opening immediately and how should I tune it?
Erwartetes Ergebnis:
- Ein Circuit Breaker öffnet sich, wenn Ausfälle den failure_threshold innerhalb eines gleitenden Fensters überschreiten. Häufige Ursachen und Lösungen:
- **Wenn es sich zu leicht öffnet:**
- - Erhöhen Sie den failure_threshold (versuchen Sie 10 statt 5)
- - Erhöhen Sie den recovery_timeout (versuchen Sie 60 Sekunden statt 30)
- - Fügen Sie einen success_threshold hinzu, der mehrere Erfolge erfordert, bevor es schließt
- **Wenn es zu lange offen bleibt:**
- - Verringern Sie den recovery_timeout für schnellere Tests
- - Verwenden Sie adaptive Schwellenwerte basierend auf dem Datenverkehr
- **Bewährte Methoden:**
- - Setzen Sie den failure_threshold basierend auf der normalen Fehlerrate Ihres Dienstes
- - Setzen Sie den recovery_timeout länger als Ihre typische Ausfalldauer
- - Überwachen Sie Circuit-Statusänderungen, um Parameter anzupassen
Sicherheitsaudit
SicherStatic analysis detected 36 patterns across 2 files. All findings evaluated as false positives or safe educational content. The 18 weak crypto alerts match on words like design and description in documentation. The 11 external command alerts are markdown code fences for syntax highlighting. Network patterns are legitimate example URLs for teaching microservices communication. No actual security risks identified.
Risikofaktoren
🌐 Netzwerkzugriff (7)
Qualitätsbewertung
Was du bauen kannst
Migrieren eines Monolithen zu Microservices
Wenden Sie das Strangler-Fig-Muster an, um schrittweise Funktionalität aus einem Legacy-Monolithen in unabhängig bereitstellbare Dienste zu extrahieren und gleichzeitig die Systemstabilität zu gewährleisten.
Erstellen einer ereignisgesteuerten Auftragsverarbeitung
Entwerfen Sie ein Auftragsverwaltungssystem, bei dem Order-, Zahlungs- und Bestandsdienste asynchron über Kafka-Ereignisse kommunizieren mit saga-basierter Kompensation bei fehlgeschlagenen Transaktionen.
Hinzufügen von Widerstandsfähigkeit zu Serviceaufrufen
Implementieren Sie Circuit Breaker und Wiederholungen mit exponentiellem Backoff, um Dienste vor Kaskadenausfällen zu schützen und die allgemeine Systemzuverlässigkeit bei partiellen Ausfällen zu verbessern.
Probiere diese Prompts
Helfen Sie mir, meine {application_type}-Anwendung in Microservices zu zerlegen. Die Anwendung hat diese Hauptfunktionen: {list_functions}. Wie sollte ich Servicegrenzen definieren und welche Zerlegungsstrategie sollte ich verwenden?Entwerfen Sie ein API-Gateway-Muster für meine Microservices-Architektur. Ich habe diese Dienste: {list_services}. Wie sollte das Gateway Authentifizierung, Rate-Limiting und Anfragenaggregierung handhaben?Helfen Sie mir, ein Saga-Muster für einen {business_process} zu implementieren, der diese Schritte umfasst: {list_steps}. Welche kompensierenden Aktionen sollte ich für jeden Schritt definieren und wie sollte ich mit partiellen Ausfällen umgehen?Ich habe einen {service_name}-Dienst, der gelegentlich Latenzspitzen erfährt. Wie sollte ich die Circuit-Breaker-Parameter (failure_threshold, recovery_timeout, success_threshold) konfigurieren und ihn in meinen bestehenden HTTP-Client integrieren?Bewährte Verfahren
- Definieren Sie klare Servicegrenzen, die an Geschäftsfähigkeiten ausgerichtet sind, nicht an technischen Schichten, um lose Kopplung und hohe Kohäsion zu gewährleisten
- Verwenden Sie asynchrone ereignisgesteuerte Kommunikation für Operationen, die eventuelle Konsistenz tolerieren können, um die Systemresilienz zu verbessern und blockierende Abhängigkeiten zu reduzieren
- Implementieren Sie immer Circuit Breaker bei Inter-Service-Aufrufen und konfigurieren Sie Timeouts, die kürzer sind als das vom Client vorgegebene Timeout-Budget
Vermeiden
- Verteilter Monolith - Erstellen von Microservices, die durch gemeinsame Datenbanken oder synchrone Abhängigkeitsketten eng gekoppelt sind, wodurch die Vorteile der unabhängigen Bereitstellung verloren gehen
- Gesprächige Dienste - Gestalten von Diensten, die dutzende von Hin- und Her-Aufrufen benötigen, um eine einzelne Benutzeranfrage abzuschließen, was Latenz und Fehlerpunkte erhöht
- Synchronisation von allem - Verwenden von Request-Response-Kommunikation für die gesamte Inter-Service-Kommunikation, was enge Kopplung erzeugt und unabhängiges Skalieren und Fehlerisolation verhindert