Sobes.tech
Middle — Middle+

Μπορείτε να εξηγήσετε τη λειτουργία του Circuit Breaker και γιατί είναι απαραίτητος σε συστήματα με υψηλό φορτίο;

sobes.tech AI

Απάντηση από AI

Circuit Breaker — είναι ένα μοτίβο που βοηθά στην προστασία του συστήματος από διαδοχικές αποτυχίες κατά την εργασία με εξωτερικές υπηρεσίες ή συστατικά.

Αρχή λειτουργίας:

  • Σε κανονική κατάσταση, το Circuit Breaker επιτρέπει τα αιτήματα προς την εξωτερική υπηρεσία.
  • Αν ο αριθμός των σφαλμάτων υπερβεί ένα καθορισμένο όριο, το Circuit Breaker «ανοίγει» και μπλοκάρει περαιτέρω αιτήματα για κάποιο χρονικό διάστημα.
  • Μετά από μια παύση, προσπαθεί να επανασυνδεθεί (ημι-ανοιχτή κατάσταση).
  • Αν τα αιτήματα είναι επιτυχής, το Circuit Breaker επιστρέφει στην κανονική κατάσταση.

Γιατί χρειάζεται:

  • Προλαμβάνει την υπερφόρτωση της αποτυχημένης υπηρεσίας.
  • Μειώνει τον χρόνο αναμονής της απάντησης, επιστρέφοντας γρήγορα ένα σφάλμα.
  • Βελτιώνει τη σταθερότητα και την ανθεκτικότητα του συστήματος.

Παράδειγμα σε Go με τη βιβλιοθήκη github.com/sony/gobreaker:

import (
    "fmt"
    "github.com/sony/gobreaker"
)

func main() {
    cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})

    result, err := cb.Execute(func() (interface{}, error) {
        // κλήση στην εξωτερική υπηρεσία
        return "απάντηση", nil
    })

    if err != nil {
        fmt.Println("Σφάλμα ή ανοικτό Circuit Breaker:", err)
    } else {
        fmt.Println("Επιτυχής απάντηση:", result)
    }
}