CAP 与 注册中心

https://blog.csdn.net/fly910905/article/details/100023415

http://www.ruanyifeng.com/blog/2018/07/cap.html

https://blog.csdn.net/area007/article/details/82839282

  分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。大家都说CAP中的P的必须要满足的,有没有想过为什么是必须要满足的呢。

  P:那是因为微服务解决的就是性能问题-》扩展性能就必须做集群-》不但要做集群还要保证集群在部分服务器不能使用(挂掉或者网络不通等)的情况下依然正常运行(部署更多台服务器)。既然这个前提是要保证的那么也就满足了 P(分区容错性)。

  C:当各个节点状态不一样时,需要同步数据保证数据一致。而同步数据时哪些节点是不可用的,这样降低了此时整个系统的能力。可能无法应对高并发,系统的可用性此时是低的。

  A:当各个节点状态不一样时,不要着急同步数据,服务还继续使用,不让这个系统的能力下降。

读者问,在什么场合,可用性高于一致性?

举例来说,发布一张网页到 CDN,多个服务器有这张网页的副本。后来发现一个错误,需要更新网页,这时只能每个服务器都更新一遍。

一般来说,网页的更新不是特别强调一致性。短时期内,一些用户拿到老版本,另一些用户拿到新版本,问题不会特别大。当然,所有人最终都会看到新版本。所以,这个场合就是可用性高于一致性。

 

  注册中心:zk 做注册中心保证的是 CP,eureka 保证的AP。而在服务注册发现这样的业务场景,我们更需要的可用性。所以 zk 其实并不是做注册中心的上佳选择。更适合处理数据一致性问题。所以现在出现的 nacos 可以替换 zk 了。

 

posted @ 2019-11-18 16:05  cuiqq  阅读(831)  评论(0编辑  收藏  举报