服务注册中心不可能是单点的,一定会有一个集群,那么集群中的服务注册信息如何在集群中保持一致的呢?
首先要明确的是 Eureka 是弱数据一致性的。
下面从2个方面来说明:
- 什么是弱数据一致性
- Eureka 是如何同步数据的
1. 弱数据一致性
我们知道 ZooKeeper 也可以实现数据中心,ZooKeeper 就是强一致性的。
分布式系统中有一个重要理论:CAP。
该理论提到了分布式系统中的3个特性:
- Consistency 数据一致性
分布式系统中,数据会存在多个副本中,有一些问题会导致写入数据时,一部分副本成功、一部分副本失败,造成数据不一致。
满足一致性就要求对数据的更新操作成功后,多副本的数据必须保持一致。
- Availability 可用性
在任何时候客户端对集群进行读写操作时,请求能够正常响应。
- Partition Tolerance 分区容忍性
发生通信故障时,集群被分割为多个无法通信的分区时,集群仍然可用。
CAP 理论指出:这3个特性不可