聊聊分布式数据库的那些事儿|InfoQ大咖说
https://v.qq.com/x/page/r03631pv2j3.html
数据库需要支持事务,事务需要ACID分布式数据库不一定需要支持事务,所以不一定支持ACID,只是提出了一个理论CAP,目前业界包括TiDB都普遍支持C和P,分布式数据库是比较新的技术,目前业界还没有相应标准,比如TPCC性能压测都是只针对单机数据库
分布式数据库里的A和P没什么好说的,可以讨论的是C,一致性
单机一致性:写入一条数据,再读出的时候,能不能读出刚才写入的最新那条数据 分布式一致性:1、强一致性 2、最终一致性强一致性 :TiDB支持强一致性,各个副本都是同步模式最终一致性: 阿里的DRDS是最终一致性 解决分布式一致性问题,用二阶段提交,two-phase commit队列或者其他技术本身都解决不了问题,只有两阶段提交是目前主流数据库采用的方案,包括SQL Server,PGSQL两阶段提交需要用分布式事务管理器来拒绝单点
一个没有高可用组件的数据库,不能依靠外部软件来实现高可用,比较MySQL主从依靠zookeeper来做故障切换
但是zookeeper只能知道master挂了,但是不知道主从数据是否一致!本质上无法解决问题例如packmaker+corosync 做SQL Server的主从切换,SQL Server只能用共享存储,否则也是无法知道主从数据是否一致
f