加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

微服务注册中心 Eureka 架构深入解读

发布时间:2019-08-23 18:31:27 所属栏目:建站 来源:Java从算法到架构
导读:副标题#e# 微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的 Dubbo 和 Spring Cloud。 关于注册中心的解决方案,dubbo 支持了 Zookeeper、Redis、Multicas

服务提供者、服务消费者、以及服务注册中心自己,启动后都会向注册中心注册服务(如果配置了注册)。下图是介绍如何完成服务注册的:

微服务注册中心 Eureka 架构深入解读

注册中心服务接收到 register 请求后:

  • 保存服务信息,将服务信息保存到 registry 中;
  • 更新队列,将此事件添加到更新队列中,供 Eureka Client 增量同步服务信息使用。
  • 清空二级缓存,即 readWriteCacheMap,用于保证数据的一致性。
  • 更新阈值,供剔除服务使用。
  • 同步服务信息,将此事件同步至其他的 Eureka Server 节点。

服务续约机制

服务注册后,要定时(默认 30S,可自己配置)向注册中心发送续约请求,告诉注册中心“我还活着”。

微服务注册中心 Eureka 架构深入解读

注册中心收到续约请求后:

  • 更新服务对象的最近续约时间,即 Lease 对象的 lastUpdateTimestamp;
  • 同步服务信息,将此事件同步至其他的 Eureka Server 节点。
  • 剔除服务之前会先判断服务是否已经过期,判断服务是否过期的条件之一是续约时间和当前时间的差值是不是大于阈值。

服务注销机制

服务正常停止之前会向注册中心发送注销请求,告诉注册中心“我要下线了”。

微服务注册中心 Eureka 架构深入解读

注册中心服务接收到 cancel 请求后:

  • 删除服务信息,将服务信息从 registry 中删除;
  • 更新队列,将此事件添加到更新队列中,供 Eureka Client 增量同步服务信息使用。
  • 清空二级缓存,即 readWriteCacheMap,用于保证数据的一致性。
  • 更新阈值,供剔除服务使用。
  • 同步服务信息,将此事件同步至其他的 Eureka Server 节点。
  • 服务正常停止才会发送 Cancel,如果是非正常停止,则不会发送,此服务由 Eureka Server 主动剔除。

服务剔除机制

Eureka Server 提供了服务剔除的机制,用于剔除没有正常下线的服务。

微服务注册中心 Eureka 架构深入解读

服务的剔除包括三个步骤,首先判断是否满足服务剔除的条件,然后找出过期的服务,最后执行剔除。

判断是否满足服务剔除的条件

有两种情况可以满足服务剔除的条件:

  • 关闭了自我保护
  • 如果开启了自我保护,需要进一步判断是 Eureka Server 出了问题,还是 Eureka Client 出了问题,如果是 Eureka Client 出了问题则进行剔除。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读