tidb,PingCAP

TiDB使用了raft之后為什么還需要2PC?

tidb,PingCAP


1.首先明確下Raft和2PC是解決什么問題2PC用于解決分布式事務的;TiDB使用的是優化過的2PC,源于Google的Percolator 。類似的還有3PC,TCC,Sagas,本地消息表,MQ事務消息都是用來實現分布式事務的 。而Raft是解決分布式環境系統數據的一致性 。每個region在不同環境下多個副本的一致性 。
TiDB使用etcd的Raft實現 。region是TiDB數據的基本單位 。分布式一致性協議基本上都是Paxos的變種 。所以 , 2PC和Raft不是解決的一個問題 。2PC指涉及多份數據參與時 , 保證數據的正確性 , Raft主要保證一份數據在不同環境下多個副本的一致性 。2.TiDB是一個分布式SQL數據庫 , 類似于Google的F1和Spanner , 現在的這類數據庫叫NewSQL , 結合了RDBMS和NoSQL的優點 。
【tidb,PingCAP】RDBMS支持ACID , 但是可擴展性差 , 還需要我們分庫分表 , NoSQL可擴展性好 , 但是不支持ACID 。NewSQL即支持事物 , 而且可以方便擴容 , 也不要我們再進行分庫分表了 。3.TiDB整體架構分為TiDB和TiKV兩部分而2PC和Raft都應用于TiKV , 底層存儲是使用的RocksDB 。希望對你有幫助 。

    推薦閱讀