最近在學習的時候,發現微服務架構中,假如只有一個注冊中心,那這個注冊中心掛了可怎么辦,這樣的系統,既不安全,穩定性也不好,網上和書上找了一會,發現這個spring cloud早就想到了,並幫我們解決了!
構建高可用的注冊中心
1.創建spring boot項目
創建的網站http://start.spring.io/,界面如下,創建兩個spring工程,一個作為注冊中心,一個作為測試客戶端,注意要導入(eureka-server),創建的界面如下
導入的依賴的配置如下

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.example</groupId>
7 <artifactId>enreka-server</artifactId>
8 <version>0.0.1-SNAPSHOT</version>
9 <packaging>jar</packaging>
10
11 <name>enreka-server</name>
12 <description>Demo project for Spring Boot</description>
13
14 <parent>
15 <groupId>org.springframework.boot</groupId>
16 <artifactId>spring-boot-starter-parent</artifactId>
17 <version>2.0.3.RELEASE</version>
18 <relativePath/> <!-- lookup parent from repository -->
19 </parent>
20
21 <properties>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24 <java.version>1.8</java.version>
25 <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
26 </properties>
27
28 <dependencies>
29 <dependency>
30 <groupId>org.springframework.boot</groupId>
31 <artifactId>spring-boot-starter-web</artifactId>
32 </dependency>
33 <dependency>
34 <groupId>org.springframework.cloud</groupId>
35 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
36 </dependency>
37
38 <dependency>
39 <groupId>org.springframework.boot</groupId>
40 <artifactId>spring-boot-starter-test</artifactId>
41 <scope>test</scope>
42 </dependency>
43 </dependencies>
44
45 <dependencyManagement>
46 <dependencies>
47 <dependency>
48 <groupId>org.springframework.cloud</groupId>
49 <artifactId>spring-cloud-dependencies</artifactId>
50 <version>${spring-cloud.version}</version>
51 <type>pom</type>
52 <scope>import</scope>
53 </dependency>
54 </dependencies>
55 </dependencyManagement>
56
57 <build>
58 <plugins>
59 <plugin>
60 <groupId>org.springframework.boot</groupId>
61 <artifactId>spring-boot-maven-plugin</artifactId>
62 </plugin>
63 </plugins>
64 </build>
65
66
67 </project>
2.在IEDA中用maven導入工程:
3.在spring boot工程的入口類中加入@EnableEurekaServer,標注好這是注冊中心;
4.在工程的resources文件夾中復制出兩個配置文件
配置文件application-peer1.properties中的內容為

spring.application.name=eureka-server server.port=1112 eureka.instance.hostname=peer2 eureka.client.register-with-eureka=true eureka.client.fetch-registry=true eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
配置文件application-peer2.properties中的內容為

spring.application.name=eureka-server server.port=1111 eureka.instance.hostname=peer1 eureka.client.register-with-eureka=true eureka.client.fetch-registry=true eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
5.點擊圖中位置配置啟動器
6.導入我們的測試工程
7.配置客戶端
在入口類中加入@EnableDiscoveryClient注解,標注他為客戶端,在配置文件中加入注冊中心的地址,內容如下
1 server.port=9001
2 spring.application.name=demoOne-service 3 eureka.client.service-url.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
8.修改hosts文件
文件地址為C:\Windows\System32\drivers\etc,如果直接打開修改回提示如圖
我們是不被允許修改這類型的文件的,注意它沒有后綴名,怎么辦么。教大家一個小技巧,這類型的系統文件,我們可以復制一份用記事本修改
在后面加入
127.0.0.1 peer1 127.0.0.1 peer2
然后保存,我們可以保存成.txt文件,然后刪除后綴名,替換原來的文件,就修改ok
9.分別啟動兩個注冊中心
都可以正常顯示;
10.我們啟動客戶端驗證,我們可以在注冊中看到服務啟動成功,
11.假設出現故障,有一個注冊中心掛了,我們來驗證一下
我們關閉了一個注冊中心,我們仍然可以在第二個注冊中心看到,我們的客戶端;
高可用注冊中心,實現成功。紅色部分為spring cloud的心跳檢測。詳情可見下一篇博客。
歡迎大家關注公眾號,不定時干貨,只做有價值的輸出
作者:Dawnzhang
出處:https://www.cnblogs.com/clwydjgs/
版權:本文版權歸作者
轉載:歡迎轉載,但未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任