Heim >Backend-Entwicklung >Golang >Was sind Strombegrenzung und Absicherung? Ausführliche Erläuterung der Verschlechterung der Sentinel-Strombegrenzungssicherung

Was sind Strombegrenzung und Absicherung? Ausführliche Erläuterung der Verschlechterung der Sentinel-Strombegrenzungssicherung

藏色散人
藏色散人nach vorne
2022-11-13 16:37:402817Durchsuche

Dieser Artikel wird Ihnen durch die golangTutorial-Kolumne über Sentinel-Strombegrenzung und Leistungsschalter-Downgrade vorgestellt. Der Inhalt umfasst eine Einführung in Strombegrenzung und Leistungsschalter sowie Alibaba Open Source Sentinel, Installation und praktische Einführung Ich hoffe, es wird Freunden in Not helfen!

Was sind Strombegrenzung und Absicherung? Ausführliche Erläuterung der Verschlechterung der Sentinel-Strombegrenzungssicherung

Sentinel-Strombegrenzungsschalter-Downgrade

Was ist ein Strombegrenzungsschalter-Downgrade?

Strombegrenzung: Wenn in unserem erworbenen System an diesem Tag plötzlich eine große Menge an Datenverkehr eintrifft, kann unser Service dies nur tun Behandeln Sie maximal 2.000 Anfragen gleichzeitig, und plötzlich kamen 5.000 Anfragen. Ist das nicht eine schreckliche Belastung für den Server? Dies kann direkt dazu führen, dass der Server ausfällt und abstürzt, was dazu führt, dass das ursprüngliche 2K-Verarbeitungsvolumen nicht mehr möglich ist Zu diesem Zeitpunkt müssen wir den Fluss begrenzen. Die Funktion des Flusslimits besteht darin, die Anzahl der Besuche auf dem Server auf dem höchsten Niveau zu halten und die redundanten Anforderungen nicht zu verarbeiten direkt auflegen. Wenn wir beispielsweise während Double Eleven eine Bestellung aufgeben möchten, sehen wir etwas wie „Die Anfrage ist beschäftigt, bitte versuchen Sie es später noch einmal!“.

Sicherung: Ich glaube, jeder kennt den Leistungsschalter. Er entspricht einem Schalter, der im geöffneten Zustand den Verkehrsfluss unterbinden kann. Beispielsweise brennt eine Sicherung durch, wenn der Strom zu groß ist, um Schäden an Bauteilen zu vermeiden.

Service-Leistungsschalter bedeutet, dass der Anrufer über einen Leistungsschalter als Proxy auf den Dienst zugreift. Der Leistungsschalter überwacht weiterhin den vom Dienst zurückgegebenen Erfolgs- und Fehlerstatus.

Wenn der Fehler den eingestellten Schwellenwert überschreitet ist geöffnet und die Anfrage kann nicht authentifiziert werden. Der Dienst wird lokal aufgerufen.

Nutzungsszenarien

Wenn der Dienst ausfällt oder aktualisiert wird, lassen Sie den Client schnell ausfallen.

Die Fehlerverarbeitungslogik ist einfach zu definieren.

    Die Antwort dauert lange und das Lese-Timeout Wird vom Client festgelegt, wird verhindert, dass Verbindungen und Thread-Ressourcen aufgrund einer großen Anzahl von Client-Wiederholungsanforderungen freigegeben werden Die Auslastung ist relativ hoch, um bestimmte Funktionen (Geschäftsszenarien) zu verhindern. Wenn einige Funktionen (Geschäftsszenarien) überlastet sind oder langsam reagieren, werden Anforderungen für einige nicht zum Kerngeschäft gehörende Schnittstellen und Daten intern vorübergehend aufgegeben und ein Fallback-Fehler (Rückzug) vorbereitet Die Bearbeitungsinformationen werden direkt zurückgegeben. Auf diese Weise wird zwar ein verlustbehafteter Dienst bereitgestellt, aber die Stabilität und Verfügbarkeit des gesamten Systems sichergestellt.
  • Was ist Sentinel? Sentinel ist ein Open-Source-Projekt von Alibaba. Es bietet mehrere Dimensionen wie Flusskontrolle, Leistungsschalterverschlechterung und Systemlastschutz, um die Stabilität der Dienste sicherzustellen.
  • Offizielle Website: github.com/alibaba/Sentinel/wiki

    Sentinel wurde 2012 in Alibaba geboren und sein Hauptziel ist die Verkehrskontrolle. Von 2013 bis 2017 entwickelte sich Sentinel rasant und wurde zu einem Grundbestandteil aller Alibaba-Microservices. Es wird in mehr als 6000 Anwendungen eingesetzt und deckt nahezu alle Kernszenarien des E-Commerce ab. Im Jahr 2018 entwickelte sich Sentinel zu einem Open-Source-Projekt. Im Jahr 2020 wurde Sentinel Golang veröffentlicht.
  • Funktionen:

    Reichhaltige Anwendungsszenarien: Sentinel hat in den letzten 10 Jahren die Kernszenarien von Alibabas Double Eleven-Verkehrsförderung durchgeführt, wie zum Beispiel Flash-Verkäufe (d. h.
Burst-Verkehr wird innerhalb des Bereichs kontrolliert, den die Systemkapazität ertragen kann) , Messaging Peak Shaving und Valley Filling, Cluster-Flusskontrolle, Echtzeit-Zusammenführung nachgelagerter nicht verfügbarer Anwendungen usw.

Vollständige Echtzeitüberwachung: Sentinel bietet auch Echtzeitüberwachungsfunktionen. In der Konsole können Sie die Daten der zweiten Ebene einer einzelnen Maschine sehen, die mit der Anwendung verbunden ist, und sogar den zusammenfassenden Betriebsstatus eines Clusters mit weniger als 500 Maschinen.

* Umfassende Ökologie *

Geschichte von Sentinel

Im Jahr 2012 wurde Sentinel geboren, seine Hauptfunktion ist die Kontrolle des Einlassflusses.

Von 2013 bis 2017 entwickelte sich Sentinel innerhalb der Alibaba Group rasant und wurde zu einem Basistechnologiemodul, das alle Kernszenarien abdeckt. Infolgedessen hat Sentinel eine große Anzahl von Verkehrskonsolidierungsszenarien und Produktionspraktiken gesammelt.

Im Jahr 2018 war Sentinel Open Source und entwickelt sich ständig weiter.

Im Jahr 2019 untersuchte Sentinel weiterhin die Richtung der mehrsprachigen Erweiterung, brachte eine native C++-Version auf den Markt und führte außerdem die Unterstützung der Envoy-Clusterflusssteuerung für Service Mesh-Szenarien ein, um das Problem der mehrsprachigen Strombegrenzung im Rahmen des Dienstes zu lösen Mesh-Architektur.

Im Jahr 2020 wurde die Sentinel Go-Version eingeführt und entwickelt sich weiterhin in Richtung Cloud-native.

Im Jahr 2021 entwickelt sich Sentinel zur Cloud-nativen Hochverfügbarkeits-Entscheidungscenter-Komponente 2.0 weiter. Gleichzeitig wird die native Version von Sentinel Rust eingeführt. Gleichzeitig haben wir auch Szenarien wie die Envoy WASM-Erweiterung und die eBPF-Erweiterung in der Rust-Community untersucht.

  • Im Jahr 2022 wird die Marke Sentinel auf Verkehrsmanagement erweitert, das Verkehrsrouting/-planung, Verkehrsfärbung, Verschlechterung der Flusskontrolle, Überlastungsschutz/Instanzentfernung usw. abdeckt; gleichzeitig wird die Community das Verkehrsmanagement extrahieren verwandte Standards in den OpenSergo-Standard, und Sentinel wird als Implementierung von Verkehrsmanagementstandards dienen.

  • Sentinel-go-Installation

  • Sentinel-go Open-Source-Adresse: https://github.com/alibaba/sentinel-golang

    Offizielle Website-Dokumentation

    package main
    
    import (
        "fmt"
        "log"
    
        sentinel "github.com/alibaba/sentinel-golang/api"
        "github.com/alibaba/sentinel-golang/core/base"
        "github.com/alibaba/sentinel-golang/core/flow"
    )
    
    func main() {
        //基于sentinel的qps限流
        //必须初始化
        err := sentinel.InitDefault()
        if err != nil {
            log.Fatalf("Unexpected error: %+v", err)
        }
    
        //配置限流规则:1秒内通过10次
        _, err = flow.LoadRules([]*flow.Rule{
            {
                Resource:               "some_test",
                TokenCalculateStrategy: flow.Direct,
                ControlBehavior:        flow.Reject, //超过直接拒绝
                Threshold:              10,          //请求次数
                StatIntervalInMs:       1000,        //允许时间内
            },
        })
    
        if err != nil {
            log.Fatalf("Unexpected error: %+v", err)
            return
        }
    
        for i := 0; i < 12; i++ {
            e, b := sentinel.Entry("some_test", sentinel.WithTrafficType(base.Inbound))
            if b != nil {
                fmt.Println("限流了")
            } else {
                fmt.Println("检查通过")
                e.Exit()
            }
        }
    }

    Druckergebnis: erreicht nach und nach 1k, am 1k-Position Schwankt nach oben und unten

Das obige ist der detaillierte Inhalt vonWas sind Strombegrenzung und Absicherung? Ausführliche Erläuterung der Verschlechterung der Sentinel-Strombegrenzungssicherung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen