Lastausgleich : Darüber hinaus auf der bestehenden Netzwerkstruktur aufbauend Es bietet eine kostengünstige, effektive und transparente Methode zur Erweiterung der Bandbreite von Netzwerkgeräten und Servern, zur Erhöhung des Durchsatzes, zur Verbesserung der Netzwerkdatenverarbeitungsfunktionen sowie zur Verbesserung der Netzwerkflexibilität und -verfügbarkeit. Dies bedeutet, dass die Ausführung mehreren Betriebseinheiten wie Webservern, FTP-Servern, Unternehmensschlüsselanwendungsservern und anderen geschäftskritischen Servern usw. zugewiesen wird, um Arbeitsaufgaben gemeinsam zu erledigen.
1. Serverseitiger Lastausgleich : Der Client fordert den Lastausgleichsserver an und der Lastausgleichsserver leitet die Anfrage an einen Server weiter, der tatsächlich Dienste basierend auf seinem eigenen Algorithmus bereitstellt Server sendet die Antwortdaten an den Lastausgleichsserver, und der Lastausgleichsserver gibt die Daten schließlich an den Client zurück. (nginx)
2. Client-Lastausgleich : Der clientbasierte Lastausgleich besteht einfach darin, einen Planungsalgorithmus im Client-Programm festzulegen und zuerst eine Anfrage an den Server zu initiieren Führen Sie den Planungsalgorithmus aus, um zu berechnen, an welchen Server die Anfrage gesendet werden soll, und initiieren Sie dann die Anfrage an den Server.
Funktionen basierend auf dem Client-Lastausgleich:
werden durch das interne Programm des Kunden implementiert und erfordern keine zusätzlichen Investitionen in Load-Balancer-Software und -Hardware.
Das Problem der Nichtverfügbarkeit des Business-Servers muss innerhalb des Programms gelöst werden. Serverausfall hat für die Anwendung wenig Transparenz.
Das Problem der Drucküberlastung auf dem Business-Server muss innerhalb des Programms gelöst werden.
Wir verwenden Spring Boot zum Testen.
POM-Datei:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 "> <modelVersion>4.0.0</modelVersion> <groupId>com.jalja.org</groupId> <artifactId>spring-consumer-server-ribbon</artifactId> <version>0.0.1-SNAPSHOT</version> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Camden.SR4</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>
application.yml
stores: ribbon: listOfServers: www.baidu.com,www.jalja.org,www.163.com
Ribbons Lastausgleichsstrategie
1. RoundRobinRule (Abfragemodus) öffentliche Klasse RoundRobinRule erweitert AbstractLoadBalancerRule RoundRobin-Modus fragt den ausgewählten Server ab Abfrageindex, wählen Sie den Index aus, der dem Standortserver entspricht Diese Richtlinie ist auch die Standardrichtlinie von Ribbon
SpringCloudRibbonApplication.java
="static"= loadBalancer.choose("stores"= URI.create(String.format("http://%s:%s" "static"
:80
:80
:80
: 80
:80
:80
2. RandomRule (Zufallsstrategie) öffentliche Klasse RandomRule erweitert AbstractLoadBalancerRule Zufällig einen Server auswählen Wählen Sie zufällig den Server an der entsprechenden Indexposition aus.
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
stores: ribbon: listOfServers: www.baidu.com,www.jalja.org,www.163.org #随机 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
@Beanpublic IRule ribbonRule() {return new RandomRule();//这里配置策略,和配置文件对应}
http://www.baidu.com:80http://www.baidu.com:80http://www.baidu.com:80http://www.163.org:80http://www.baidu.com:80http://www.jalja.org:80
3. BestAvailableRule (Parallelität) öffentliche Klasse BestAvailableRule erweitert ClientConfigEnabledRoundRobinRule Wählen Sie einen Server mit die kleinsten gleichzeitigen Anforderungen Untersuchen Sie die Server einzeln. Wenn der Server ausfällt, ignorieren Sie ihn und wählen Sie dann den Server mit der kleinsten ActiveRequestsCount
Hinzufügen NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule zur Konfigurationsdatei application.yml. Fügen Sie@Beanpublic IRule ribbonRule() {return new BestAvailableRule();//这里配置策略,和配置文件对应}
http://www.baidu.com:80http://www.baidu.com:80http://www.baidu.com:80http://www.baidu.com:80http://www.baidu.com:80http://www.baidu.com:80
4. AvailabilityFilteringRule (Serverstatus) öffentliche Klasse AvailabilityFilteringRule erweitert PredicateBasedRule Filtern Sie die Back-End-Server heraus, die aufgrund kontinuierlicher Verbindungsfehler als unterbrochen markiert sind, und filtern Sie diese heraus hoch Gleichzeitige Backend-Server (aktive Verbindungen überschreiten den konfigurierten Schwellenwert) Verwenden Sie ein AvailabilityPredicate, um die Logik zum Filtern von Servern einzuschließen. Tatsächlich dient es dazu, den Betriebsstatus jedes im Status
5. WeightedResponseTimeRule (basierend auf der Antwortzeit) Die öffentliche Klasse WeightedResponseTimeRule erweitert RoundRobinRule und weist eine Gewichtung basierend auf der Antwortzeit zu das Gewicht und die Möglichkeit, ausgewählt zu werden. Je niedriger das Geschlecht. Ein Hintergrundthread liest regelmäßig die Antwortzeit der Bewertung aus dem Status und berechnet eine Gewichtung für jeden Server. Die Berechnung der Gewichtung ist ebenfalls relativ einfach. Die Antwortzeit abzüglich der durchschnittlichen Antwortzeit jedes Servers ergibt die Gewichtung des Servers. Wenn der Vorgang gerade erst gestartet wird und kein Status gebildet wird, wird die Roubine-Strategie zur Auswahl des Servers verwendet.
6. RetryRule (gemäß Richtlinie + Wiederholung) Die öffentliche Klasse RetryRule erweitert AbstractLoadBalancerRule und bietet einen Wiederholungsmechanismus auf der Maschine für die ausgewählte Lastausgleichsrichtlinie. Wenn die Serverauswahl innerhalb eines konfigurierten Zeitraums fehlschlägt, wird immer versucht, mit subRule einen verfügbaren Server
7 auszuwählen. ZoneAvoidanceRule (Zonenstatus + Dienststatus) öffentliche Klasse ZoneAvoidanceRule erweitert PredicateBasedRule Bestimmt die Leistung der Zone, in der sich der Server befindet, und die Verfügbarkeit des Servers, um den Server auszuwählen. Verwenden Sie ZoneAvoidancePredicate und AvailabilityPredicate, um zu bestimmen, ob die laufende Leistung einer Zone verfügbar ist und eliminiert alle Server in der nicht verfügbaren Zone). AvailabilityPredicate wird verwendet, um Server mit zu vielen Verbindungen herauszufiltern.
4, 5, 6 und 7 werden auf die gleiche Weise wie oben verwendet und werden hier nicht demonstriert
Das obige ist der detaillierte Inhalt vonSpring Cloud Client Load Balancing Ribbon. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!