作者回复: 你好,你的理解非常准确,点赞
作者回复: 你好,其实CAP的C也是Consistency,是多副本、单操作的数据一致性;而ACID里的C是指单副本、多操作的事务一致性。Paxos这类共识算法,可以看作是复制协议的一种,虽然有时也叫做一致性协议,但这个一致性是指Consensus。Consensus是实现数据一致性目标下的具体技术,但并不是唯一的选择。采用主从复制也可以达到同样效果,比如04讲会提到的PGXC风格的分布式数据库就是采用主从复制的方式。
作者回复: 正确������
作者回复: 你好,孟磊,谢谢你的鼓励。我在构思这个专栏的时候,就订下一个目标,就是把学术的东西和目前工业界的实践联系起来,再落到具体的工作中,比如技术选型。所以,能得到你的肯定,我很高兴。当然,对产品的关注是必不可少的,从04开始的每一讲我都会对领头羊产品做局部设计上的拆解,并且比对不同方案的优劣,不过这个领头羊并不固定,因为我想向你介绍最有特点的设计。希望你能喜欢这种组织方式,后面的课程中,期待还能收到你的反馈,我们结合问题一起讨论。
作者回复: 你好,简单的说,因果一致性是靠逻辑时钟确定偏序关系,不需要应用介入;而前缀一致性靠事件之间显式声明的依赖关系,可以在应用层处理
作者回复: 说的很好
作者回复: 你好,关于第一点,我再补充一下。 Raft是多数派协议,从写入成功那一刻的数据状态来说,肯定不是一致的。不过,通过操作方面的封装,约定由主副本对外提供服务,所以不会体现出副本间的差异。一致性模型,除了副本的状态,还要看读写操作。最终一致性的定义,其实只是描述了副本的状态而已。我认为,一致性模型,主要还是从读写操作的效果来分析,也数据副本的一致性有关但不是强依赖。比如,如果不使用Raft,用半同步,也可以做到线性一致性。 第二点,我没有完全理解,咱们可以继续探讨
作者回复: 你好,李鑫磊,你把多数据副本的同步过程说的很形象。不过ACID里的C是说事务一致性,和数据一致性还是不同的,03讲有具体的介绍,我推荐你读一下。数据一致性中还有一点很重要,就是操作之间的先后次序判断,这也是为什么我们说,线性一致性必须要有全局时钟支持。也许02中的表述还不够直观,我建议关注一下第12讲,说不定会有收获
作者回复: 高级别的一致性模型,可以基于Raft算法复制,但使用主从复制也是可以的😊
作者回复: 嗯,DDIA非常值得大家去读一读