Öffnung
Dieses Beispiel basiert auf Springboot-Integration der H2-Speicherdatenbank, der Realisierung von Unit-Tests und datenbankunabhängig und verwendet RastTemplate, um den Rastful-Service von Spring Boot zu konsumieren.
In dem Ruhestand -Service -Beispiel, bei dem RastTemplate zum Konsum von Spring Start verwendet wird, erwähnten wir, dass beim Aufrufen des Spring -Boot -Dienstes die Dienst -URL der Dienstleistung in die Konfigurationsdatei geschrieben werden muss. Unabhängig davon, welche dieser beiden Methoden sich ändert, muss das Programm geändert werden und der Dienst wird wiederverfolgt. Dieses Problem kann bei der Verwendung eines Bandes effektiv vermieden werden.
Vorwort:
Es gibt zwei Möglichkeiten, Soft Last Balancing zu implementieren, nämlich Lastausgleich auf dem Server und das Lastausgleich auf dem Client.
Server-Seite-Lastausgleich: Wenn der Browser eine Anforderung an den Hintergrund ausgibt, wird zunächst eine Anforderung an den Reverse-Proxy-Server gesendet. Der Reverse -Proxy -Server entscheidet, welcher Server eine Anforderung an basierend auf der IP: Port -Mapping -Tabelle sendet und vom Client bereitgestellt wird. Im Allgemeinen wird die Nginx Reverse Proxy -Technologie verwendet.
Client -Lastausgleich: Wenn der Browser eine Anfrage an den Hintergrund stellt, wird der Client die verfügbaren Serviceinformationen an den Server an den Service -Registranten (z. B. Eureka -Server) an den Server angerufen und dann direkt an welchen Server die Anfrage gemäß der Lastausgleichsrichtlinie gesendet werden. Dieser gesamte Prozess erfolgt auf der Clientseite und erfordert nicht die Teilnahme des Reverse -Proxy -Servers.
1. Starten Sie Eureka Server
Bitte beachten Sie dieses Beispiel: Starten Sie den Eureka -Server in Spring Cloud
2. Starten Sie den Microservice und registrieren Sie sich bei Eureka Server
Spring Cloud - Registrieren Sie den Spring -Boot -Dienst auf Eureka Server
Um den Effekt des Lastausgleichs zu demonstrieren, starten Sie einen weiteren Service
3. Ribbon -Unterstützung hinzufügen
1. Fügen Sie die Abhängigkeiten von Ribbon hinzu
2. Support für Lastausgleich hinzufügen
Paket com.chhliu.springboot.restful; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootApplication; import org.springframework.boot.web.client.restTemplateBuilder; import org.springframework.cloud.client.loadBalancer.loadBalanced; import org.springframework.cloud.netflix.eureka.enableeureKaclient; import org.springframework.context.annotation.bean; import org.springframework.web.client.restTemplate; @SpringbootApplication @EnableEureKaclient öffentliche Klasse SpringbootrestTemplateApplication {@Autowired Private rastTemplateBuilder Builder; @Bean @LoadBalanced // Support für das Ladungsausgleich ist sehr einfach. Sie müssen nur die @LoadBalanced Annotation zum RestTemplate hinzufügen. Dann hat die RestTemplate die Funktion des Lastausgleichs. Wenn die @LoadBalanced Annotation nicht hinzugefügt wird, wird eine Ausnahme von java.net.unnownHostException: Springboot-H2 gemeldet. Zu diesem Zeitpunkt kann der Dienst nicht aufgerufen werden, indem der Dienstname auf dem Eureka -Server registriert wird, da RESTTEMPLATE nicht vom Servicenamen auf IP: Port: Port zugeordnet wird und die Zuordnungsfunktion durch LoadBalancerClient implementiert wird. public RestTemplate rastTemplate () {return Builder.build (); } public static void main (String [] args) {SpringApplication.run (SpringbootrestTemPlateApplication.class, Args); }} 3. Ändern Sie die URL des aufrufenden Microservice
Paket com.chhliu.springboot.restful.controller; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.restController; import org.springframework.web.client.restTemplate; import com.chhliu.springboot.restful.vo.user; @RestController Public Class RestTemPlateConTroller {@Autowired Private rastTemplate rastTemplate; @Getmapping ("/template/{id}") public user findById (@PathVariable Long ID) {// Ändern Sie das Original-IP: Portformular in den auf Eureka-Server-Benutzer u = this.restTemplate.getForObject registrierten Anwendungsnamen. System.out.println (u); kehre u zurück; }}4. Überprüfen Sie den Status des Eureka -Servers
5. Aktualisieren Sie im Browser die http: // localhost: 7904/template/2 Adresse viele Male
6. Testergebnisse
7900 Port Service:
Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ von user user0_wo user0_.id =?
7901 Portdienst:
Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ von user user0_wo user0_.id =? Hibernate: Wählen Sie user0_.id as id1_0_0_, user0_.age als Alter2_0_0_, user0_.balance as Balance3_0_0_, user0_.name als name4_0_0_, user0_.username as username5_0_0_ user0_where0_.id =?
7904 Port Service:
Benutzer [id = 2, userername = user2, name = li si, Alter = 20, balance = 100.00] 2017-01-23 09: 58: 05.682 Info 7436-[Erlistupdater-0] C.Netflix.Config.ChaineddynamicProperty: Fliping-Eigenschaft: Springboot-H2.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon.Ribbon. Niws.loadBalancer.AvailabilityFilteringRule age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, age=20, balance=100.00] User [id=2, username=user2, name=Li Si, Alter = 20, Balance = 100.00] Benutzer [ID = 2, Benutzername = Benutzer2, Name = Li Si, Alter = 20, Balance = 100,00]
Aus den oben genannten Testergebnissen können wir feststellen, dass insgesamt 7904 Port -Dienste 9 Mal angepasst wurden, von denen 7904 Port Services viermal angepasst wurden und 7901 Ports 5 -mal angepasst wurden, was genau 9 Mal betrug.
Nach den obigen Schritten wird das Band im Grunde genommen verwendet, um die Client -Lastausgleichsfunktion zu realisieren.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.