Spring Cloud Netflix之Eureka

Eureka概述

Eureka在Spring Cloud Netflix微服务架构里面是充当注册中心的角色。

服务提供者可以将服务订阅到注册中心,服务消费者则可以无视许多复杂的环节(服务的提供者的IP地址,端口号...),直接去Eureka注册中心获得服务提供者的注册信息,然后进行通信消费即可。

Eureka节点平等

每一个Eureka服务节点都是平等的,他们都具备读写操作,没有所谓的Leader节点。

Eureka数据同步

Eureka为了保持服务的高可用性,提供集群了集群的部署方式。然而如何维持服务集群的数据同步是任何集群落地应用需要解决的问题。

Eureka采用对等复制的方式进行数据同步。任何服务一个收到客户端的数据数据更新操作,现在本地进行数据更新,紧接着向集群中其他节点发送数据副本。

Eureka对等复制看起来很简单粗暴,因此也需要解决另一个由简单引发的数据同步死循环问题,也即服务节点如何区分该数据来源是其他服务节点发来的数据同步还是客户端发过来的数据更新操作呢?因为前者只需要更新本地即可,后者需要向集群其他节点发送数据同步机制,如果不加以区分,则会导致数据同步死循环问题(例如:接收到其他节点的数据同步操作,误以为是客户端的数据更新请求,也向其他节点发送数据同步,一直往返循环)。Eureka用一个类似于时间戳的序列号来区别数据操作是数据同步还是数据更新。

Eureka自我保护机制

Eureka Server服务节点在规定时间内没有收到服务实例的心跳,会默认将该服务实例的信息从注册表移除。

然而,这是有问题的。假设:在时间内接受不到大量服务实例的心跳,真的是这些实例出现问题吗?会不会是该Eureka Server出现了网络故障,从而导致接受不到服务实例的心跳?答案是:是的。因此Eureka设置了自我保护机制,规定在某时间内接受不到大量实例请求,不将它们从注册表移除,只是暂时将它们保存起来,等待网络恢复后,正常通信,Eureka Server再退出自我保护模式即可。

自我保护机制默认是开启的,可通过一下配置关闭:

eureka.server.enable-self-preservation=false

Eureka Server清除时间内没有发送心跳机制的服务实例:

eureka.server.eviction-interval-timer-in-ms=5000

服务实例多少秒发送一次心跳机制:

eureka.instance.lease-renewal-interval-in-seconds=10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值