日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

第六章 SpringCloud之Ribbon负载均衡

發布時間:2024/7/5 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第六章 SpringCloud之Ribbon负载均衡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

###################使用默認的負載均衡(輪詢)#############################

1、pom.xml

<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.test</groupId><artifactId>eureka-client-ribbon</artifactId><version>0.0.1-SNAPSHOT</version><name>eureka-client-ribbon</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR1</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project> View Code

2、application.yml

server:port: 8665 user:userServicePath: http://localhost:8663/user/spring:application:name: eureka-client-ribbon eureka:instance:hostname: localhostprefer-ip-address: trueinstance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}client:serviceUrl:defaultZone: http://${eureka.instance.hostname}:8661/eureka

3、對RestTemplate添加注解

package com.test.eurekaclientribbon;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; 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 public class EurekaClientRibbonApplication {@Bean@LoadBalanced //使restTemplate具備負載均衡的作用public RestTemplate restTemplate(){return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(EurekaClientRibbonApplication.class, args);}}

4、使用restTemplate對象遠程調用服務

package com.test.eurekaclientribbon.controller;import com.test.eurekaclientribbon.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; 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;/*** Ribbon使用步驟:* 全局配置* 1、添加依賴* 2、配置application.yml文件* 3、對啟動類中的RestTemplate添加@LoadBalanced注解,使得RestTemplate對象具備負載均衡能力* 4、請求路徑為:被調用方的地址,但必須將被調用方的ip地址改為virtualIp* 例如 restTemplate.getForObject("http://eureka-client-user/user/"+id, User.class);* 被調用方URL:http://192.168.137.1:8663/user/* 現為:http://eureka-client-user/user/*/ @RestController public class MovieController {@Autowiredprivate RestTemplate restTemplate;@Value("${user.userServicePath}")private String userServicePath;/* @Autowiredprivate LoadBalancerClient loadBalancerClient;*/@GetMapping("/movie/{id}")public User findById(@PathVariable Long id) {//請用虛擬ipreturn restTemplate.getForObject("http://eureka-client-user/user/"+id, User.class);}/*** 配置單一的方法進行輪詢* @return*//* @GetMapping("/test")public String test() {//請用虛擬ipServiceInstance serviceInstance =loadBalancerClient.choose("eureka-client-user");System.out.println(serviceInstance.getHost()+":"+serviceInstance.getPort());return "1";}*/ }

5、訪問

http://localhost:8661/ #查看eureka http://192.168.137.1:8663/user/2 #確保自己調用可以訪問 http://192.168.137.1:8665/movie/4 #遠程調用測試

?

###################配置對單一的方法進行輪詢(使用loadBalancerClient)########################

1、針對第一個步驟中的(4),進行修改

package com.test.eurekaclientribbon.controller;import com.test.eurekaclientribbon.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; 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;/*** Ribbon使用步驟:* 全局配置* 1、添加依賴* 2、配置application.yml文件* 3、對啟動類中的RestTemplate添加@LoadBalanced注解,使得RestTemplate對象具備負載均衡能力* 4、請求路徑為:被調用方的地址,但必須將被調用方的ip地址改為virtualIp* 例如 restTemplate.getForObject("http://eureka-client-user/user/"+id, User.class);* 被調用方URL:http://192.168.137.1:8663/user/* 現為:http://eureka-client-user/user/*/ @RestController public class MovieController {/* @Autowiredprivate RestTemplate restTemplate; */@Value("${user.userServicePath}")private String userServicePath;@Autowiredprivate LoadBalancerClient loadBalancerClient;/* @GetMapping("/movie/{id}")public User findById(@PathVariable Long id) {//請用虛擬ipreturn restTemplate.getForObject("http://eureka-client-user/user/"+id, User.class);}*//*** 配置單一的方法進行輪詢* @return*/@GetMapping("/test")public String test() {//請用虛擬ipServiceInstance serviceInstance =loadBalancerClient.choose("eureka-client-user");System.out.println(serviceInstance.getHost()+":"+serviceInstance.getPort());return "1";} }

?

###################全局修改負載均衡方式########################

1、針對(2)application.yml文件添加下面配置

server:port: 8665 user:userServicePath: http://localhost:8663/user/ spring:application:name: eureka-client-ribbon eureka:instance:hostname: localhostprefer-ip-address: trueinstance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}client:serviceUrl:defaultZone: http://${eureka.instance.hostname}:8661/eureka eureka-client-user: #遠程服務虛擬主機名ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #隨機方式#可以通過IRule類查看負載均衡方式#RoundRobinRule 輪詢#RandomRule 隨機

?

###################編寫Configuration文件指定負載均衡方式########################

?1、創建一個配置類

package com.test.eurekaclientribbon.config; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.IRule; import com.netflix.loadbalancer.RandomRule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration public class RibbonConfig {@Beanpublic IRule ribbonRule() {return new RandomRule();} }

2、在啟動類上添加注解

package com.test.eurekaclientribbon;import com.test.eurekaclientribbon.config.RibbonConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.ribbon.RibbonClient; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;@SpringBootApplication @EnableEurekaClient @RibbonClient(name = "eureka-client-user",configuration = RibbonConfig.class) //表示eureka-client-user主機使用這個規則 public class EurekaClientRibbonApplication {@Bean@LoadBalanced //使restTemplate具備負載均衡的作用public RestTemplate restTemplate(){return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(EurekaClientRibbonApplication.class, args);}}

?

轉載于:https://www.cnblogs.com/ywjfx/p/10549550.html

總結

以上是生活随笔為你收集整理的第六章 SpringCloud之Ribbon负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。