行业资讯 2025年08月6日
0 收藏 0 点赞 998 浏览 3334 个字
摘要 :

文章目录 一、为什么要搭建Eureka集群 二、Eureka集群实现原理 三、Eureka集群环境搭建 第1步:设置主机名 第2步:创建Module 第3步:修改yml 第4步:测试 四、发布至……




  • 一、为什么要搭建Eureka集群
  • 二、Eureka集群实现原理
  • 三、Eureka集群环境搭建
    • 第1步:设置主机名
    • 第2步:创建Module
    • 第3步:修改yml
    • 第4步:测试
  • 四、发布至集群

一、为什么要搭建Eureka集群

如果我们只配置一个Eureka服务端,那么如果这个服务端崩溃,那么所有服务都无法获取,这肯定不是我们不期望的。所以为了保证高可用性,我们需要搭建Eureka集群。

二、Eureka集群实现原理

Eureka Server注册中心集群中每个节点都是平等的,集群中的所有节点同时对外提供服务的发现和注册等功能。同时集群中每个Eureka Server节点又是一个微服务,也就是说,每个节点都可以在集群中的其他节点上注册当前服务。又因为每个节点都是注册中心,所以节点之间又可以相互注册当前节点中已注册的服务,并发现其他节点中已注册的服务。

简单地说就是:每个Eureka Server节点之间相互注册,相互守望

补充:
CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。
由于分布式系统中必须保证分区容错性,因此我们只能在A和C之间进行权衡。
Zookeeper保证的是CP, 而Eureka则是保证AP。

因此,我们搭建Eureka服务注册中心集群,主要是实现负载均衡+故障容错
集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

三、Eureka集群环境搭建

第1步:设置主机名

由于我们学习都是使用单台电脑开搭建集群的,所以我们需要修改映射配置添加进hosts文件,hosts文件目录为C:\\Windows\\System32\\drivers\\etc,新增映射如下(我们这里搭建3个节点的集群):

127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com

第2步:创建Module

我们参考cloud-eureka-server7001的创建过程创建cloud-eureka-server7002cloud-eureka-server7003

第3步:修改yml

1)cloud-eureka-server7001的yml:

server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端实例名称
  client:
    #false表示不像注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #集群版eureka server 相互注册,相互守望 多个用逗号隔开
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

1)cloud-eureka-server7002的yml:

server:
  port: 7002
eureka:
  instance:
    hostname: eureka7002.com #eureka服务端实例名称
  client:
    #false表示不像注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #集群版eureka server 相互注册,相互守望 多个用逗号隔开
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/

3)cloud-eureka-server7003的yml:

server:
  port: 7003
eureka:
  instance:
    hostname: eureka7003.com #eureka服务端实例名称
  client:
    #false表示不像注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #集群版eureka server 相互注册,相互守望 多个用逗号隔开
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

第4步:测试

1)启动着3个eureka server ,浏览器分别访问eureka7001.com:7001eureka7002.com:7002eureka7003.com:7003,我们发现他们相互注册了:
集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

四、发布至集群

接下来我们将订单80和支付8001两个模块发布到Eureka集群,我们只需要修改他们的yml配置的defaultZone指向Eureka集群即可,具体如下:
1)cloud-consumer-order80application.yml

server:
  port: 80

spring:
  application:
    name: cloud-order-service

eureka:
  client:
    #表示是否将自己注册进eureka服务中心,默认true
    register-with-eureka: true
    #表示是否从EurekaServer抓取已有注册信息,默认true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡
    fetch-registry: true
    service-url:  #指向eureka集群
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

2)cloud-provider-payment8001application.yml

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dbcloud?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
    username: root
    password: 123456

mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: com.panziye.springcloud.entities

eureka:
  client:
    #表示是否将自己注册进eureka服务中心,默认true
    register-with-eureka: true
    #表示是否从EurekaServer抓取已有注册信息,默认true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡
    fetch-registry: true
    service-url:  #指向eureka集群
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

3)测试
我们先启动3个Eureka Server模块,再启动支付8001和订单80两个模块,测试如下:
1)分别访问http://eureka7001.com:7001http://eureka7002.com:7002http://eureka7003.com:7003,如下(发现两个模块在3个注册中心都注册了):
集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)
2)测试请求
集群版Eureka构建—SpringCloud(H版)微服务学习教程(9)

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/7756.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号