1. 先聊一聊CAP理论
CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性。 只能满足其中两个特性,一致性、可用性、分区容错性三者不可兼得:
分别是:
一致性(Consistency)
可用性(Availability)
分区容错性(Partition tolerance)
2. 单机系统
单机系统可以保证一致性和可用性,但是单节点很难实现大量。
3. CP系统
先聊一下zoomkeeper
ZooKeeper 集群中的角色简介:
Leader: 负责发起投票和决议,更新系统状态
Follower:用于接收客户端请求并向客户端返回结果,在选主过程中参与投票
Observer: 可以接收客户端连接,将写请求转发给 Leader 节点,但不会参与 Leader 发起的投票,也不会被选举为 Leader,Observer 的目的是为了扩展系统,提高读取速度
> Observer 的目的是为了扩展系统,提高读取速度
所以CP系统更适合用在分布式数据中心或者消息系统而言, 这个场景保证强一致性很关键,但是会有可用性问题
# 4. AP系统
注册中心场景比较适用,因为AP系统会有可用性要求。
注册中心需要解决的问题
## 4.1 怎么实现服务注册发现
## 4.2 如何选择适合的中介存储
“中介存储”这个问题,其实是我们在解决服务注册发现的时候,引入的一个中间层。“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”,这一经典论断又一次被验证了。
- 可用性要求非常高
- 性能要求中等:
- 数据容量要求低:
- API 友好程度
就注册发现来讲

# 5. AP还是CP
从服务注册发现的场景来说,我认为 Eureka 之类的 AP 系统更符合要求。因为服务发现是整个分布式系统的基石,
所以可用性是最关键的设计目标。并且上面介绍的服务,在同步自己的状态到中介存储,以及调用方通过中介存储区获得服务的状态,这两个过程中的数据同步都是最终一致性的。既然服务注册发现系统整体是一个 AP 系统,那么将中介存储设计为 CP 系统,去放弃部分的可用性是不值得的。