聊聊分布式数据库的那些事儿|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只能用共享存储,否则也是无法知道主从数据是否一致
tidb(AP和TP之间要做资源隔离,硬件级隔离)
https://cloud.tencent.com/developer/article/1496742
https://mp.weixin.qq.com/s/laRHOlCqtMnse2cA4lSlDw
这一套架构虽然很方便,但是同样也存在一些问题,最显而易见的就是AP和TP互相干扰,这在初期是HTAP系统无法避免的问题。在18年的时候TiDB就提出了TiFlash的项目
f