Wie kann ein 'Circuit Breaker'-Pattern implementiert werden, um Scraping-Jobs automatisch zu stoppen, sobald die Fehlerrate der Proxy-Nodes steigt?

Die Implementierung eines Circuit Breakers für Scraping-Jobs erfolgt über eine Zustandsmaschine, die den Durchfluss von Anfragen basierend auf der Fehlerrate der Proxy-Nodes steuert. Wir setzen hierbei auf ein Modell mit drei definierten Zuständen:

ZustandVerhaltenBedingung für Zustandswechsel
ClosedAnfragen werden normal verarbeitet.Fehlerrate $\ge$ Schwellenwert $\rightarrow$ Open
OpenAlle Anfragen werden sofort blockiert.Timeout (Cool-down) abgelaufen $\rightarrow$ Half-Open
Half-OpenNur begrenzte Test-Anfragen werden gesendet.Erfolg $\rightarrow$ Closed / Fehler $\rightarrow$ Open

Um dies technisch umzusetzen, nutzen wir ein Sliding Window, in dem die letzten $N$ Anfragen und deren Status (z. B. HTTP 403 Forbidden oder 429 Too Many Requests) gespeichert werden. Sobald die Fehlerrate innerhalb dieses Fensters einen definierten Prozentsatz überschreitet, springt der Circuit Breaker in den Zustand "Open". Dies verhindert, dass weitere Anfragen an bereits blockierte Proxy-Nodes gesendet werden, was die Reputation der IP-Adressen weiter verschlechtern würde.

In einer verteilten Architektur ist ein zentraler State-Store, beispielsweise Redis, notwendig, damit alle Worker-Nodes synchronisiert sind und nicht redundant gegen die Zielseite prallen. Wir integrieren diese Logik oft in unsere Data Engineering Pipelines, um die Stabilität der Datenextraktion zu gewährleisten. Der Übergang von "Open" zu "Half-Open" erfolgt nach einer definierten Wartezeit. In der "Half-Open"-Phase senden wir eine geringe Anzahl an Sonden-Requests. Nur wenn diese eine definierte Erfolgsquote erreichen, wird der Circuit wieder geschlossen und der reguläre Betrieb aufgenommen.

Die Konfiguration der Schwellenwerte muss präzise an die Zielseite angepasst werden. Während einige Plattformen bereits bei einer 5%-Fehlerrate aggressiv blockieren, erlauben andere höhere Raten, bevor eine dauerhafte Sperre erfolgt.

Wir empfehlen, den Circuit Breaker nicht als isolierten Stopp-Mechanismus zu betrachten, sondern ihn mit einer automatischen Proxy-Rotation und einem dynamischen Back-off-Algorithmus zu koppeln. Ein bloßes Anhalten des Jobs löst das Problem der IP-Sperren nicht; erst die Kombination aus präziser Fehlererkennung und dem sofortigen Wechsel auf einen anderen Proxy-Pool sichert eine unterbrechungsfreie Datenlieferung.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt