Best Practices für API-Degradation in API Gateways

April 1, 2024

Technology

In modernen verteilten Systemen dient die API-Degradierung als entscheidender Mechanismus zur Fehlertoleranz und Stabilität. Wenn ein System unter Druck steht, Ausfälle erleidet oder Ressourcenengpässe auftreten, stellt die Degradierung nicht-kritischer Funktionen oder Dienste die Stabilität des Gesamtsystems und die Kontinuität der Kernprozesse sicher. Dieser Artikel untersucht die Szenarien für die API-Degradierung und die besten Praktiken für deren Implementierung auf der Ebene des API-Gateways.

Szenarien für die API-Degradierung

  1. Systemüberlastung: Wenn das System einen Anstieg von Anfragen erlebt, die die Verarbeitungskapazität des Servers übersteigen, ist die Degradierung nicht-kritischer APIs notwendig, um Systemabstürze zu verhindern und den normalen Betrieb der Kernfunktionen sicherzustellen.

  2. Dienstausfälle: Im Falle von Ausfällen oder Leistungseinbußen bei Backend-Diensten ist die Degradierung der APIs dieser Dienste erforderlich, um die Ausbreitung von Fehlern zu verhindern.

  3. Ressourcenengpässe: Wenn Systemressourcen wie CPU, Speicher oder Bandbreite begrenzt sind, ist die Degradierung von APIs mit hohem Ressourcenverbrauch entscheidend, um die Gesamtstabilität des Systems zu gewährleisten.

Best Practices für die API-Degradierung auf Gateway-Ebene

Betrachten wir ein Szenario, in dem eine E-Commerce-Plattform während eines großen Verkaufsereignisses wie Black Friday unter immensem Trafficdruck steht. Um die Kernfunktionen zu schützen und die Benutzererfahrung sicherzustellen, entscheidet sich das Team, API-Degradierungsstrategien auf der Gateway-Ebene zu implementieren.

1. Identifizierung der Schlüssel-APIs

Das Team identifiziert kritische APIs wie Benutzeranmeldung, Produktdetailabruf, Hinzufügen von Artikeln zum Warenkorb, Bestellabgabe und Zahlungsabwicklung. Diese APIs sind entscheidend, damit Benutzer den Einkaufsprozess abschließen können.

2. Entwurf von Degradierungsstrategien

Für Schlüssel-APIs wird die Behandlung von Leistungsabfällen eingerichtet. Beispielsweise wird bei dreimaligem Auftreten eines Statuscodes 500 vom Upstream-Server ein Circuit-Breaking ausgelöst, wobei die Ausfallzeit automatisch erhöht wird, bis zu maximal 300 Sekunden, bis der Upstream-Dienst wiederhergestellt ist.

Für nicht-kritische APIs wie Benutzerbewertungen, Empfehlungslisten und Anzeigendarstellungen werden spezifische Degradierungsstrategien entworfen:

  • Benutzerbewertungs-API: Rückgabe von Standardbewertungslisten oder leeren Daten, um Echtzeitaufrufe des Bewertungssystems zu vermeiden.

  • Empfehlungslisten-API: Nutzung von zwischengespeicherten Empfehlungsdaten oder Rückgabe einer festen Empfehlungsliste, um die Abhängigkeit von der Empfehlungsmaschine zu verringern.

  • Anzeigendarstellungs-API: Rückgabe von Standardanzeigen oder leeren Anzeigenplätzen, um sicherzustellen, dass das Seitenlayout nicht beeinträchtigt wird.

API

3. Apache APISIX / API7 Enterprise Konfiguration

  • Für Schlüssel-APIs wird das "api-breaker"-Plugin auf den entsprechenden Routen aktiviert, mit einer Auslösebedingung von dreimaligem Auftreten eines 500-Statuscodes und einer maximalen Ausfallzeit von 300 Sekunden.

  • Für die Benutzerbewertungs-API wird das mocking-Plugin auf der entsprechenden Route aktiviert und response_example auf leere Daten gesetzt.

  • Für die Empfehlungslisten-API wird das proxy-cache-Plugin auf der entsprechenden Route aktiviert, und es wird die Nutzung von Antwort-Caching im Speicher gewählt.

  • Für die Anzeigendarstellungs-API wird das mocking-Plugin auf der entsprechenden Route aktiviert und response_example auf Standardanzeigen gesetzt, um eine normale Seitenanzeige bei gleichzeitiger Klickbarkeit der Anzeigen sicherzustellen.

4. Dynamische Konfigurationsverwaltung

Um sich an sich ändernde Traffic-Bedingungen anzupassen, entscheidet sich das Team für dynamisch nachladbare Gateways: Apache APISIX / API7 Enterprise. Sie können Circuit-Breaking-Schwellenwerte, Degradierungsstrategien und Degradierungsschalter basierend auf Echtzeit-Monitoring-Daten anpassen und nicht-kritische APIs selektiv degradieren, wenn Traffic-Spitzen auftreten.

5. Überwachung und Alarmierung

Das Team richtet Alarmierungsrichtlinien bequem innerhalb des API7-Gateways ein oder integriert sie mit ihren internen Monitoring- und Alarmierungssystemen unter Verwendung von APISIX. Die Echtzeitüberwachung von API-Antwortzeiten, Fehlerraten und Aufrufvolumen ermöglicht die automatische Ausführung von Degradierungen, wenn Degradierungsschwellenwerte oder Auslösebedingungen erreicht werden. Betriebspersonal wird per SMS, E-Mail oder anderen Mitteln benachrichtigt, um potenzielle Probleme umgehend zu beheben und die Systemstabilität sicherzustellen.

6. Bewertung und Anpassung

Nach der Implementierung der Degradierungsstrategien überwacht das Team die Systemleistung und Benutzererfahrung genau. Es bewertet die Wirksamkeit der Degradierungsstrategien durch Benutzerfeedback, Geschäftsdatenanalyse und Monitoring-Metriken. Basierend auf den Bewertungsergebnissen nimmt das Team rechtzeitig Anpassungen an den Degradierungsstrategien vor, um die Systemlast und Benutzerzufriedenheit besser auszugleichen.

Fazit

Die API-Degradierung, als kritischer Fehlertoleranzmechanismus in modernen verteilten Systemen, verbessert die Systemstabilität und Benutzererfahrung erheblich, wenn sie auf der Ebene des API-Gateways implementiert wird. Durch die Identifizierung von Schlüssel-APIs, den Entwurf von Degradierungsstrategien, die Konfiguration von Gateway-Plugins, die dynamische Verwaltung von Konfigurationen, Überwachung und Alarmierung sowie die Bewertung der Wirksamkeit können Teams flexibel auf verschiedene Herausforderungen reagieren und die Systemstabilität auch unter Druck sicherstellen.

Share article link