温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心

发布时间:2021-12-13 10:59:46 来源:亿速云 阅读:482 作者:柒染 栏目:大数据

今天就跟大家聊聊有关Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

这一篇主要介绍一下如何搭建一个高可用的 Eureka 集群。

1. 分布式和集群有啥区别?

可能有很多人对分布式和集群这两个概念有点混淆。我先用通俗易懂的话给大家解释下:

分布式:一个业务分拆多个子业务,部署在不同的服务器

集群:同一个业务,分别部署在不同的服务器上

所以分布式的每一个节点,完成的是不同的业务,一个节点挂了,那么这个业务功能就无法访问了,甚至可能会影响到其他业务。而集群是一个比较有组织的架构,正因为有组织性,一个服务节点挂了,其他服务节点可以顶上来,从而保证了服务的健壮性。

所以说,集群可以理解为:你中有我,我中有你,手拉手肩并肩,一起保证服务的健壮性

2. Eureka集群逻辑

在搭建 Eureka 集群之前,先来回顾一下前面搭建的单个 Eureka 服务,看下 yml 配置文件:

server:
 port: 7001

eureka:
 instance:
   #eureka服务端的实例名称
   hostname: eureka01
 client:
   # false表示不向注册中心注册自己
   register-with-eureka: false
   # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
   fetch-registry: false
   service-url:
     #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

这是一个 Eureka 服务,名称是 eureka7001, 注册中心是它自己的。那么我们如何去搭建一个 Eureka 集群呢?假设现在有三个 Eureka 服务:eureka7001、eureka7002 和 eureka7003。

为了体现出集群的你中有我,我中有你,不难想象,eureka7001 中应该挂上 eureka7002 和 eureka7003;eureka7002 中应该挂上 eureka7001 和 eureka7003;eureka7003 中应该挂上 eureka7001 和 eureka7002。如下图所示:

Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心

这样就搭建好了一个 Eureka 集群了,那么我们如何去实现呢?接下来就落实到具体实现方式。

3. Eureka7001的改造

由上面的分析可知,Eureka7001 需要挂上 Eureka7002 和 Eureka7003,所以在 Eureka7001 的配置文件中需要重新配置一下 defaultZone,如下:

server:
 port: 7001

eureka:
 instance:
   #eureka服务端的实例名称
   hostname: eureka01
 client:
   # false表示不向注册中心注册自己
   register-with-eureka: false
   # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
   fetch-registry: false
   service-url:
     defaultZone: http://eureka02.com:7002/eureka/,http://eureka03.com:7003/eureka/

OK,defaultZone 配置好了 eureka7002 和 eureka 7003。

4. 搭建Eureka7002

以同样的方式,拷贝一份 Eureka7001 的工程,修改其配置文件:

server:
 port: 7002

eureka:
 instance:
   #eureka服务端的实例名称
   hostname: eureka02
 client:
   # false表示不向注册中心注册自己
   register-with-eureka: false
   # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
   fetch-registry: false
   service-url:
     defaultZone: http://eureka01.com:7001/eureka/,http://eureka03.com:7003/eureka/

可以看出,在 eureka7002 中,把 eureka7001 和 eureka7003 挂进来。

5. 搭建Eureka7003

以相同的方式,把 eureka7003 也搭建好。

server:
 port: 7003

eureka:
 instance:
   #eureka服务端的实例名称
   hostname: eureka03
 client:
   # false表示不向注册中心注册自己
   register-with-eureka: false
   # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
   fetch-registry: false
   service-url:
     defaultZone: http://eureka01.com:7001/eureka/,http://eureka02.com:7002/eureka/

ok,现在三个 eureka 注册中心都搭建好了,最后别忘了在本地 hosts 文件中将 eureka7001、eureka7002 和 eureka7003 映射到 127.0.0.1。

6. 修改订单服务

我们首先来回忆下,之前的订单服务提供方的配置文件是怎么写的:

# 客户端注册进eureka服务列表里
eureka:
 client:
   service-url:
     defaultZone: http://eureka01:7001/eureka/
 instance:
   instance-id: 书籍订单服务-8001  # 人性化显示出服务的信息
   prefer-ip-address: true    # 访问路径可显示ip地址

是将订单服务注册到 eureka7001 中,因为之前就这一个 eureka 注册中心,那么现在有三个了,我们需要修改下配置,将订单服务注册到三个 eureka 中。

# 客户端注册进eureka服务列表里
eureka:
 client:
   service-url:
     defaultZone: http://eureka01:7001/eureka/,http://eureka02:7002/eureka/,http://eureka03:7003/eureka/
 instance:
   instance-id: 书籍订单服务-8001  # 人性化显示出服务的信息
   prefer-ip-address: true    # 访问路径可显示ip地址

7. 测试效果

OK,所有搭建步骤都完成了,接下来分别启动一下 eureka7001、eureka7002 和 eureka7003,再启动下订单提供服务。然后我们可以分别访问下三个 eureka 注册中心,看一下结果。我以访问 eureka7001 为例,可以看到该服务中心挂着 eureka7002 和 eureka7003,而且订单服务也成功注册到该注册中心。

Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心


看完上述内容,你们对Spring Cloud中如何使用Eureka集群搭建高可用服务注册中心有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI