Spring Cloud Eureka - 集群间数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Eureka - 集群间数据同步相关的知识,希望对你有一定的参考价值。

参考技术A Eureka集群没有主从概念,所有节点全部平等,集群间数据通过5个Http接口完成数据同步,下面介绍这几种接口以及同步流程。

假设Eureka1服务最早启动,Eureka2服务启动时将Eureka1作为自己的上报服务(每个Eureka-Client只给一个Eureka-Server上报信息),首先调用 GET /eureka/apps/ 获取已有注册列表。

获取到注册列表后,将自己添加到注册列表中,并发送注册信息到Eureka1上

将Eureka2注册的事件写入自己的注册列表中,并以广播的形式通知剩余全部节点,收到通知的服务将Eureka2注册到自己的注册列表中

这次与第一步骤类似,但是这次只获取注册列表的变化信息。

Eureka2之后每30s向Eureka1上报健康信息,也就是续约。

过程与第二步一致。

自我保护机制的工作机制是:如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时会出现以下几种情况:

Eureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服务注册信息,默认情况下定时任务每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点,Eureka Client每30s从readOnlyCacheMap更新服务注册信息,而UI则从registry更新服务注册信息。

3Spring Cloud - Eureka(高可用Eureka Server集群)

在实际的项目中,可能有几十个或者几百个的微服务实例,这时 Eureka Server 承担了非

常高的负载。由于 Eureka Server 在微服务架构中有着举足重轻的作用,所以需要对 Eureka
Server 进行高可用集群

 

技术图片

 

1、此时需要两个服务
eureka-server的配置文件
server.port=8761
spring.application.name=eureka8761

eureka.client.fetch-registry=false
eureka.client.register-with-eureka=true
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/

 

 启动服务!!

 

 eureka-server1的配置文件

server.port=8762
spring.application.name=eureka8762

eureka.client.fetch-registry=false
eureka.client.register-with-eureka=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

 

 

 http://localhost:8761/

 技术图片

 

 http://localhost:8762/

 技术图片

 

暂时是这样的简单测试,后期还会进行相关的补充!!!

 

以上是关于Spring Cloud Eureka - 集群间数据同步的主要内容,如果未能解决你的问题,请参考以下文章

Spring-Cloud Eureka集群配置

Spring Cloud(O)服务的注册与发现(Eureka)

Spring Cloud Eureka集群 动态扩展新节点

3Spring Cloud - Eureka(高可用Eureka Server集群)

Spring Cloud Netflix-Eureka集群数据同步

Spring Cloud笔记 Eureka通过集群实现高可用