美文网首页
微服务--eureka

微服务--eureka

作者: chanyi | 来源:发表于2021-02-23 01:19 被阅读0次

    本文的目录结构:
    1、概念
    2、服务端和客户端之间的服务注册信息获取
    3、服务端的自我保护机制
    4、服务端的缓存机制
    5、eureka的Regin zone
    6、eureka的数据结构
    7、eureka的register机制
    8、eureka的reNew机制
    9、eureka的cancel机制
    10、eureka的evict机制
    11、eureka的配置
    12、服务端的集群(节点复制和数据同步)
    13、异常问题

    1、概念

    • eureka是采用的C-S模式的服务注册中心。
    • 分为Server和Client,Server提供服务的注册和发现,Client可以做为服务的提供者,也可以作为服务的消费者。
    • 采用的是AP的模式,更加注重数据的高可用

    2、服务端和客户端之间的服务注册信息获取

    • 服务端启动之后,客户端每隔30s会主动将自己的信息注册到服务端
    • 同时客户端也会每隔30s主动获取服务端(注册中心)的注册表,将获取到的注册表存放在本地的缓存中,获取的方式有两种(全量获取和增量获取)
    • 全量获取的情况有
      (1)、配置中禁用了增量获取
      (2)、首次请求的时候增量获取(或者本地注册表为空的情况)
      (3)、如果增量同步失败,还会强制全量获取
    • 增量获取的条件
      (1)、开启了增量获取开关
      (2)、非首次获取
      全量获取这个好理解,直接去Server的三级缓存中获取数据,但是增量获取就稍微复杂一点点
    • 增量获取的流程
    (1)、增量变化服务注册信息存储在一个ConcurrentLinkedQueue中(变量:rencentlyChangedQueue)
    (2)、队列中存储3min内有改动的服务注册信息
    (3)、客户端增量获取数据的时候获取两种信息(3min内改动的注册信息和全量注册信息的hash值)
    (4)、客户端按照本地的注册和获取的增量的注册信息进行整合,得到完整的注册信息
    (5)、客户端对完整的注册信息进行hash计算,然后比较计算所的hash值和获取的全量的hash值是否相同,不相同则去服务端获取全量的注册信息
    
    增量获取流程图

    3、服务端的自我保护机制

    4、服务端的缓存机制

    • 服务端采用三级缓存(registry,readWriteCacheMap,readOnlyCacheMap)来存储注册表信息。
      三级缓存的工作原理如下图:


      三级缓存工作原理图
    • 三级缓存的目的是为了将注册服务和获取服务区分开,避免了高并发的同时对一个缓存的读写操作,有效避免读写冲突。保证性能。
    • 三级缓存的主要流程是:
      (假设registry一级缓存,readWriteCacheMap二级缓存,readOnlyCacheMap三级缓存)
    (1)、客户端将服务信息注册在一级缓存registry中。(每30s一次心跳续约)
    (2)、一级缓存registry收到注册信息后,先清空二级缓存readWriteCacheMap中的注册信息,然后在同步新数据给readWriteCacheMap二级缓存。
    (3)、二级缓存按照30s一次的频率给三级缓存readOnlyCacheMap同步数据
    (4)、其他的客户端连接注册中心Server30s一次的频率从三级缓存readOnlyCacheMap中获取,如果readOnlyCacheMap中获取不到,则直接去一级缓存registry中获取。
    (5)、一级缓存中默认每隔60s检查服务续期,如果90秒内,服务还没有续期,则删除注册信息。同时同步给二级三级缓存。
    (6)、服务下线时,一级缓存registry中的注册信息删除,同时删除二级缓存的数据。30s后二级同步三级缓存时发现二级缓存已失效,则删除三级缓存的注册表信息。则会期间会有时间的延迟。
    (7)、二级缓存的默认有效期是180s(3min),3min后数据会失效,然后二级缓存数据清空
    
    • 三级缓存的弊端:
      三级缓存的问题很明显,就是服务下线之后,不能及时通知到三级缓存中,注册信息的获取者(客户端)拿到的注册信息不是实时的。(当让客户端的获取也不是实时的,要间隔30s才会去主动获取)

    5、eureka的Regin zone

    6、eureka的数据结构

    7、eureka的register机制

    8、eureka的reNew机制

    9、eureka的cancel机制

    10、eureka的evict机制

    11、eureka的配置

    12、服务端的集群(节点复制和数据同步)

    • 服务中心为了实现高可用,集群中的多个节点相互注册支持集群
    • 如果服务端Server-A单向注册到服务端Server-B,则Server-A视Server-B为Peer节点,如果有客户端注册到Server-A,则Server-A就会将注册信息同步给Server-B。但是Server-B不会将注册信息同步到Server-A中。

    13、异常问题

    1、eureka服务中心挂掉后,注册在服务中心的A,B服务是否还能互相访问?

    (1)、如果AB服务之间从没有连接到eureka,eureka服务就挂掉,那么AB是无法互相访问的,因为并没有从注册中心获取到注册表信息,所以无法访问。
    (2)、如果AB服务已经连接到过eureka,那么eureka挂掉之后,AB服务之间还是会保存注册表信息,所以还是可以访问的。

    (待续。。。)

    相关文章

      网友评论

          本文标题:微服务--eureka

          本文链接:https://www.haomeiwen.com/subject/dwmlfltx.html