Eureka注册原理解析

Eureka注册原理解析:

Eureka Client

client注册的流程其实很简单,无非就是以下几个步骤:

  • 先读eureka server的配置信息,从而知道eureka server在哪,以便后面进行注册

  • 接着再读取自己的配置信息,然后将自己的信息封装在InstanceInfo实例中,等下将实例发送到eureka server中

  • 通过上面步骤已经知道eureka server的地址了,此时先把注册拉取到本地缓存起来

  • 将上面封装的InstanceInfo实例发送到eureka server进行注册,然后初始化心跳检测以及缓存刷新(这些都是通过开启后台线程完成的)

  • 再次拉取注册表更新本地注册表信息

InstanceInfo实例部分代码:可以看到几个主要的信息比如:instanceId、ipAddr、port、appName、appGroupName、lastUpdatedTimestamp等

Eureka Server

Eureka Server是一个开箱即用的服务注册中心,开发人员只需要导入相关的依赖即可,它提供以下功能:

  • 服务注册

  • 接受eureka client发送过来的心跳检测

  • 服务剔除(当一个client心跳超时)

  • 服务下线(client请求关闭)

  • 集群同步(不同eureka server中注册表信息同步)

  • 获取注册表中服务实例信息(每个eureka server同时也是一个eureka client,eureka server可以把自己注册到eureka集群中)

  • 服务注册时eureka client会将服务实例InstanceInfo发送到eureka server。

  • 服务实例通过ConcurrentHashMap保存在内存中,在服务注册的过程中会先获取一个锁,防止其他线程对registry注册表进行数据操作,避免数据不一致。

  • eureka server接收到client发送过来的InstanceInfo实例时,会先根据唯一的instanceId检查注册表中是否已存在该实例。

  • 如果没有该实例,说明这是一次新的注册服务,server会将InstanceInfo信息保存到注册表中

  • 如果存在该实例,说明这是一次心跳检测或者实例信息更新操作,会比较lastUpdatedTimestamp字段保留最新的InstanceInfo实例信息。

集群同步

  • 为了保持注册表的一致性,集群中的eureka server需要一个同步机制来维护注册表。

  • 集群同步分为两个部分,我个人将其理解为pull和push:

  • pull:eureka server启动时从集群中其他节点pull注册表信息进行本地注册表的初始化

  • push:eureka server对本地的注册表进行更新操作后(包括增删改)会将操作push(也就是同步)到其他节点中

  • 集群模式下的eureka server,多个eureka server之间互相注册并同步注册表信息,即使集群中个别节点出现故障或宕机,集群还是能够稳定提供服务。

  • 缺陷:Eureka Server集群的节点之间是通过http的方式进行同步的,网络存在不可靠性,为了保持高可用性,eureka server 牺牲了数据一致性,eureka server不满足 CAP找那个C(数据一致性)。

Eureka和ZooKeeper的区别

在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务可用性。P:分区容错性(服务对网络分区故障的容错性)。

Eureka(保证AP),Zookeeper(保证CP)

  • Zookeeper保证CP:

当master节点因为网络故障与其它节点失去联系时,剩余节点会重新进行leader选举。选举时间太长,30~120s,且选举期间整个zk集群都是不可用的,导致注册服务瘫痪。

  • Eureka保证AP

Eureka各个节点都是平等的,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

Eureka有自我保护机制,15分钟超过85%的节点都没有正常的心跳,Eureka就认为客户端与注册中心出现网络故障,此时出现以下几种情况:

  1. Eureka不在从注册表中移除因为长时间没收到心跳过期的服务

  2. Eureka依然能接受新服务的注册和查询请求,但是不会同步到其它节点

  3. 当网络稳定时,当前实例新的注册信息会被同步到其它节点上

因此,Eureka可以很好的应对网络故障导致的部分节点失去联系的情况,而不会像zookeeper那样整个服务瘫痪

原文地址: Eureka注册原理解析 - 同喜 - 博客园 (cnblogs.com)

Eureka注册原理解析相关推荐

  1. spring cloud eureka注册原理-注册失败填坑

    写在前面 我们知道Eureka分为两部分,Eureka Server和Eureka Client.Eureka Server充当注册中心的角色,Eureka Client相对于Eureka Serve ...

  2. nacis服务注册原理_Nacos服务注册原理解析

    参考:Nacos服务注册源码分析 Spring Boot版本:2.2.9.RELEASE Spring Cloud版本:Hoxton.SR6 Spring Cloud Alibaba版本:2.2.1. ...

  3. 微服务精通之Eureka原理解析

    前言 随着互联网技术的发展,系统用户量的增长,很多系统都采用了分布式的方式进行部署.这个固然大大提高了系统的性能和可用性,但是分布式部署导致各种服务数量大增,这给我们进行服务治理和运维带来了困扰. 一 ...

  4. 4、Eureka 源码解析 之 Eureka Client 启动原理分析

    在前面的一篇文章 3.Eureka 源码解析 之 Eureka Server 启动原理分析当中我们分析了一下 Eureka Server 的启动.在集群环境下 Eureka Server 相互之前需要 ...

  5. 注册中心 Eureka 源码解析 —— 应用实例注册发现(五)之过期

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 http://www.iocoder.cn/Eureka/instance-registry-evict/ ...

  6. nacis服务注册原理_服务注册和发现之Eureka原理篇

    概念 在传统应用组件间调用,通过接口规范约束来实现的,从而实现不同模块间良好协作:但是被拆分成微服务后,每个微服务实例的数量和网络地址都可能动态变化,使得原来硬编码的地址极不方便,故需要一个中心化的组 ...

  7. Eureka原理解析

    一.Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCl ...

  8. 创建集群版的Eureka注册中心

    我们搭建了一个Eureka服务注册中心,就是Eureka Server,他提供了服务的注册和发现,那么其实对于Eureka服务注册中心来讲,我们整个微服务开发当中,它是一个非常重要的环节,我们所有的服 ...

  9. Spring Cloud概念+案例(eureka注册+拉取、ribbon负载均衡+重试)、netfix各组件介绍【上】

    Spring Cloud概念+案例(断路器)[下] https://blog.csdn.net/LawssssCat/article/details/104632719 [⭐️⭐️⭐️] Spring ...

最新文章

  1. Listview点击事件
  2. Could not load java.net.BindException错误解决
  3. JSP基础--动作标签
  4. 漫谈iOS Crash收集框架
  5. plsql打开sql窗口快捷键_可以提升3倍开发效率的 Intellij IDEA快捷键大全汇总(2019)...
  6. The First Python man in Github
  7. 【渝粤教育】国家开放大学2018年秋季 0690-22T化工原理及实验 参考试题
  8. php添加开机启动脚本_php-fpm开机自动启动Shell脚本
  9. 单片机:DS1302时钟
  10. swf文件转mp4视频格式的失败与成功
  11. LabVIEW编程入门笔记
  12. html选择弹出列表实例,CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
  13. 虚拟机不正常关机,到时无法进入文本界面
  14. linux 拼图游戏,2020经典宝石拼图
  15. 计算机文档添加书签,小学计算机——制作可以跳转的书签教案
  16. 树莓派3b+家庭nas搭建安装openmediavault必要插件安装采坑
  17. 美国标准信息交换标准码(ASCII)
  18. DirectX 3D灯光和材质
  19. 数据结构趣味题-约瑟夫环
  20. 知秋源码解读分享系列(转)

热门文章

  1. 奋斗吧,程序员——第三十六章 落花人独立,微雨燕双飞
  2. Qt开发总结(20)——Data Visualization
  3. 小米Max 3获取Root超级权限的方法
  4. 光纤激光器工作特性仿真
  5. Understand基本使用
  6. StopWatch(秒表)实现计时
  7. UHF(EPC)标签使用常识
  8. STM32的入门——CM3芯片STM32F103VET6的使用和相关外设
  9. 神经网络图文检索模型预测代码学习总结(一)
  10. 【深入理解TcaplusDB技术】TcaplusDB备份与回档机制介绍