最近研究了一下CAP理论和BASE理论,了解的还不够,看完就忘了,于是今天又看了一下,又是一头雾水,很无语。
以下是我对CAP的理解
CAP应用于多个服务,多个数据库场景下,
C是保证多个节点中数据的一致性,比如A服务A数据库中的User表name属性修改为张三,B服务B数据库的Address表中的local修改为江苏省,那么这个时候C服务连接的也是B数据库,它读取的Address表中的local应该也是江苏省(如果分布式事务正常提交的话)。这里我就有点不明白,为什么有的帖子说,数据一旦修改,需要通过到多个节点,保证数据的强一致性,不懂怎么实现的。
A是高可用,就是不用等到数据修改后通知所有节点才返回,可以是弱一致性。
P是分区,就是在接口在短时间不能给出响应,这个时候需要在CA中做出选择,那必然就是A了,节点无法工作,那么就从节点的副本节点返回数据。这个P我其实也不太懂。
说白了,我对CAP具体的架构不是很明白,也不是很清楚他们之间的数据怎么实现复制同步的。求大神指导一下。
CAP 是一种理论模型,跟具体实践没啥关系,你学 CAP 是掌握不了“它们之间的数据是怎么实现复制同步的”,因为 CAP 压根不管这块儿。
你要知道“理论”这玩意儿往往晚于实践,大家都是先真刀真枪的开干了,后人才总结出来这么个理论。CAP 理论的提出都是 2000 年的事儿了,而且还得等到 2002 年才被证明,在那之前已经有很多分布式系统在跑着了,这些系统在开发之初也没想着应用什么理论。
而且 CAP 的提出压根也不是针对数据库的。只不过在一个大型项目中数据库往往是存在单点问题最严重的一个部分,所以在举分布式系统的例子时通常拿数据库举例。但理论之所以是理论,是因为站在更高的抽象维度的,所以你只看理论的话,永远也掌握不了分布式数据库如何同步数据的。
我个人建议你先挑个分布式数据库(国内的话 MySql 资料比较多),从它是如何搭建集群、主从如何数据同步、几种同步方式有啥优劣开始学起。掌握了这些以后,再看 CAP 理论,相互印证,
就像学代数,你也得从一元一次方程开始学起,而不是上来就开始看矩阵了。先学怎么解方程,然后再看矩阵才会让你恍然大悟:原来方程组是这么回事儿。你要是先看矩阵,只会一脸懵逼,矩阵也学不好,方程也不会解。