美文网首页互联网科技程序员程序员之家
请问分布式事务一致性与raft或paxos协议解决的一致性问题是

请问分布式事务一致性与raft或paxos协议解决的一致性问题是

作者: cb9841112785 | 来源:发表于2018-06-06 20:50 被阅读4次

    虽然不是一回事儿,但是有千丝万缕的联系,哪里不一样,很多答主都说了。我来说说它们哪里有联系,相信这也是会造成很多同学迷惑的地方。

    分布式数据库的commit是一个atomic commit问题,这个问题的解分为blocking和non-blocking两种。

    其中non blocking Weak Atomic Commitment, consensus和uniform consensus这三个问题是等价的。只要你可以解决其中任何一个,你就可以解决其他两个。

    non blocking Atomic Commitment(NB-AC)(少了weak)的Non triviality要求没有failure发生则correct的node都commit,而non blocking Weak Atomic Commitment(NB-WAC)的Non triviality要求没有任何node被怀疑failure则correct的node都commit。就是由于这一点,NB-AC在异步环境无解,而NB-WAC可解。因为异步环境我们无法得到一个完美的failure detector,所以我们不可能完美不犯错的detect有没有failure。

    由于NB-WAC和consensus等价,且NB-AC比NB-WAC难,所以NB-AC是比consensus要难的。

    然后很有意思的一个问题:

    就是大家其实都是用2PC的比较多(2PC是Blocking Atomic Commitment),用Nonblocking-WeakAtomicCommitment的比较少。。。。比如Precolator,MegaStore和Spanner都是2PC。

    而2PC的问题是某一个shard挂了,和coordinator挂了,需要block等。

    那么只要保证shard和coordinator的high availability就可以防止block等待了。

    那么怎么保证high availability呢?=> 用replicated state machine。

    怎么在异步环境(准确说应该是局部同步,partial synchronization,根据FLP,完全异步的环境consensus都无解)中实现replicated state machine呢? => 用paxos这种共识算法。(对, 我们又绕回来了~~)

    然后很有意思的一个问题之二:

    数据库的外部一致性这方面的问题其实和consensus也有一些联系:

    数据库的外部一致性,从数据的角度来看(比如read your write consistency是从client角度来看,这里不讨论)分为几个层级,从强到弱:linearizability > sequential consistency > causal consistency > FIFO consistency; 参见Distributed Systems: An Algorithmic Approach 2nd Edition这本书的 Chapter16 Replicated Data Management的section 16.3 Data-centric consistency models

    其中sequential consistency可以用total order broadcast(Atomic Broadcast)来实现, 参见Atomics Broadcast and Its use to Achieve Sequential Consistency

    而Atomic Broadcast和consensus问题是等价的,  (对, 我们又回到了consensus问题~~)

    (高赞由于只讨论了linearizability,所以说跟Paxos没关系,但是从更广的角度来说,还是有联系的)

    关于consensus与transaction的关系建议看两篇论文。

    1. Revisiting the relationship between non-blocking atomic commitment and consensus

    2. Consensus on Transaction Commit

    看懂了这两篇,你绝对不会再对consensus问题和transaction问题有任何混淆。

    最后给大家分享个Java学习进阶交流群:617912068。群内提供免费架构视频资料!而且有大牛解答。

    相关文章

      网友评论

        本文标题:请问分布式事务一致性与raft或paxos协议解决的一致性问题是

        本文链接:https://www.haomeiwen.com/subject/kguisftx.html