Eureka总结笔记

Posted IT一二

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eureka总结笔记相关的知识,希望对你有一定的参考价值。

Eureka 结构

  • Eurka由两部分组成,即Eureka Client、Eureka Server,Client端又分为服务消费者客户端、和服务提供者客户端;
  • 服务提供者启动时,发起resgiter请求,默认间隔30s进行renew请求心跳(续约)给Server端,当主动下线时,发起cancel请求移除服务注册信息,并由Server端移除服务信息及通知客户端;
  • 服务消费者端,定期向Server端get resgitry获取服务列表信息,并缓存在本地;
  • Erueka Server端启动后,会去其他节点同步数据,默认90(s)/1周期进行服务剔除操作,将在周期内3次未续约的服务进行服务移除操作。

Eureka server 组成

  • 接口服务层,用于处理与Client端的数据交互,传输格式:json/Byte[]
  • 二级缓存层,分为L1和L2缓存,L1缓存为hashMap 只读缓存,不存在失效时间。L2为guava 读写缓存,有周期性的失效机制。当接收到get registy请求时,会加载registry(全量拉取)和chahgeQueue数据(增量拉取)到缓存,优先级:一级缓存>二级缓存>存储Registry。
  • 数据存储层,采用双ConcurrentHashMap结构存储服务注册信息,第一级Map存在 spring.application.name 为Key, 二级Map为Value。而二级Map.Key为相同注册名(Name)服务的instanceId,Map.Vlaue为服务的Lease信息,含:服务上线时间,最近心跳时间,实例信息等等

服务注册机制

  • 客户端发起register请求 -> 服务端更新本节点存储层registry,更新服务阀值 -> 推送到recentlyChangeQueue -> 清空本节点二级缓存 -> 推送数据同步给其他节点

运行过程中节点数据同步

  • 客户端发起register/renew/cancel请求 -> 服务端节点封装成TaskHolder,放入AcceptorBlockingQueue -> 经过处理,放入 BatchWorkBlockingQueue -> TaskExecutorThreadPool poll任务 -> 向其他节点发起同步请求。当同步失败时,放入reprocessQueue,进行重试处理。

总结归纳

  • eureka是基于AP设计的注册中心,当一个节点挂掉之后,其他节点继续提供服务,但不保证数据是最新的,只保证最终的一致性,强调服务高可用。

更多文档

参考自

eureka原理解析[1]

github[2]

参考资料

[1]

eureka原理解析: https://blog.csdn.net/zhuyanlin09/article/details/89598245

[2]

github传送门: https://github.com/Netflix/eureka


以上是关于Eureka总结笔记的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud学习笔记-p1(服务拆分&远程调用&Eureka注册中心&Ribbon负载均衡)

学习笔记SpringCloud微服务架构

SpringCloud的五大核心组件俊哥,侯哥

JavaWeb学习笔记总结 目录篇

Java学习笔记总结

JavaWeb笔记总结