Eureka集群数据同步包含两层含义:
第一层含义:Eureka Client只会向一个Eureka Server注册服务。
一个Eureka Client只会向一个Eureka Server注册服务,如果失败,会向其他Eureka Server进行重试,
并且Eureka Client发起的注册请求是单条操作,不可能批量操作,具体实现在RetryableEurekaHttpClient.class中。
第二层含义:Eureka Server集群之间,通过复制进行数据同步。
Eureka Server集群之间的数据同步是批量操作。
为什么这样设计呢?
我们无从考究,只有当事人自己知道。但是我们来看一下这样设计的好处。
假设我们的集群中,有3个Eureka Server和100个Eureka Client,
如果采用Eureka Client向所有Eureka Server注册的方案,
则请求总次数 = 100 * 3 = 300
如果采用Eureka Client向一个Eureka Server注册,失败重试的方案,
则请求总次数最小值 = 100 + 2(Eureka Server之间的数据同步)
一般来说,Eureka Client向一个Eureka Server注册时,失败重试的次数是很少的,在加上Eureka Server之间的数据同步
是批量操作,因此可以大大减少微服务之间的请求总次数,减轻集群内部的压力。