微服务入门(三) | 五大核心组件之Eureka

目录

定义

实现原理

采用C-S的架构设计

Eureka Server

Eureka Client

自我保护机制

定义

目的

触发条件

和Zookeeper的区别

CAP原则

Zookeeper 保证的是CP

Eureka 保证的是AP

Reference


  • 定义

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移。

服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper。

  • 实现原理

    • 采用C-S的架构设计

      • 分为Eureka Server 和 Eureka Client两个组件
    • Eureka Server

      • 作为服务注册功能的服务器,是服务注册中心
      • 各个节点启动后,要在 Eureka Server 中进行注册,这样Eureka Server中的服务注册表中将会存储所有服务节点的信息,服务节点的信息可以在界面中直观的看到
    • Eureka Client

      • 是一个Java客户端,用于简化Eureka Server的交互,同时也具备一个内置的,使用轮询负载算法的负载均衡器
      • 在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除掉(默认周期为90s)
  • 自我保护机制

    • 定义

      • 某时刻某一微服务不可用,Eureka不会立即清理,依旧会对该微服务的信息进行保存
      • Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
      • Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上 (即保证当前节点依然可用)
      • 当网络稳定时,当前实例新的注册信息会被同步到其他节点中
    • 目的

      • 该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务,如果Eureka因网络故障而把微服务误删了,那即使网络恢复了,该微服务也不会重新注册到Eureka Server了,因为只有在微服务启动的时候才会发起注册请求,后面只会发送心跳和服务列表请求,这样的话,该实例虽然是运行着,但永远不会被其它服务所感知
    • 触发条件

      • Eureka Server在短时间内丢失过多的客户端心跳时(在15分钟内超过85%的节点都没有正常的心跳),会进入自我保护模式,该模式下,Eureka会保护注册表中的信息,不再注销任何微服务,当网络故障恢复后,Eureka会自动退出保护模式。
  • 和Zookeeper的区别

    • CAP原则

    • Zookeeper 保证的是CP

      • 注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接收服务直接down掉不可用,服务注册功能对一致性的要求要高于可用性。
      • 当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader投票选举。选举leader的时间太长(30-120s),且选举期间整个zookeeper集群是不可用的,导致选举期间注册服务瘫痪。
      • 在云部署的环境下,因为网络问题使得zookeeper集群失去master节点是较大概率发生的事件,虽然服务最终能够恢复,但是,漫长的选举时间导致注册长期不可用,是不可容忍的。
    • Eureka 保证的是AP

      • ​Eureka在设计时就优先保证可用性。
      • Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册时,如果发现连接失败,则会自动切换至其他节点,只要有一台Eureka还在,就能保住注册服务的可用性,只不过查到的信息可能不是最新的。
      • Eureka有自我保护机制。
      • 故Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪
  • Reference

  • spring官方文档

https://spring.io/projects/spring-cloud-netflix

  • 【狂神说Java】SpringCloud最新教程IDEA版

https://www.bilibili.com/video/BV1jJ411S7xr

  • SpringCloud学习笔记(四)(狂神视频笔记)

https://blog.csdn.net/hexinqiong/article/details/116349989

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值