欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Resttemplate和Ribbon調(diào)用Eureka實(shí)現(xiàn)負(fù)載均衡

 更新時(shí)間:2022年03月26日 10:40:58   作者:追月亮的猴子  
這篇文章主要介紹了如何使用Resttemplate和Ribbon調(diào)用Eureka實(shí)現(xiàn)負(fù)載均衡,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.服務(wù)注冊(cè)和發(fā)現(xiàn)Eureka

可以用作服務(wù)治理。

2.首先我們建立一個(gè)父子工程

最外層是forezp

其下面建立四個(gè)子工程

  • eureka-server
  • eureka-client
  • eureka-client1
  • eureka-ribbon-client

3.forezp工程相關(guān)

1.forezp pom文件如下

<?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.5.RELEASE</version>
? ? ? <relativePath/> <!-- lookup parent from repository -->
? ?</parent>
? ?<groupId>com.example</groupId>
? ?<artifactId>forezp</artifactId>
? ?<version>0.0.1-SNAPSHOT</version>
? ?<name>forezp</name>
? ?<description>Demo project for Spring Boot</description>?
?
? ?<properties>
? ? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
? ? ? <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
? ? ? <java.version>1.8</java.version>
? ? ? <spring-cloud.version>Dalston.SR1</spring-cloud.version>
? ?</properties>?
?
? ?<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>?
?
? ?<modules>
? ? ? <module>euraka-client</module>
? ? ? <module>euraka-server</module>
? ? ? <module>eureka-ribbon-client</module>
? ? ? <module>euraka-client2</module>
? ?</modules>?
?
? ?<!--<build>-->
? ? ? <!--<plugins>-->
? ? ? ? ?<!--<plugin>-->
? ? ? ? ? ? <!--<groupId>org.springframework.boot</groupId>-->
? ? ? ? ? ? <!--<artifactId>spring-boot-maven-plugin</artifactId>-->
? ? ? ? ?<!--</plugin>-->
? ? ? <!--</plugins>-->
? ?<!--</build>-->?
?
</project>

4.Eureka的服務(wù)中心:eureka-server相關(guān)

1.pom文件

<?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>com.example</groupId>
? ? ? <artifactId>forezp</artifactId>
? ? ? <version>0.0.1-SNAPSHOT</version>
? ? ? <relativePath/> <!-- lookup parent from repository -->
? ?</parent>
? ?<groupId>com.example</groupId>
? ?<artifactId>euraka-server</artifactId>
? ?<version>0.0.1-SNAPSHOT</version>
? ?<name>euraka-server</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.cloud</groupId>
? ? ? ? ?<artifactId>spring-cloud-starter-netflix-eureka-server</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>

2.application.properties文件

server.port=8761?
eureka.instance.hostname=localhost
?
#防止自己注冊(cè)自己
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#eureka的注冊(cè)地址
eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/}

3.需要在啟動(dòng)類(lèi)添加 @EnableEurekaServer 注解來(lái)開(kāi)啟注冊(cè)服務(wù)

package com.example.eurakaserver;??
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;?
?
@SpringBootApplication
@EnableEurekaServer
public class EurakaServerApplication {??
? ?public static void main(String[] args) {
? ? ? SpringApplication.run(EurakaServerApplication.class, args);
? ?}??
}

5.eureka-client和eureka-client1用來(lái)提供服務(wù)

這兩個(gè)子工程其實(shí)區(qū)別不大,只是為了驗(yàn)證實(shí)現(xiàn)負(fù)載均衡。

1.pom文件

<?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>com.example</groupId>
?? ??? ?<artifactId>forezp</artifactId>
?? ??? ?<version>0.0.1-SNAPSHOT</version>
?? ??? ?<relativePath/> <!-- lookup parent from repository -->
?? ?</parent>
?? ?<groupId>com.example</groupId>
?? ?<artifactId>euraka-client2</artifactId>
?? ?<version>0.0.1-SNAPSHOT</version>
?? ?<name>euraka-client2</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-client</artifactId>
?? ??? ?</dependency>
?
?? ??? ?<dependency>
?? ??? ??? ?<groupId>org.projectlombok</groupId>
?? ??? ??? ?<artifactId>lombok</artifactId>
?? ??? ??? ?<optional>true</optional>
?? ??? ?</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>

2.新建一個(gè)ApiController類(lèi)

package com.example.eurakaclient2;??
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;?
?
@RestController
public class ApiController {?
?
? ? @Value("${server.port}")
? ? String port;
? ? @GetMapping("/hi")
? ? public String home(@RequestParam String name1){
? ? ? ? return "hi "+name1+"i am a port:"+port;
? ? }
}

3.eureka-client 的 apllication.properties配置如下

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
server.port=8762
spring.application.name=eureka-client

4.eureka-client2的 apllication.properties配置如下

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
server.port=8763
spring.application.name=eureka-client

5.需要在啟動(dòng)類(lèi)添加注解 @EnableEurekaClient,開(kāi)啟服務(wù)提供

package com.example.eurakaclient2;??
import org.springframework.boot.SpringApplication;
? ? ? import org.springframework.boot.autoconfigure.SpringBootApplication;
? ? ? import org.springframework.cloud.netflix.eureka.EnableEurekaClient;?
?
@SpringBootApplication
@EnableEurekaClient
public class EurakaClient2Application {??
? ?public static void main(String[] args) {
? ? ? SpringApplication.run(EurakaClient2Application.class, args);
? ?}?
}

6.eureka-ribbon-client工程相關(guān)

1.pom文件

<?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>com.example</groupId>
? ? ? <artifactId>forezp</artifactId>
? ? ? <version>0.0.1-SNAPSHOT</version>
? ? ? <relativePath/> <!-- lookup parent from repository -->
? ?</parent>
? ?<groupId>com.example</groupId>
? ?<artifactId>eureka-ribbon-client</artifactId>
? ?<version>0.0.1-SNAPSHOT</version>
? ?<name>eureka-ribbon-client</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-ribbon</artifactId>
? ? ? </dependency>?
?
? ? ? <dependency>
? ? ? ? ?<groupId>org.springframework.cloud</groupId>
? ? ? ? ?<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
? ? ? </dependency>?
?
? ? ? <dependency>
? ? ? ? ?<groupId>org.projectlombok</groupId>
? ? ? ? ?<artifactId>lombok</artifactId>
? ? ? ? ?<optional>true</optional>
? ? ? </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>

2.applicaiton.properties配置文件如下

spring.application.name=eureka-ribbon-client
server.port=8764
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

3.新建RibbonConfig類(lèi),在這里注入RestTemplate類(lèi)同時(shí)開(kāi)啟負(fù)載均衡

package com.example.eurekaribbonclient;??
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;?
?
@Configuration
public class RibbonConfig {?
?
? ? @Bean
? ? @LoadBalanced
? ? RestTemplate restTemplate(){
? ? ? ? return new RestTemplate();
? ? }
}

4.新建service層,調(diào)用eureka-client (eureka-client1)提供的restful接口,其中 eureka-client 為  eureka-client (eureka-client1)注冊(cè)在 eureka-service上的serviceId信息,如果沒(méi)有配置serviceId,默認(rèn)使用spring.application.name

package com.example.eurekaribbonclient;??
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;??
?
? ? @Service
? ? public class RibbonService {
? ? ? ? @Autowired
? ? RestTemplate restTemplate;
? ? public String hi(String name){??
? ? ? ? return restTemplate.getForObject("http://eureka-client/hi?name1="+name,String.class);
? ? }
}

5.新建controller層,調(diào)用RibbonService為我們提供的方法

package com.example.eurekaribbonclient;??
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;?
?
@RestController
public class RibbonController {
? ? @Autowired
? ? RibbonService ribbonService;?
?
? ? @GetMapping("/hi")
? ? public String hi(@RequestParam(required = false,defaultValue = "forezp")String name){
? ? ? ? return ribbonService.hi(name);
? ? }
}

6.同時(shí)也需要在啟動(dòng)類(lèi)添加@EnableEurekaClient注解

package com.example.eurekaribbonclient;??
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;?
?
@SpringBootApplication
@EnableEurekaClient
public class EurekaRibbonClientApplication {?
?
? ?public static void main(String[] args) {
? ? ? SpringApplication.run(EurekaRibbonClientApplication.class, args);
? ?}??
}

7.驗(yàn)證

1.按照順序啟動(dòng)工程

2.瀏覽器訪問(wèn)  http://localhost:8761/

可以看到EUREKA-CLIENT 和 EUREKA-RIBBON-CLIENT已經(jīng)注冊(cè)進(jìn)來(lái)了 

3.我們?cè)L問(wèn) http://localhost:8764/hi?name=forezp 兩次

可以看到  頁(yè)面分別返回

hi forezpi am a port:8762

hi forezpi am a port:8763

這樣驗(yàn)證了我們實(shí)現(xiàn)了負(fù)載均衡。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論