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

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

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

无论是全量同步还是增量同步,都是先从缓存中获取,如果缓存中没有,则先加载到缓存中,再从缓存中获取。(registry 只保存数据结构,缓存中保存 ready 的服务信息。)

  • 先从一级缓存中获取
  • a> 先判断是否开启了一级缓存
  • b> 如果开启了则从一级缓存中获取,如果存在则返回,如果没有,则从二级缓存中获取
  • d> 如果未开启,则跳过一级缓存,从二级缓存中获取
  • 再从二级缓存中获取
  • a> 如果二级缓存中存在,则直接返回;
  • b> 如果二级缓存中不存在,则先将数据加载到二级缓存中,再从二级缓存中获取。注意加载时需要判断是增量同步还是全量同步,增量同步从 recentlyChangedQueue 中 load,全量同步从 registry 中 load。

服务同步机制

服务同步机制是用来同步 Eureka Server 节点之间服务信息的。它包括 Eureka Server 启动时的同步,和运行过程中的同步。

启动时同步

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

Eureka Server 启动后,遍历 eurekaClient.getApplications 获取服务信息,并将服务信息注册到自己的 registry 中。

注意这里是两层循环,第一层循环是为了保证已经拉取到服务信息,第二层循环是遍历拉取到的服务信息。

运行过程中同步

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

当 Eureka Server 节点有 register、renew、cancel 请求进来时,会将这个请求封装成 TaskHolder 放到 acceptorQueue 队列中,然后经过一系列的处理,放到 batchWorkQueue 中。

TaskExecutor.BatchWorkerRunnable是个线程池,不断的从 batchWorkQueue 队列中 poll 出 TaskHolder,然后向其他 Eureka Server 节点发送同步请求。

这里省略了两个部分:

一个是在 acceptorQueue 向 batchWorkQueue 转化时,省略了中间的 processingOrder 和 pendingTasks 过程。

另一个是当同步失败时,会将失败的 TaskHolder 保存到 reprocessQueue 中,重试处理。

写在最后

(编辑:厦门网)

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

热点阅读