
5.5 优惠券项目改造——高可用注册中心
5.5.1 创建项目结构
在优惠券项目的根目录下创建middleware目录,在本书的微服务架构升级过程中,平台类型的组件(如注册中心、配置中心等)都会创建在该目录下。目录创建完成后,在目录下面分别创建eureka-server和eureka-server2两个Maven子项目,模拟多注册中心的集群环境。一个搭建完成的双注册中心项目结构如图5-4所示。

图5-4 双注册中心项目结构图
5.5.2 修改host文件
为了模拟多个注册中心互备的集群架构,需要为eureka-server和eureka-server2两个应用分别指定一个hostname,这里我们将eureka-server的hostname指定为peer1,将eureka-server2的hostname指定为peer2。由于大部分读者是在本机启动项目上做测试,所以需要对操作系统的host文件做一些改动,将peer1和peer2两个hostname都绑定在本机的IP地址上,这样就可以像访问localhost一样来访问这两个应用。
Mac系统的host文件位于/etc/host之下,这个文件夹下的文件不能被直接修改,我们需要先将它复制到另一个文件夹(比如桌面),然后添加以下两项配置并保存:

在上面的代码中,127.0.0.1就是本机的localhost访问地址。将修改后的host文件复制到/etc/host文件夹下,并替换原文件。
Windows系统的hosts文件位于C:\Windows\System32\drivers\etc文件夹下,找到hosts文件,添加相同的内容并保存。
5.5.3 引入Maven依赖项
我们通过以下两个步骤,将Spring Cloud和Eureka的依赖项添加到pom.xml文件中:
1. 添加Spring Cloud版本和依赖
在coupon-cloud-center项目的顶层pom.xml文件中创建<dependencyManagement>节点,并添加Spring Cloud的依赖项,具体代码如下:

在父级项目中添加完依赖项之后,我们在子模块的pom.xml文件中添加Spring Cloud组件时就不用再指定具体版本了,Maven将从父级pom.xml文件里的spring-cloud-dependencies依赖项中获取对应的组件版本号。
2. 为注册中心添加依赖
在eureka-server和eureka-server2两个Maven项目中的dependencies节点下添加Eureka服务器的依赖项,具体代码如下:

5.5.4 创建项目启动类
在eureka-server和eureka-server2项目的src/main/java路径下创建包com.broadview.coupon,并创建启动类EurekaApplication,具体代码如下:

在上面的代码中,我们通过添加@SpringBootApplication注解将该应用作为标准的Spring Boot应用启动,并在启动过程中通过@EnableDiscoverClient注解加载Eureka配置项(在最新版本的Spring Cloud项目中,@EnableDiscoverClient不再是一个必需的注解)。
5.5.5 为注册中心添加配置
在eureka-server和eureka-server2项目下的src/main/resources路径下创建配置文件application.yml,并添加配置信息到application.yml文件中,具体代码如下:

在以上配置中,eureka-server的hostname指定为peer1,端口号指定为10000,并将eureka-server注册到peer2上。
为eureka-server2创建一个同样的配置文件,分配一个不同的端口10001,并将其注册到peer1上,具体配置如下:


配置添加好之后,将整个项目从根目录编译一遍(编译命令为mvn clean install),就可以启动配置中心了。依次启动eureka-server和eureka-server2,等待项目加载完成之后,在浏览器中打开http://peer1:10000/eureka或者http://peer2:10001/eureka,可以看到如图5-5所示的Eureka注册中心界面。

图5-5 Eureka注册中心界面
如图5-5所示,当前页面是注册中心peer1的信息,通过访问http://peer2:10001可以查看注册中心peer2的信息,一个注册中心集群内的各个节点会相互同步注册表信息。配置中心页面有如下5个主要部分:
(1)System Status:显示当前注册中心的系统状态,包括启动时间和服务续约指令的接收情况。
(2)DS Replicas:高可用特性,这里会显示出与当前注册中心互备的节点。
(3)Instances list:列表中显示所有当前已注册的服务,以及对应的服务名、服务下的节点个数、各个节点的地址和节点的当前状态等。
(4)General Info:注册中心当前的CPU和内存状态,以及互备节点的状态。
(5)Instance Info:注册中心的IP地址和状态。