SpringCloud搭建Eureka集群


第一部分:搭建Eureka Server集群

Step1:新建工程,引入依賴

依賴文件pom.xml如下

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.fangxing.springcloud</groupId>
 7     <artifactId>euruka-server</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <packaging>jar</packaging>
10 
11     <name>euruka-server</name>
12     <description>Demo project for Eureka Server</description>
13 
14     <!--基於Springboot-->
15     <parent>
16         <groupId>org.springframework.boot</groupId>
17         <artifactId>spring-boot-starter-parent</artifactId>
18         <version>1.4.0.RELEASE</version>
19         <relativePath/>
20     </parent>
21 
22     <properties>
23         <!--設置字符編碼及java版本-->
24         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
25         <java.version>1.8</java.version>
26     </properties>
27 
28     <dependencies>
29         <!--增加eureka-server的依賴-->
30         <dependency>
31             <groupId>org.springframework.cloud</groupId>
32             <artifactId>spring-cloud-starter-eureka-server</artifactId>
33         </dependency>
34         <!--用於測試的,本例可省略-->
35         <dependency>
36             <groupId>org.springframework.boot</groupId>
37             <artifactId>spring-boot-starter-test</artifactId>
38             <scope>test</scope>
39         </dependency>
40     </dependencies>
41 
42     <!--依賴管理,用於管理spring-cloud的依賴,其中Camden.SR3是版本號-->
43     <dependencyManagement>
44         <dependencies>
45             <dependency>
46                 <groupId>org.springframework.cloud</groupId>
47                 <artifactId>spring-cloud-dependencies</artifactId>
48                 <version>Camden.SR3</version>
49                 <type>pom</type>
50                 <scope>import</scope>
51             </dependency>
52         </dependencies>
53     </dependencyManagement>
54 
55     <build>
56         <plugins>
57             <plugin>
58                 <groupId>org.springframework.boot</groupId>
59                 <artifactId>spring-boot-maven-plugin</artifactId>
60             </plugin>
61         </plugins>
62     </build>
63 
64 
65 </project>
View Code

 

Step2:開啟Eureka的注冊中心

 1 /**
 2  * 開啟Eureka的注冊中心,只需要添加這個注解即可  3  */
 4 @EnableEurekaServer  5 @SpringBootApplication  6 public class EurukaServerApplication {  7 
 8     public static void main(String[] args) {  9         SpringApplication.run(EurukaServerApplication.class, args); 10  } 11 }

  

Step3:添加多實例的配置文件

既然是集群,1個實例就太寒磣了,所以我們通過配置文件制定了多個實例。

application-peer1.properties文件內容如下:

1 spring.application.name=eureka-server 2 server.port=1111
3 
4 eureka.instance.hostname=peer1 5 eureka.client.serviceUrl.defaultZone=http://peer2:2222/eureka/

 

application-peer2.properties文件內容如下:

1 spring.application.name=eureka-server 2 server.port=2222
3 
4 eureka.instance.hostname=peer2 5 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

 

其中:eureka.client.serviceUrl.defaultZone指的是注冊中心的地址,所以兩個實例互相指向。

PS:這里的peer1、peer2需要再host中配置一番,如下所示:

1 127.0.0.1 peer1 2 127.0.0.1 peer2

 

 

Step4:啟動注冊中心的多實例

再idea中配置多實例的啟動參數,如下所示:

 

配置好了,依次啟動peer1和peer2

 

 Step5:Eureka的注冊中心去驗證

 

第二部分:搭建Eureka Client集群

 Step1:新建工程,引入配置文件

我測試時的pom.xml如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.fangxing.springcloud</groupId>
 7     <artifactId>euruka-client</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <packaging>jar</packaging>
10 
11     <name>euruka-server</name>
12     <description>Demo project for Eureka Server</description>
13 
14     <!--基於Springboot-->
15     <parent>
16         <groupId>org.springframework.boot</groupId>
17         <artifactId>spring-boot-starter-parent</artifactId>
18         <version>1.4.0.RELEASE</version>
19         <relativePath/>
20     </parent>
21 
22     <properties>
23         <!--設置字符編碼及java版本-->
24         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
25         <java.version>1.8</java.version>
26     </properties>
27 
28     <dependencies>
29         <!--增加eureka-server的依賴-->
30         <dependency>
31             <groupId>org.springframework.cloud</groupId>
32             <artifactId>spring-cloud-starter-eureka</artifactId>
33         </dependency>
34         <!--用於測試的,本例可省略-->
35         <dependency>
36             <groupId>org.springframework.boot</groupId>
37             <artifactId>spring-boot-starter-test</artifactId>
38             <scope>test</scope>
39         </dependency>
40     </dependencies>
41 
42     <!--依賴管理,用於管理spring-cloud的依賴,其中Camden.SR3是版本號-->
43     <dependencyManagement>
44         <dependencies>
45             <dependency>
46                 <groupId>org.springframework.cloud</groupId>
47                 <artifactId>spring-cloud-dependencies</artifactId>
48                 <version>Brixton.SR5</version>
49                 <type>pom</type>
50                 <scope>import</scope>
51             </dependency>
52         </dependencies>
53     </dependencyManagement>
54 
55     <build>
56         <plugins>
57             <plugin>
58                 <groupId>org.springframework.boot</groupId>
59                 <artifactId>spring-boot-maven-plugin</artifactId>
60             </plugin>
61         </plugins>
62     </build>
63 
64 
65 </project>
Eureka Client的pom.xml

 

 

Step2:啟動發現服務

1 @EnableDiscoveryClient 2 @SpringBootApplication 3 public class EurekalclientApplication { 4 
5     public static void main(String[] args) { 6         SpringApplication.run(EurekalclientApplication.class, args); 7  } 8 }

 

 

Step3:配置Client的應用

1 spring.application.name=eureka-client 2 
3 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

 提供一個測試的Controller。

 1 @RestController  2 public class HelloController {  3 
 4  @Autowired  5     private DiscoveryClient client;  6 
 7     @RequestMapping(value = "/hello",method = RequestMethod.GET)  8     public String index(){  9         ServiceInstance instance=client.getLocalServiceInstance(); 10         System.out.println("/hello,host:"+instance.getHost()+",service_id:"+instance.getServiceId()); 11         return "hello world!"; 12  } 13 
14 }

 

 

Step4:啟動多個實例

 因為這里的多個實例,我們需要不同的端口,所以,我們還是采用前面的方法來啟動多個實例。

啟動后,我們可以在Eureka的注冊中心中可以看到(Peer1和Peer2都可以看到)

PS:這里localhost:eureka-client這個是測試時殘留的,這里沒有清除掉,可以不用管它。

 

到這里,我們的服務注冊中心和服務提供者都寫好了。

 

第三部分:消費Eureka Client的消息

 

Step1:新建工程,引入依賴

注意,這里我們要引入新的依賴ribbon。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.fangxing.springcloud</groupId>
 7     <artifactId>euruka-server</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <packaging>jar</packaging>
10 
11     <name>euruka-server</name>
12     <description>Demo project for Eureka Server</description>
13 
14     <!--基於Springboot-->
15     <parent>
16         <groupId>org.springframework.boot</groupId>
17         <artifactId>spring-boot-starter-parent</artifactId>
18         <version>1.4.0.RELEASE</version>
19         <relativePath/>
20     </parent>
21 
22     <properties>
23         <!--設置字符編碼及java版本-->
24         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
25         <java.version>1.8</java.version>
26     </properties>
27 
28     <dependencies>
29         <!--增加eureka-server的依賴-->
30         <dependency>
31             <groupId>org.springframework.cloud</groupId>
32             <artifactId>spring-cloud-starter-eureka</artifactId>
33         </dependency>
34         <!--增加ribbon的依賴-->
35         <dependency>
36             <groupId>org.springframework.cloud</groupId>
37             <artifactId>spring-cloud-starter-ribbon</artifactId>
38         </dependency>
39         <!--用於測試的,本例可省略-->
40         <dependency>
41             <groupId>org.springframework.boot</groupId>
42             <artifactId>spring-boot-starter-test</artifactId>
43             <scope>test</scope>
44         </dependency>
45     </dependencies>
46 
47     <!--依賴管理,用於管理spring-cloud的依賴,其中Camden.SR3是版本號-->
48     <dependencyManagement>
49         <dependencies>
50             <dependency>
51                 <groupId>org.springframework.cloud</groupId>
52                 <artifactId>spring-cloud-dependencies</artifactId>
53                 <version>Brixton.SR5</version>
54                 <type>pom</type>
55                 <scope>import</scope>
56             </dependency>
57         </dependencies>
58     </dependencyManagement>
59 
60     <build>
61         <plugins>
62             <plugin>
63                 <groupId>org.springframework.boot</groupId>
64                 <artifactId>spring-boot-maven-plugin</artifactId>
65             </plugin>
66         </plugins>
67     </build>
68 
69 
70 </project>
Eureka消費者的pom.xml

 

 

 Step2:啟用發現服務並開啟客戶端負載均衡

 1 @EnableDiscoveryClient  2 @SpringBootApplication  3 public class RibbonConsumerApplication {  4 
 5     public static void main(String[] args) {  6         SpringApplication.run(RibbonConsumerApplication.class, args);  7  }  8 
 9     //開啟客戶端負載均衡 10  @Bean 11  @LoadBalanced 12  RestTemplate restTemplate(){ 13 return new RestTemplate(); 14  } 15 }

 

 

Step3:配置消費者(跟生產者類似)

1 spring.application.name=ribbon-consumer 2 server.port=9000
3 
4 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

 

 

Step4:編寫消費者實例

 1 @RestController  2 public class ConsumerController {  3 
 4  @Autowired  5  RestTemplate restTemplate;  6 
 7     @RequestMapping(value = "/ribbon-consumer",method = RequestMethod.GET)  8     public String helloConsumer(){  9         return restTemplate.getForEntity("http://eureka-client/hello",String.class).getBody(); 10  } 11 
12 }

 

 

Step5:驗證Eureka注冊中心

 

 Step6:驗證請求

 

參考文檔:

《SpringCloud 微服務實踐》

 源碼:https://github.com/iprometheus/spring-cloud-eureka-test


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM