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 。希望对你有帮助 。

    推荐阅读