Heim > Java > javaLernprogramm > Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

php是最好的语言
Freigeben: 2018-08-02 14:35:25
Original
2304 Leute haben es durchsucht

Ribbon ist ein Client-Load-Balancer, der eine hervorragende Kontrolle über das Verhalten von HTTP- und TCP-Clients bietet. Feign hat standardmäßig Ribbon verwendet (Referenzartikel)

1. Werfen wir zunächst einen Blick auf mehrere Kernklassen von Ribbon

1 IClientConfig Standardimplementierungsklasse DefaultClientConfigImpl, die hauptsächlich für verwendet wird Konfiguration Relevante Attributkonfiguration des Ribbon-Clients

2, ServerListUpdaterStandardimplementierungsklasse PollingServerListUpdater, hauptsächlich verantwortlich für die dynamische Aktualisierung der Serverliste

  • Nach der Startmethode ist aufgerufen, ein Timer wird gestartet. Die Aufgabe startet die Ausführung mit einer Verzögerung von 1s und wird periodisch alle 30s ausgeführt

    • Das periodische Intervall kann mit ribbon.ServerListRefreshInterval=1000 oder ribbonClientName.ribbon.ServerListRefreshInterval=1000

  • Die Startmethode wird aufgerufen, wenn

    initialisiert wirdDynamicServerListLoadBalancer

3

Serverliste abrufenServerList

  • Standardimplementierungsklasse

    , standardmäßig wird die Serverliste aus der Konfigurationsdatei abgerufen und wie folgt konfiguriertConfigurationBasedServerList[ribbonClinetName].ribbon.listOfServers=xxx,xxx

  • Konsul-Implementierungsklasse für die Diensterkennung einführen, hauptsächlich verantwortlich für den Erhalt der Serverliste des Registrierungszentrums ConsulServerList

    Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

    Hinweis: Sie können Ihre eigene

    -Implementierung erweitern durch Konfiguration, wie folgt: ServerList[ribbonClient].ribbon.NIWSServerListClassName=类名

4.

ServerlistenfilterServerListFilter

  • Die Standardimplementierungsklasse

    hauptsächlich Filter die Serverliste basierend auf PartitionenZonePreferenceServerListFilter

  • Führt die Implementierungsklasse der Consul Service Discovery ein, die hauptsächlich für das Filtern der Liste der Server verantwortlich ist, die die Consul-Gesundheitsprüfung bestehen (alle Serverlisten). wird in ConsulServerList abgerufen, einschließlich Servern, die die Integritätsprüfung nicht bestehen)HealthServiceServerListFilter

    Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

    Hinweis: Sie können Ihre eigene

    Implementierung durch Konfiguration erweitern, wie folgt ServerList[ribbonClient].ribbon.NIWSServerListFilterClassName=类名

5.

Überprüfen Sie, ob IPing

  • standardmäßig

    implementiert. Dies ist eine falsche Erkennung und wird immer zurückgegeben wahrDummyPing

  • , Einführung von consul Die Implementierungsklasse der Serviceerkennung bestimmt hauptsächlich, ob der Server aktiv ist, basierend auf dem von consul zurückgegebenen Prüfparameter, der mit der Filterbeurteilung von identisch ist ConsulPingHealthServiceServerListFilter

    Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

    Hinweis: Es kann wie folgt konfiguriert werden, um Ihre eigene

    Implementierung zu erweitern: ServerList[ribbonClient].ribbon.NFLoadBalancerPingClassName=类名

6.

LastausgleichsauswahlIRule

  • Standardimplementierung

    , zusammengesetzte Beurteilung der Leistung der Region, in der sich der Server befindet, und der Verfügbarkeit des Servers. Server auswählen ZoneAvoidanceRule

  • : Zufällig einen Server auswählen RandomRule

  • : RoundRobin-Modusabfrage wählt Server ausRoundRobinRule

  • : Wiederholungsmechanismus auf der Maschine für die ausgewählte Lastausgleichsstrategie. RetryRule

  • : Weisen Sie eine Gewichtung basierend auf der Antwortzeit zu. Je länger die Antwortzeit, desto geringer ist die Gewichtung und desto geringer ist die Wahrscheinlichkeit, ausgewählt zu werden. WeightedResponseTimeRule

  • : Filtern Sie die Back-End-Server heraus, die aufgrund anhaltender Verbindungsfehler als „Circuit Tripped“ markiert sind, und filtern Sie die Back-End-Server mit hoher Parallelität heraus (aktive Verbindungen überschreiten den Konfigurationsschwellenwert) AvailabilityFilteringRule

  • : Wählen Sie einen Server mit den kleinsten gleichzeitigen Anfragen BestAvailableRule

Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern

7 Balancing Master Controller, die Standardimplementierungsklasse

, die den gesamten Lastausgleichsclient ILoadBalancerZoneAwareLoadBalancer

    startet, kann seine eigene
  • Implementierung durch Konfiguration erweitern, wie folgt:

    ServerList[ribbonClient].ribbon.NFLoadBalancerClassName=类名

    Analyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern
    Load-Balancer-Startsequenzdiagramm:

  • Während der Initialisierung wird zunächst eine geplante Aufgabe initialisiert, die alle 30 Sekunden ausgeführt wird. Der Cache speichert alle vom Registrierungscenter erhaltenen Instanzlisten allServerList und die Instanzliste upServerList erfolgreich gepingt. Während des Lastausgleichs habe ich jedoch die Liste „allServerList“ und nicht „upServerList“ erhalten. Ich verstehe die Bedeutung dieses Pings nicht.

  • Starten Sie eine geplante Aufgabe, um die Dienstliste abzurufen Besuchen Sie das Registrierungscenter regelmäßig und führen Sie es alle 30 Sekunden aus

  • Initialisieren, um die Serviceliste zu erhalten, wird von ServiceFilter gefiltert und im Cache gespeichert.

Wenn der Client einen Anruf initiiert, ruft er die Methode ChooseServer von ILoadBalancer auf, um eine Instanz auszuwählen und sie gemäß dem Lastausgleichsalgorithmus von IRule an den Aufrufer zurückzugeben

Verwandte Artikel:

WPF 4 Ribbon Development Quick Access Toolbar )

SharePoint 2013 Blendet das Ribbon, das Menü und andere nicht inhaltsbezogene Elemente der Seite aus

Das obige ist der detaillierte Inhalt vonAnalyse des Spring-Cloud-Ribbon-Prinzips: mehrere Kernklassen von Bändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage