SpringCloud之Eureka

服务注册发现概念

在传统的系统部署中,服务运行在固定的IP和端口上,可以通过地址直接调用。但是在虚拟化或容器化的环境中,服务实例的启动和销毁很频繁,服务地址在动态变化,如果需要将请求发送到动态的服务实例上需要以下两个步骤:

  1. 服务注册:存储服务的主机和端口信息。
  2. 服务发现:允许其他用户发现服务注册阶段存储的信息。
什么是Eureka

Eureka是Spring Cloud的服务注册发现组件,Eureka采用C-S架构,Eureka客户端连接到Eureka服务端,并保持心跳,这样Eureka服务端就可以监控各个微服务是否正常运行。

Eureka和Zookeeper的区别
  • Eureka遵守AP原则,Zookeeper遵守CP原则。

  • Zookeeper会因网络问题使得master节点丢失,剩余节点需要重新选举leader,在选举期间整个集群是不可用状态。

  • Eureka每个节点都是平等的,几个节点挂掉不会印象其他节点的工作,Eureka客户端在向某个Eureka请求服务时,如果连接失败,会自动切换到其他节点,只有还有一台Eureka节点在就能提供服务,不过信息可能不是最新的。

服务注册
  • Eureka客服端启动时,会启动一个心跳定时任务,定时向服务端发送心跳信息,如果服务端返回NOT_FOUND,表示服务端没有该客户端的服务信息,客户端会向服务端发送注册请求,注册请求包括服务名、ip、端口、唯一实例ID等信息。

  • Eureka服务端收到注册信息之后会将客户端的信息保存到ConcurrentHashMap

服务发现

Eureka客户端通过定时任务从Eureka拉去服务列表,每次拉取后刷新本地已保存的信息,需要时从本地直接获取。

Eureka集群

Eureka服务端节点会向其他服务注册中心祖册自己,这样就能形成一组相互祖册的服务注册中心,从而同步服务列表。

服务剔除
  • 当服务正常关闭时,会触发一个服务下线的请求给Eureka服务端,服务端收到后会将该服务设置为下线。
  • 对于不能正常的客户端,Eureka服务端会启动一个定时任务,定时从服务列表中剔除心跳超时的服务。
Eureka自我保护机制

Eureka自我保护机制是针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加健壮稳定。

Eureka自我保护机制进入条件:如果在15分钟内超过85%的客户端都没有正常的心跳,那么Eureka就认为客户端与服务端的网络发生故障,Eureka自动进入自我保护机制。

自我保护模式下服务端的行为:

  • 不再从注册列表中移除因为长时间没有收到心跳而应该过期的服务。
  • 继续接受新服务的注册和查询请求,但是不会同步到其他节点上,保证当前节点依然可用。
  • 当网络可用时,当前Eureka服务端新的注册信息会同步到其他节点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值