欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

高可用注册中心 ->Spring Cloud Eureka

程序员文章站 2022-03-07 16:13:37
在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况, 所以在生产 环境中必须对各个组件进行高可用部署, 对于微服务如此, 对于服务注册中心也一样。 但 是到本节为止,我们一直都在使用单节点的服务注册中心,这在生产环境中显然并不合适, 我们需要构建高可用的服务注册中心以增强系统的可用性。 ......

在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况, 所以在生产 环境中必须对各个组件进行高可用部署, 对于微服务如此, 对于服务注册中心也一样。 但 是到本节为止,我们一直都在使用单节点的服务注册中心,这在生产环境中显然并不合适, 我们需要构建高可用的服务注册中心以增强系统的可用性。 

        Eureka Server的设计一开始就考虑了高可用问题, 在Eureka的服务治理设计中, 所有 节点即是服务提供方, 也是服务消费方, 服务注册中心也不例外。 是否还记得在单节点的 配置中,我们设置过下面这两个参数, 让服务注册中心不注册自己: 

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false 

       Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这 样就可以形成一组互相注册的服务注册中心, 以实现服务清单的互相同步, 达到高可用的 效果。 下面我们就来尝试搭建高可用服务注册中心的集群。

  • 目录结构

高可用注册中心 ->Spring Cloud Eureka

高可用注册中心 ->Spring Cloud Eureka

高可用注册中心 ->Spring Cloud Eureka

       在etc/hosts文件中添加对peerl和peer2的转换, 让上面配置的host形式的 serviceUrl能在本地正确访间到; Windows系统路径为C:\Windows\System32\ drivers\etc\hosts。 

127.0.0.1 peer1
127.0.0.1 peer2

启动:

java -jar Eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar Eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

peer1图

高可用注册中心 ->Spring Cloud Eureka

peer2图

高可用注册中心 ->Spring Cloud Eureka

此时访问peer1的注册中心http://localhost:1111/, 如下图所示, 我们可以到看, registered-replicas中已经有peer2节点的eureka-server了。 同样的, 我们访 问peer2的注册中心http://localhost: 2222/ , 也能到看registered-replicas 中已经有peer1节点,并且这些节点在可用分片(available-replicase)之中。

高可用注册中心 ->Spring Cloud Eureka

       在设置了多节点的服务注册中心之后, 服务提供方还需要做一些简单的配置才能将 服务注册到Eureka Server 集群中。 我们以下面的项目为例, 修改 application.properties 配置文件, 如下所示: 

高可用注册中心 ->Spring Cloud Eureka

    修改pom.xml

高可用注册中心 ->Spring Cloud Eureka

       上面的配置主要对eureka.client.serviceUrl.defaultZone属性做了改动, 将注册中心指向了之前我们搭建的peerl与peer2(类似于dubbo服务)。

访问地址:

可以观察到hello-service 服务同时被注册到了peerl和peer2上。若此时断开peer!, 由于compute-service同时也向peer2注册, 因此在peer2上的 其他服务依然能访问到hello-service, 从而实现了服务注册中心的高可用。

高可用注册中心 ->Spring Cloud Eureka