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/
暂时是这样的简单测试,后期还会进行相关的补充!!!
以上是关于Spring Cloud Eureka - 集群间数据同步的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud(O)服务的注册与发现(Eureka)
3Spring Cloud - Eureka(高可用Eureka Server集群)