SpringCloud注册中心-Eureka


前言

工作学习之余,记录一些知识概念。


一、微服务的基本术语

        服务提供者:业务实现者,封装业务接口同时提供业务实现逻辑。
        服务消费者:业务调用者,调用服务提供者对外暴露的接口。
        负载均衡:同一个服务的多个服务提供者分摊请求处理。
        注册中心:提供公共的地方让服务提供者和消费者相互发现。
        服务治理:服务拆分以后各种问题和解决方案的集合。


二、Eureka特性

   服务注册,Eureka流程之register

        1、Eureka Client在第一次心跳时向Eureka Server注册。
        2、注册时会提供诸多自身元数据:主机名、端口、健康指标URL等。

   服务续约,Eureka流程之renew

        1、Eureka Client通过发送心跳进行续约。
        2、默认情况下每30秒发送一次心跳。
        3、如果90秒内Eureka Server未收到续约,则进行服务剔除。

   服务下线,Eureka流程之cancel

        1、Eureka Client优雅退出时会发送cancel命令。
        2、Eureka Server收到cancel命令时会删除该节点。

   获取注册列表信息,Eureka流程之注册表

        1、Eureka Client会缓存由Eureka Server获取的注册表信息。
        2、Eureka Client会定期更新注册表信息【默认30秒】。
        3、Eureka Client会处理注册表的合并等内容。


三、面试点

   多注册中心比较:Eureka与Zookeeper比较

基本都是从这几个维度说,理论、特性、应用度。
一、分布式基础:CAP理论
1、一致性 Consistency
    一般分强一致性和弱一致性。
     强一致性,分布式系统,在某一个节点CRUD,其他的节点必须立刻同步相关的数据。保证所有人看到数据是一致的。
     弱一致性,我们可以有一段时间数据不一致,但是最终数据是一致的。
2、可用性 Availability
     系统不轻易崩溃,在绝大多数情况下,都要保证系统可用。
3、分区容错性 Partition tolerance
     我们的系统正常会在不同的网络分区里。
     如果一个机房除了问题,数据在其他地方要能找到。针对这个机房做操作,其他机房也要有。
     CAP最根本的理论是:在任何一个时刻内,不可能有任何一个系统,能同时满足CAP。
     他们可以任意两两组合。但是不可能CAP都满足,到目前为止,都没有任何系统可以满足这个情况。
     一致性+分区容错性(CP):MYSQL数据库
     一致性+可用性(CA):典型的数据库场景和分布式数据库的场景
    可用性+分区容错性(AP):Redis
二、常见的注册中心:Zookeeper、Eureka等。
三、Eureka主要保证AP特性。
四、Zookeeper是典型的CP特性。
    Zookeeper获取一个数据以后,它会对所有的节点做广播,广播结束之前,不管是你操作的哪个节点,你都不可能看到你操作的数据。
    Eureka不一样,它如果出现多注册中心情况,它优先保证它是可用性。服务剔除的时候,也有一段时间。哪怕获取的节点是不可用的,也还是能获取到。这就是AP。
    CP就是,这个没了就是没了,任何人都不可能获取到。这就是Eureka和Zookeeper之间最主要的区别。

   Eureka之慢注册

Eureka注册慢,有时候启动明明完成,就是调用不成功。
1、注册慢的根本原因在于Eureka的AP特性。
      可用性+分区容错性(AP),他不会随来随走,不会你随时来一个就给你注册进去了。大家就可以用。
      其实中间它有很多东西,例如,像机场安检,大家都在那等着,统一做扫描,统一放心。
2、Eureka Client延迟注册,默认30秒
     要保证可用性的情况。
3、Eureka Server的响应缓存,默认30秒
4、Eureka Server的缓存刷新,默认30秒
最极端的情况,有可能达到90秒,理论上这几个时间是有可能相加的。

   自我保护模式

Eureka的自我保护,在页面上,忽然多出一行红字。
1、Eureka Server会自动更新续约更新阈值。
2、Eureka Server续约更新频率低于阈值则进入保护模式
3、自我保护模式下Eureka Server不会剔除任何注册信息。
这也是AP特性。在设计之初,有一个非常重要的特性,他会尽量保证所有的注册信息不会轻易被剔除,这样,哪怕客户端获取的是一个不可用的服务,但是没关系,这个服务之前可用过,现在呢,可能暂时用不了。除非你明确告诉我要剔除一个信息,

  


总结

本文仅记录下Eureka的特性和常见面试点。后面再记录下Nacos的学习笔记。

你可能感兴趣的:(Spring,Cloud)