


Was sind Strombegrenzung und Absicherung? Ausführliche Erläuterung der Verschlechterung der Sentinel-Strombegrenzungssicherung
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!
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.
NutzungsszenarienWenn 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/wikiSentinel 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.
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
Druckergebnis: erreicht nach und nach 1k, am 1k-Position Schwankt nach oben und untenpackage 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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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 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.

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.

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.

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

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.

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

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].
