Analisi di sistemaSviluppatore Backend, Architetto di sistema

Che cos'è il Circuit Breaker a livello architettonico, quando e perché utilizzarlo?

Supera i colloqui con l'assistente IA Hintsage

Risposta.

Circuit Breaker è un pattern architetturale per prevenire errori a valanga e degrado nei sistemi distribuiti. La sua essenza: un componente responsabile delle chiamate a un sistema esterno verifica il successo delle operazioni. Se il numero di tentativi falliti aumenta troppo, il Circuit Breaker si "rompe" automaticamente e ulteriori chiamate non vengono eseguite fino a quando il sistema non inizia a riprendersi.

Esempio: se il microservizio Auth smette di rispondere, il servizio Order, utilizzando il Circuit Breaker, non invia temporaneamente richieste, ma restituisce immediatamente un errore, prevenendo un alto carico sul sistema dipendente.

Esempio di codice in Python (utilizzando la libreria pybreaker):

import pybreaker import requests breaker = pybreaker.CircuitBreaker(fail_max=3, reset_timeout=30) @breaker def call_service(): return requests.get("https://api.service.com/data") try: response = call_service() except pybreaker.CircuitBreakerError: print("Servizio temporaneamente non disponibile. Per favore riprova più tardi.")

Caratteristiche chiave:

  • Limita la diffusione dei guasti e accelera il recupero del sistema.
  • Consente di degradare in modo dolce: avvisare gli utenti invece di far crollare l'applicazione.
  • È rilevante per integrazioni con sistemi inaffidabili o sovraccarichi.

Domande trabocchetto.

Circuit Breaker è la stessa cosa del Retry?

No. Retry ripete le operazioni non riuscite, mentre il Circuit Breaker interrompe la catena di chiamate in caso di un alto numero di guasti, dando al sistema la possibilità di riposarsi. Questi pattern sono spesso combinati: retry all'interno, circuit breaker all'esterno.

È necessario implementare il Circuit Breaker tra i propri microservizi che vengono distribuiti contemporaneamente?

Sì, se i servizi possono sperimentare guasti o problemi di rete. Nessuno è immune da errori di configurazione o dal carico, nemmeno i vostri microservizi.

Il Circuit Breaker è necessario solo per le integrazioni API esterne?

No, questo pattern può essere applicato a qualsiasi interazione inaffidabile, anche all'interno della propria infrastruttura: database, cache, code di messaggi.