Springcloud微服务注册中心-Eureka 2.X(三)——高可用服务注册中心(Eureka集群)

1.为什么要使用Eureka集群

首先说明的是需要集群的不仅仅是Eureka而是所有的服务注册中心都需要做集群。

服务注册中心作为所有服务的集中管理服务,承担着服务的注册,发现等作用,服务注册中心一旦宕机,整个系统都会不可用,这个是不符合系统高可用的,特别是在互联网行业的应用,所以才有服务注册中心只承担服务注册于发现的功能,非常简单,但是再简单的服务都有可能宕机,那么就需要集群来降低整个应用不可用的概率,做到高可用性。

虽然服务消费者在本地JVM中缓存了服务提供者的地址,但是如果服务提供者已经宕机,那么就造成了服务不可用,服务消费者也无法感知到新增加的服务,这个是必须要有一个集群方式来保证服务的高可用性。

2.Eureka集群原理

默认情况下,服务注册中心是不会注册到服务注册中心的,如果是服务则会注册到服务注册中心。

集群情况下

    ###因为自己是为注册中心,不需要自己注册自己,如果是注册中心则需要注册资金
    register-with-eureka: true
    ###因为自己是为注册中心,不需要检索服务,如果是注册中心则需要检索服务
    fetch-registry: true

3.搭建服务注册中心Eureka集群(双机实例)

  • 服务注册中心集群01:127.0.0.1:8100
###服务端口号
server:
  port: 8100
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: eureka-server
###eureka 基本信息配置
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8100/eureka/,http://${eureka.instance.hostname}:8200/eureka/
    ###因为自己是为注册中心,不需要自己注册自己,如果是注册中心则需要注册自己
    register-with-eureka: true
    ###因为自己是为注册中心,不需要检索服务,如果是注册中心则需要检索服务
    fetch-registry: true
  server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000
  • 服务注册中心集群02:127.0.0.1:8200
###服务端口号
server:
  port: 8200
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: eureka-server
###eureka 基本信息配置
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8100/eureka/,http://${eureka.instance.hostname}:8200/eureka/
    ###因为自己是为注册中心,不需要自己注册自己,如果是注册中心则需要注册自己
    register-with-eureka: true
    ###因为自己是为注册中心,不需要检索服务,如果是注册中心则需要检索服务
    fetch-registry: true
  server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000
  • 服务消费者:127.0.0.1:8002
###服务启动端口号
server:
  port: 8002
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: app-eureka-clientOrder
###服务注册到eureka地址
eureka:
  client:
    service-url:
#      defaultZone: http://127.0.0.1:8100/eureka
      defaultZone: http://127.0.0.1:8100/eureka,http://127.0.0.1:8200/eureka

    ###是否需要注册到注册中心
    register-with-eureka: true
    ###是否需要从eureka上获取注册信息
    fetch-registry: true
    registry-fetch-interval-seconds: 30
    # 心跳检测检测与续约时间
    # 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
  instance:
    ###Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)
    lease-renewal-interval-in-seconds: 1
    ###Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己)
    lease-expiration-duration-in-seconds: 2
  • 服务提供者:127.0.0.1:8003
###服务启动端口号
server:
  port: 8003
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: app-eureka-clientMember
###服务注册到eureka地址
eureka:
  client:
    service-url:
      #      defaultZone: http://127.0.0.1:8100/eureka
      defaultZone: http://127.0.0.1:8100/eureka,http://127.0.0.1:8200/eureka
    ###是否需要注册到注册中心
    register-with-eureka: true
    ###是否需要从eureka上获取注册信息
    fetch-registry: true
    registry-fetch-interval-seconds: 30
    # 心跳检测检测与续约时间
    # 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
  instance:
    ###Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)
    lease-renewal-interval-in-seconds: 1
    ###Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己)
    lease-expiration-duration-in-seconds: 2

4.Eureka集群测试

  • 四个服务启动后

  • 关闭服务注册中心127.0.0.1:8100

进入8100对应的服务注册中心发现已经下线

  • 查看8200服务注册中心,发现正常,但是已经没有8100的服务注册中心服务了

  • 服务消费者调用,发现正常,这就证明服务是可用的

工程源代码

链接:https://pan.baidu.com/s/1pZyQ5OZfjH5Z3XdJvmenuQ 
提取码:bjha 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值