1
liuhan907 2022-07-13 22:00:41 +08:00
分布式一致性资料烂大街,你是怎么找的能找不到的。。。
|
2
billlee 2022-07-13 22:06:49 +08:00
参考 zookeeper/etcd 的 paxos/raft 保证共识,但这种性能就很有限了。MySQL 那种异步复制,只能保证事务原子性,持久性是不能保证的,切换的时候可能会丢已提交的事务。
|
4
Mohanson 2022-07-13 22:55:36 +08:00
Write ahead log (WAL). 这是数据库的标配了, (几乎)任何数据库实现都有介绍的.
|
5
zmal 2022-07-14 10:14:25 +08:00
这个问题没啥讨论的,你担忧的问题早就被类似 HDFS 这种分布式文件存储系统给解决了。
|
6
sha851092391 2022-07-14 15:39:35 +08:00
其实需要把问题分单机和分布式来看,单机的 wal ( mysql redolog )的刷盘方式不同,也会影响到事务是否会丢失。同步刷盘的方式也只能解决软件层面的故障,硬盘损坏这类的硬件故障就无能为力。而 RAID 也只能做到硬件冗余来保证高可用,万一火灾地震呢。
这时候可以考虑多机房通过主从复制来保证 log 的可用性。 首先单主复制,也就是同一时刻只有一个主节点进行写操作,那么这里面如果保证主从之间 log 的一致呢,不考虑延迟的话一个事务的提交就必须等所有从节点 log 复制完才提交(虽然有 semi-sync 、quorum 等手段,但本质是解决写的性能)。 那还有多主复制的问题,这里面的写冲突就更复杂了,例如 LWW 、CRDT 等,而 paxos 族的 raft 、zab 解决的是选主共识问题,还有 gossip 是解决复制的问题,这个话题有点大,OP 可以自行了解下看看。 |