SpringCloud--Eureka集群与原理

简介: SpringCloud--Eureka集群与原理

Eureka集群与原理

原理

Eureka Server注册中心的集群和Dubbo的ZooKeeper注册中心集群在结构上有很大的不同。

  Eureka Server注册中心集群中每个节点都是平等的,集群中的所有节点同时对外提供服务的发现和注册等功能。同时集群中每个Eureka Server节点又是一个微服务,也就是说,每个节点都可以在集群中的其他节点上注册当前服务。又因为每个节点都是注册中心,所以节点之间又可以相互注册当前节点中已注册的服务,并发现其他节点中已注册的服务。

  • CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。

由于分布式系统中必须保证分区容错性,因此我们只能在A和C之间进行权衡。
Zookeeper保证的是CP, 而Eureka则是保证AP。


组件调用关系

搭建Eureka注册中心集群,实现负载均衡+故障容错。

Eureka集群:==相互注册,相互守望。==

服务提供者

1、启动后,向注册中心发起register请求,注册服务

2、在运行过程中,定时向注册中心发送renew心跳,证明“我还活着”。

3、停止服务提供者,向注册中心发起cancel请求,清空当前服务注册信息。

服务消费者

1、启动后,从注册中心拉取服务注册信息

2、在运行过程中,定时更新服务注册信息。

3、服务消费者发起远程调用


数据存储结构

既然是服务注册中心,必然要存储服务的信息,我们知道ZK是将服务信息保存在树形节点上。而下面是Eureka的数据存储结构:

在这里插入图片描述

  • Eureka的数据存储分了两层:数据存储层和缓存层。Eureka Client在拉取服务信息时,先从缓存层获取(相当于Redis),如果获取不到,先把数据存储层的数据加载到缓存中(相当于Mysql),再从缓存中获取。值得注意的是,数据存储层的数据结构是服务信息,而缓存中保存的是经过处理加工过的、可以直接传输到Eureka Client的数据结构。

集群

在这里插入图片描述
我们使用笔记本 配置 Eureka 集群

  • 修改映射配置添加进hosts文件

mac系统的,接下来写的步骤是mac的。打开终端,输入sudo vim /etc/hosts来修改hosts文件。(权限不够需要加上sudo并输入密码)
在最后一行加入:

127.0.0.1       eureka7001.com
127.0.0.1       eureka7002.com
127.0.0.1        eureka7003.com

然后:wq!保存退出。

  • 修改 Eureka 7001 的 yml 配置
eureka:
  instance:
    hostname: eureka7001.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #集群版  相互注册,相互守望
      defaultZone: http://eureka7002.com:7002/eureka/, http://eureka7003.com:7003/eureka/ 
      
  • 修改 Eureka 7002 的 yml 配置
eureka:
  instance:
    hostname: eureka7002.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #集群版  相互注册,相互守望
      defaultZone: http://eureka7001.com:7001/eureka/, http://eureka7003.com:7003/eureka/ #相互注册,相互守望
  • 修改 Eureka 7003 的 yml 配置
eureka:
  instance:
    hostname: eureka7003.com  #eureka服务端的实例名称
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #集群版  相互注册,相互守望
      defaultZone: http://eureka7001.com:7001/eureka/, http://eureka7002.com:7002/eureka/ #相互注册,相互守望

在这里插入图片描述
在这里插入图片描述

  • 将客户端注册到 eureka 集群
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

在这里插入图片描述


actuator微服务信息完善

修改 eureka client 的yml文件:

# client:    
#     ...    instance要和client对齐
  instance:
    instance-id: payment8001
    prefer-ip-address: true   #访问路径可以显示ip地址

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


Eureka自我保护

保护模式主要用于一组客户端和Eureka Server 之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其注册表的信息,不再删除服务注册表的数据,也就是不会注销任何微服务
在这里插入图片描述
导致原因 :某时刻某一个微服务不可用了 ,Eureka不会立刻清理,依旧会对该微服务对信息进行保存,属于CAP里面对AP分支

  • Eureka自我保护机制
    为了防止EurekaClient 可以正常运行,但是Server 在网络不通对情况下,Server不会立即剔除Client

    在默认的情况下,如果EurekaServer 在一定时间内没有接收到某个微服务的实例心跳,EurekaServer将注销该实例  (默认90秒)。

只有在一定时间内丢失大量服务的心跳才开启自我保护模式。

在这里插入图片描述

禁止自我保护

  server:
    #关闭自我保护,默认为true
    enable-self-preservation: false
    #心跳的间隔时间,单位毫秒
    eviction-interval-timer-in-ms: 2000
   #Eureka客户端向服务端发送心跳的时间间隔,单位秒(默认30秒)
   lease-renewal-interval-in-seconds: 1
   #Eureka服务端在收到最后一次心跳后等待的时间上限,单位秒(默认90秒),超时剔除服务
   lease-expiration-duration-in-seconds: 2

相关文章
|
4月前
|
缓存 Java API
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
|
4月前
|
负载均衡 容灾 UED
SpringCloud-Eureka原理分析
SpringCloud-Eureka原理分析
32 1
|
4月前
|
存储 Dubbo 算法
SpringCloud原理分析 | 简介
SpringCloud原理分析 | 简介
79 0
|
2月前
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
3月前
|
缓存 Java 微服务
Spring Cloud中@RefreshScope实现动态刷新的原理
Spring Cloud中@RefreshScope实现动态刷新的原理
|
4月前
|
负载均衡 算法 Java
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
42 3
|
4月前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
72 6
|
4月前
|
负载均衡 Java 开发者
Spring Cloud:一文读懂其原理与架构
Spring Cloud 是一套微服务解决方案,它整合了Netflix公司的多个开源框架,简化了分布式系统开发。Spring Cloud 提供了服务注册与发现、配置中心、消息总线、负载均衡、熔断机制等工具,让开发者可以快速地构建一些常见的微服务架构。
|
4月前
|
负载均衡 容灾 UED
SpringCloud-Eureka原理分析
SpringCloud-Eureka原理分析
|
4月前
|
负载均衡
【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
55 0