菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
11
0

分布式一致性解决分布式一致性问题用二阶段提交一个没有高可用组件的数据库不能依靠外部软件来实现高可用

原创
05/13 14:22
阅读数 38638

聊聊分布式数据库的那些事儿|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

发表评论

0/200
11 点赞
0 评论
收藏