微服务基础框架搭建详解(二)—— 高可用服务注册中心

       高可用是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。在微服务架构的分布式环境下,我们需要充分考虑发生故障的情况,所以在生产环境中必须得对各个组件进行高可用部署。
       上一章主要是通过单节点方式来实现服务注册中心《微服务基础框架搭建详解(一)—— 注册服务中心Eureka的基础搭建》,本章主要讲解如何构建一个基础的高可用的服务注册中心。
       在上一章节中,我们有在properties文件中添加以下属性:

#禁止本身注册
eureka.client.register-with-eureka=false
#注册中心的职责是维护服务实例,不需要检索服务,此处禁止检索服务
eureka.client.fetch-registry=false

       该属性默认为true,因此本章在properties文中没有添加上去,请各位读者务必注意此处。
       事实上,Eureka的高可用就是将自己作为服务向其他的注册中心注册自己,这样就可以行成一组相互联系的注册中心,以实现服务清单的相互同步,达到高可用的效果。此处介绍两种搭建方式,接下来就开始尝试搭建高可用服务注册中心的集群。
       搭建的目录结构如下图所示:
在这里插入图片描述
(1)创建一个服务端项目eureka-server,在resources目录下新建两个properties文件,它们的配置信息如下:
①修改application.properties的配置信息,利用spring.profiles.active属性来切换使用不同的配置文件启动项目。

#项目端口值
#server.port=1111
#eureka.instance.hostname=serviceCenter
#禁止本身注册
#eureka.client.register-with-eureka=false
#注册中心的职责就是维护服务实例,不需要检索服务,所以禁止检索服务
#eureka.client.fetch-registry=false
#服务中心地址
#eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
#可关闭自我保护
#eureka.server.enableSelfPreservation= false
spring.profiles.active= peer1

②创建application-peer1.properties文件作为peer1服务中心的配置,并且将serviceUrl指向peer2:

spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

③创建application-peer2.properties文件作为peer1服务中心的配置,并且将serviceUrl指向peer1:

spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

(2)pom.xml文件的配置信息与第一章的服务端配置信息一样,同时还需要在EurekaServerApplication.java处添加@EnableEurekaServer注解,此处就不进行解说。
(3)Linux系统下在/etc/hosts文件中添加peer1和peer2的转换,让上面配置host形式的serviceUrl能在本地访问到;如果是在windows系统下进行,则hosts文件的路径为C:\Windows\System32\drivers\etc\hosts。

127.0.0.1   peer1
127.0.0.1   peer2

(4)接着通过STS工具的debug as启动peer1项目,然后修改application.properties文中的属性为peer2,然后再次启动项目。
(5)通过访问http://localhost:1111/,可以看到peer1有peer2的节点信息,同理我们访问http://localhost:1112/时,也可以看到有peer1的节点信息,并且这些节点都在available-replicase(可用分片)之中。
在这里插入图片描述
此处我们可以尝试关掉peer1,刷新http://localhost:1112/,
在这里插入图片描述
可以看到peer1节点的服务已经是关闭状态。
       至于网上和文档说到的peer1结点会变为unavailable-replicase(不可用分片),笔者在此处暂时没有得到相关的结果,如果有读者清楚这个是什么问题,可以在评论或者私信找我,大家相互学习学习。
(6)创建一个客户端来注册当前的服务注册中心集群,项目名称为:eureka-client,该项目的pom.xml配置文件和注解可以参照笔者上篇的信息来编写,此处省略。
       然后修改application.properties文件的配置信息:

#端口值
server.port=2001
#项目访问名称
spring.application.name=eureka-client
#指定eureka注册中心地址
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/,http://peer1:1111/eureka/

       接着启动项目访问http://localhost:1111或http://localhost:1112,可以看到客户端已经注册进来。
在这里插入图片描述
       若此时关闭peer1项目,由于eureka-client项目同时也向peer2注册,因此我们还是可以通过peer2的其他服务访问到eureka-client,从而实现了服务注册中心的高可用。
       注:如果不想使用主机名来定义注册的,也可以使用IP的形式,不过需要在配置文件中设置eureka.instance.preferIpAddress=true,该值默认为false。
       该文章为笔者参考《SpringCloud微服务实战》及一些博文来实现的,如有什么问题可在评论区下留言,欢迎大家批评指正,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值