如何将单机版的Eureka服务改为集群版Eureka服务

这是SpringCloud学习笔记第六篇,介绍将单机版Eureka服务改为集群版的方法。先阐述Eureka集群原理,包括数据同步、服务注册与调用等机制,接着详细说明改造过程,如新建模块、复制内容、修改配置等,最后完成测试,实现单机到集群的改造。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇是 SpringCloud 学习笔记的第六篇。 将单机版的Eureka服务改为集群版Eureka服务,在本篇中将详细的介绍Eureka集群结构的原理和使用
本篇关联篇章如下:
本篇关联篇章如下:

Eureka 集群原理

在这里插入图片描述基本原理
上图是来自eureka的官方架构图,这是基于集群配置的eureka;

  • 处于不同节点的eureka通过Replicate进行数据同步
  • Application Service为服务提供者
  • Application Client为服务消费者
  • Make Remote Call完成一次服务调用

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。

Eureka 单机版到集群的改造过程

新建 两个Eureka模块项目

新建模块(springcloudDemo-Eureka-7002和 springcloudDemo-Eureka-7003),至于如何在父项目下新建模块请参考Eclipse构建Maven分包项目并构建服务端
在这里插入图片描述
在这里插入图片描述
注: 截图中对应的Eureka 即三个Eureka服务构成Eureka集群

复制 springcloudDemo-Eureka-7001 中的内容

由于是学习SpringCloud Eureka 所以Eureka服务没有太多操作,所以将之前的设置的单机版Eureka 内容复制过来
在这里插入图片描述
在这里插入图片描述
下的内容,分别拷贝到对应的其他Eureka集群成员中
特别注意:请不要为了方便直接拷贝Eclipse中springcloudDemo-Eureka-7001中的内容,直接到其他的项目中,这样做是会报错的。。。 所以别偷懒!!!

修改新建的两个模块的启动类名称

这个也可以不修改,没有啥太大的影响

修改hosts中的映射

Windows 位置: C:\Windows\System32\drivers\etc

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com
127.0.0.1  eureka7003.com
修改三个Eureka服务的配置文件

下面针对三个服务的配置文件进行相应的说明:

  • springcloudDemo-Eureka-7001
    需要和另外两个服务的路由地址相连接
server: 
  port: 7001
 
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射
  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #单机
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
      #集群
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  • springcloudDemo-Eureka-7002
server: 
  port: 7002
 
eureka:
  instance:
    hostname: eureka7002.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射
  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #单机
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
      #集群
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
  • springcloudDemo-Eureka-7003
server: 
  port: 7003
 
eureka:
  instance:
    hostname: eureka7003.com #eureka服务端的实例名称, C:\Windows\System32\drivers\etc 的hosts已经加入映射
  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #单机
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/        #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
      #集群
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
服务提供者将配置文件从单机版修改为集群

原理: 服务注册的时候,从注册到一台修改为注册到多台

	  #单机版
      #defaultZone: http://localhost:7001/eureka
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
测试

分别启动三个Eureka服务,形成Eureka集群,之后在启动服务提供者
在这里插入图片描述
打开浏览器分别输入:


至此,从上一篇单机版到集群Eureka的改造完成。 至于服务消费者访问,由于现在只有一个生产者,所以目前不是很明显,之后会构建服务生产者集群,然后在测试服务消费者,这样会比较好比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值