Einführung in das Band
In einem verteilten System bereitet jeder Microservice mehrere Instanzen bereit. So verteilen Sie die Service -Verbraucher gleichmäßig an mehrere Dienstanbieter -Instanzen, erfordert die Verwendung von Ladungsbalancern.
Ribbon ist ein Lastausgleich, der viele Lastausgleichalgorithmen wie Umfragen bietet. Nach der Konfiguration der Dienstanbieteradresse können die Anfragen von Service -Verbraucher gleichmäßig verteilt werden.
Integrieren Sie das Band, um den Verbrauchern zu dienen
Fügen Sie Rilebbon -Abhängigkeitsbibliothek hinzu
<Depopentcy> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Ribbobn </artifactId> </abhängig>
Fügen Sie rastTemplate @loadBalized Annotation hinzu, um RestTemplate und Band zu integrieren
@Bean@loadBalancedPublic rastTemplate rastTemplate () {return neu rastTemplate ();}Ändern Sie den Controller und ändern Sie die Anforderungsadresse in http: // flim-user/user/. Wenn Ribbon und Eureka zusammen verwendet werden, wird der virtuelle Hostname automatisch der Netzwerkadresse des Microservice zugeordnet, und der LoadBalancerClient wird injiziert, dass er den aktuell ausgewählten Microservice -Knoten ausgibt.
@RestControllerPublic Class MovieController {private landes logger log = loggerFactory.getLogger (movieController.class); @Autowired Private rastTemplate rastTemplate; @Autowired Private LoadBalancerClient loadBalancerClient; @Getmapping ("/user/{id}") public user findById (@PathVariable int id) {return this.restTemplate.getForObject ("http: // flim-user/"+id, user.class); } @GetMapping ("/log-instance") public void loginStance () {serviceInstance serviceInstance = this.LoadBalancerClient.choose ("Flim-User"); log.info ("{}: {}: {}", serviceInstance.getServiceid (), serviceInstance.gethost (), serviceInstance.getPort ()); }}Führen Sie das Testprogramm aus
{"ID": 1, "Benutzername": "Account1", "Name": "Zhang San", "Alter": 20, "Balance": 100.00}
Die folgenden Informationen werden ausgegeben, wenn Sie mehrmals auf die http: // localhost: 8010/loginstance zugreifen.
Sie können feststellen, dass die Anfragen gleichmäßig an die beiden Benutzer -Microservices verteilt werden
2017-12-17 20: 47: 53.975 Info 12313 --- [NIO-8010-EXEC-2] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8764
2017-12-17 20: 47: 54.215 Info 12313 --- [NIO-8010-EXEC-1] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 20: 47: 54.445 Info 12313 --- [NIO-8010-EXEC-3] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8764
2017-12-17 20: 47: 54.690 Info 12313 --- [NIO-8010-EXEC-4] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 20: 47: 54.935 Info 12313 --- [NIO-8010-EXEC-5] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8764
HINWEIS: restTemplate.getForObject (...) und LoadBalancerClient.choose (...) kann nicht in derselben Methode geschrieben werden, da REST-TEMplate tatsächlich ein Ribbon-Client ist und sich selbst bereits das Verhalten "wählen" enthält.
Tibbon nach Code konfigurieren
Sie können Java -Code oder -attribute verwenden, um die Bandkonfiguration anzupassen. Die Standardkonfigurationsklasse von Ribbon ist eine RibbonClientConfiguration, oder Sie können ein Pojo verwenden, um die Ribbon -Konfiguration anzupassen. Diese Konfiguration ist feinkörnig. Verschiedene Closed -Clients können unterschiedliche Konfigurationen verwenden.
Erstellen Sie eine Ribbon -Konfigurationsklasse
/*** Diese Klasse ist eine Konfigurationsklasse* sollte nicht nach Komponenten gescannt werden }}
Geben Sie Konfigurationsklassen für Dienstanbieter an, die die Annotation @RibbonClient oder @Ribbonclients verwenden
@SpringBootApplication @enablediscoveryClient @RibbonClient (name = "flim-user", configuration = ribbonconfiguration.class) public class flimconsumerApplication {@bean @LoadBalanced public rastTemplate restTemplate () {neu rastTemplate zurückgeben (); } public static void main (String [] args) {SpringApplication.run (flimconsumerApplication.class, args); }}Besuchen Sie die Testadresse http: // localhost: 8010/loginstance und Sie können feststellen, dass die Anforderung zufällig auf zwei Microservices verteilt wird.
2017-12-17 21: 08: 52.769 Info 12524 --- [NIO-8010-EXEC-7] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 21: 08: 52.946 Info 12524 --- [NIO-8010-EXEC-8] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 21: 08: 53.138 Info 12524 --- [NIO-8010-EXEC-9] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 21: 08: 53.319 Info 12524 --- [IO-8010-EXEC-10] com.linyuan.controller.MovieController: Flim-User: Linyuandembp: 8764
2017-12-17 21: 08: 53.511 Info 12524 --- [NIO-8010-EXEC-1] Com.Linyuan.Controller.MovieController: Flim-User: Linyuandembp: 8763
HINWEIS: Die RibbonConfiguration -Klasse kann nicht von @Componentscan gescannt werden, andernfalls werden die Konfigurationsinformationen von allen @RibbonClient gemeinsam genutzt. Wenn Sie daher nur die Konfiguration eines bestimmten Ribbon -Clients anpassen möchten, müssen Sie verhindern, dass sie von @Componentscan gescannt werden.
Konfigurieren Sie die Tibbon in der Konfigurationsdatei
Das Anpassen der Referenzeigenschaften durch Konfigurationsdateien ist bequemer, und das Konfigurationspräfix ist <Clientname> .Ribbon.
Definieren Sie die Bandkonfiguration durch Konfigurationsdateien
Flim-User: Ribbon: nFloadBalancerruleClassName: com.netflix.loadbalancer.randomrule
Häufig verwendete Tibbon Global Configuration
Ribbon: ConnectionTimeout: #Connection Timeout Readtimeout: #Read Timeout oktoretryonAlaloperatotions: #Retry Alle Betriebsanforderungen MaxAutoretriiesNextServer: #Switch Server -Instanz Abrufen MaxAutoretries: #Retry auf der aktuellen Instanz -Serverlistre -Freshinterval: #Reset Time zwischen dem Service List the Service List the Service List The Service List List.
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.