最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个spring
cloud早就想到了,并帮我们解决了!

构建高可用的注册中心

1.创建spring boot项目

创建的网站http://start.spring.io/ <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
projectfor 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> View Code
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/ View Code
配置文件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/ View Code
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的心跳检测。详情可见下一篇博客。

 

<https://www.cnblogs.com/clwydjgs/>

欢迎大家关注公众号,不定时干货,只做有价值的输出

作者:Dawnzhang <https://www.cnblogs.com/clwydjgs/> 
出处:https://www.cnblogs.com/clwydjgs/  <https://www.cnblogs.com/clwydjgs/>
版权:本文版权归作者
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信