专栏首页Dawnzhang的开发者手册spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)

spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)

最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个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的心跳检测。详情可见下一篇博客。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 架构图以及vue的简介

    MVVM 由 Model,View,ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表...

    Dawnzhang
  • spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)

    前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)...

    Dawnzhang
  • vue项目中遇到的那些事。

      有好几天没更新文章了。这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成。

    Dawnzhang
  • SSH搭建spring,使用依赖注入的方法

    网上有很多用junit教你搭的,虽然都能跑,但是如果要实际运行和前台交互,那样是不行的,还要导入我所导入的包。

    ydymz
  • 基于SSM框架与Maven的CRUD案例

    将会打包成 jar用作 jar包使用。即常见的本地工程 - Java Project。

    时间静止不是简史
  • Spring Boot 整合微信小程序实现登录与增删改查

    项目描述:在微信小程序中通过与Springboot操作数据库实现简单的增删改查,其中我是用springboot整合mybatis-plus 和mysql使用的

    Java编程指南
  • 手把手教你Spring Boot 整合微信小程序实现登录与增删改查

    编辑:业余草 来源:https://www.xttblog.com/?p=4998

    业余草
  • Neo4j Spatial数据导入

    首先,安装neo4j数据库。我的开发环境是Ubuntu,安装过程参考官网:Neo4j Debian Packages,安装后配置:Post-installati...

    卡尔曼和玻尔兹曼谁曼
  • 本地maven仓库使用及配置

    下载 nexus-2.11.4-01-bundle.zip 解压并运行C:\nexus-2.11.4-01-bundle\nexus-2.11.4-01\bin...

    肖哥哥
  • win32进程概念之句柄表,以及内核对象.

    我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

    用户3128588

扫码关注云+社区

领取腾讯云代金券