Inhaltsverzeichnis
Sentinel-Strombegrenzungsschalter-Downgrade
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

Nov 13, 2022 pm 04:37 PM
golang

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()
            }
        }
    }
    Nach dem Login kopieren

    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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann ich Dateien mit Golang sicher lesen und schreiben? Wie kann ich Dateien mit Golang sicher lesen und schreiben? Jun 06, 2024 pm 05:14 PM

Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich den Verbindungspool für die Golang-Datenbankverbindung? Wie konfiguriere ich den Verbindungspool für die Golang-Datenbankverbindung? Jun 06, 2024 am 11:21 AM

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

Vergleich der Vor- und Nachteile des Golang-Frameworks Vergleich der Vor- und Nachteile des Golang-Frameworks Jun 05, 2024 pm 09:32 PM

Das Go-Framework zeichnet sich durch seine hohen Leistungs- und Parallelitätsvorteile aus, weist jedoch auch einige Nachteile auf, z. B. dass es relativ neu ist, über ein kleines Entwickler-Ökosystem verfügt und einige Funktionen fehlen. Darüber hinaus können schnelle Änderungen und Lernkurven von Framework zu Framework unterschiedlich sein. Das Gin-Framework ist aufgrund seines effizienten Routings, der integrierten JSON-Unterstützung und der leistungsstarken Fehlerbehandlung eine beliebte Wahl für die Erstellung von RESTful-APIs.

Golang Framework vs. Go Framework: Vergleich der internen Architektur und externen Funktionen Golang Framework vs. Go Framework: Vergleich der internen Architektur und externen Funktionen Jun 06, 2024 pm 12:37 PM

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

Was sind die Best Practices für die Fehlerbehandlung im Golang-Framework? Was sind die Best Practices für die Fehlerbehandlung im Golang-Framework? Jun 05, 2024 pm 10:39 PM

Best Practices: Erstellen Sie benutzerdefinierte Fehler mit klar definierten Fehlertypen (Fehlerpaket). Stellen Sie weitere Details bereit. Protokollieren Sie Fehler ordnungsgemäß. Geben Sie Fehler korrekt weiter und vermeiden Sie das Ausblenden oder Unterdrücken. Wrappen Sie Fehler nach Bedarf, um Kontext hinzuzufügen

Wie speichere ich JSON-Daten in einer Datenbank in Golang? Wie speichere ich JSON-Daten in einer Datenbank in Golang? Jun 06, 2024 am 11:24 AM

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Wie löst man häufige Sicherheitsprobleme im Golang-Framework? Wie löst man häufige Sicherheitsprobleme im Golang-Framework? Jun 05, 2024 pm 10:38 PM

So beheben Sie häufige Sicherheitsprobleme im Go-Framework Angesichts der weit verbreiteten Einführung des Go-Frameworks in der Webentwicklung ist die Gewährleistung seiner Sicherheit von entscheidender Bedeutung. Im Folgenden finden Sie eine praktische Anleitung zur Lösung häufiger Sicherheitsprobleme mit Beispielcode: 1. SQL-Injection Verwenden Sie vorbereitete Anweisungen oder parametrisierte Abfragen, um SQL-Injection-Angriffe zu verhindern. Beispiel: constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

Wie finde ich den ersten Teilstring, der mit einem regulären Golang-Ausdruck übereinstimmt? Wie finde ich den ersten Teilstring, der mit einem regulären Golang-Ausdruck übereinstimmt? Jun 06, 2024 am 10:51 AM

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

See all articles