Spring Cloud 支持了 Zookeeper、Consul 和 Eureka,官方推荐 Eureka。

C(一致性)A(高可用)P(分区容错)理论,Eureka的选择就是放弃C,选择AP。

Eureka 采用纯 Java 实现,除实现了注册中心基本的服务注册和发现之外,极大的满足注册中心的可用性,即使只有一台服务可用,也可以保证注册中心的可用性。

  • ZooKeeper的设计原则是 CP,即强一致性和分区容错性。他保证数据的强一致性,但舍弃了可用性,如果出现网络问题可能会影响 ZK 的选举,导致 ZK 注册中心的不可用。
  • Eureka 的设计原则是 AP,即可用性和分区容错性。他保证了注册中心的可用性,但舍弃了数据一致性,各节点上的数据有可能是不一致的(会最终一致)。

服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka Server 和 Eureka Client。

Eureka Server:注册中心服务端

注册中心服务端主要对外提供了三个功能:

服务注册

服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表

提供注册表

服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表

同步状态

Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。

Eureka Client:注册中心客户端

Eureka Client 是一个 Java 客户端,用于简化与 Eureka Server 的交互。Eureka Client 会拉取、更新和缓存 Eureka Server 中的信息。因此当所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者,但是当服务有更改的时候会出现信息不一致。

Eurka 工作流程

1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息

2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务

3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常

4、当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例

5、单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳,则认为可能为网络异常,进入自我保护机制,不再剔除没有上送心跳的客户端

6、当 Eureka Client 心跳请求恢复正常之后,Eureka Server 自动退出自我保护模式

7、Eureka Client 定时全量或者增量从注册中心获取服务注册表,并且将获取到的信息缓存到本地

8、服务调用时,Eureka Client 会先从本地缓存找寻调取的服务。如果获取不到,先从注册中心刷新注册表,再同步到本地缓存

9、Eureka Client 获取到目标服务器信息,发起服务调用

10、Eureka Client 程序关闭时向 Eureka Server 发送取消请求,Eureka Server 将实例从注册表中删除

springCloud五大组件--Eureka相关推荐

  1. 学习 SpringCloud 五大组件后的总结 一

    学习 SpringCloud 五大组件后的总结 一 1.什么是微服务? 把某一功能独立出来单独作为一个进程类似的微小的服务.独立做某件事,与其他的服务直接不影响. 微服务之间的优缺点? 优点:每个服务 ...

  2. 一看就会的SpringCloud五大组件

    SpringCloud五大组件(一看就会) 前言   Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置 ...

  3. springcloud五大组件?注解_spring cloud实现简单的微服务架构

    "读书足以怡情,足以长才.读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,过度学习使人疯魔:凡有所学,皆成性格." --弗朗西斯·培根<论学习> ...

  4. SpringCloud五大组件原理

    springcloud入门demo:https://gitee.com/Linging241/springcloud-demo.git 其他 1. Eureka原理 Eureka作为微服务中的注册中心 ...

  5. springCloud五大组件--Gateway

    SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发 ...

  6. SpringCloud五大组件详解

    Eureka Ribbon Hystrix Zuul config

  7. SpringCloud之五大组件

    一.SpringCloud微服务架构 1.流程:客户端请求→Zuul→Eureka 获取服务→Feign 通信→Ribbon 负载均衡→Hystrix 熔断. 2.五大组件   1)Eureka:服务 ...

  8. SpringCloud分布式开发五大组件详解

    SpringCloud分布式开发五大组件详解 https://blog.csdn.net/weixin_40910372/article/details/89466955 服务发现--Netflix ...

  9. springcloud五大神兽之Eureka介绍

    一.springcloud简介 1.0 什么是微服务? ① 业务角度 从业务角度分析,就是将整体项目(传统的一站式应用)按照业务拆分,将每个业务拆分为一个个独立的服务,彻底解除业务模块之间的耦合,每个 ...

最新文章

  1. opencvmediapipe 人脸检测+摄像头实时
  2. 关于sybase的调优
  3. 写入mysql_MySQL写入缓冲区在数据库中的作用( Change Buffer )
  4. oracle锁定用户名及解锁
  5. 【放置奇兵】英雄各属性介绍
  6. Node.js HTTPS
  7. mysql双节点安装_快速安装及配置MySQL Replication双主节点集群--及改变数据保存目录...
  8. 【JUC】JDK1.8源码分析之ConcurrentLinkedQueue(五)
  9. 第11章 路由器OSPF动态路由配置
  10. TQ210——启动方式
  11. selenium设置js加载的时限,防止持续加载页面
  12. mysql设置取值范围0到100_mysql中的int smallint 取值范围
  13. [渝粤教育] 广东-国家-开放大学 21秋期末考试国际私法10216k1
  14. 【GYM-100889 D】Dicy Numbers【数学推导求解】
  15. excel图表工具的元素
  16. 药品信息管理系统mysql_药品信息管理系统数据库部分代码
  17. 讲讲那些 H-桥电路 的基本道理
  18. Talib macd函数探究
  19. 高度坍塌的产生条件和解决方法
  20. 直流电源输入防反接保护电路总结

热门文章

  1. OCLint+Xcode 代码规范利器
  2. pytorch自定义模型执行过程
  3. HDU 1566 Count the Colors 树状树组 区间更新 单点求值
  4. CodeForces 841B (B) 博弈
  5. 【匈牙利算法】【二分图匹配】【转载】趣写算法系列之--匈牙利算法
  6. javascript用户登录_SAP HANA XS的JavaScript安全事项
  7. c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序
  8. 7-13 部落 (25 分)
  9. python url拼接_详解Python urlencode编码和url拼接方法
  10. padding 后尺寸变化 设置_padding margin border 和元素大小