首页 > 解决方案 > 主主数据库架构中的主节点是共享相同的数据集还是拥有自己独特的数据集?

问题描述

在传统的主从架构中,有一个主节点和一个或多个从节点。驻留在主节点中的数据集异步同步到从节点。写入仅限于一个(主)节点本身。万一主节点故障,一个从节点将成为主节点。这将带来一些停机时间和一些数据丢失。

主主架构将有多个主节点,每个主节点将有自己的从节点。这里可以在多个节点上进行写入。所以如果一个主节点出现故障,另一个主节点将支持写入请求。所以我担心是

1.master master架构中的master节点是否共享同一个数据集?如果是,那么主节点之间的通信模式是同步还是异步?如果它是异步的,那么如果一个主节点出现故障,另一个主节点将有不一致的数据,就像在主从架构中一样。

2.如果主节点有自己独特的数据集,那么主节点之间是否仍然相互通信?如果是,通信模式是什么,更重要的是,考虑到他们有自己的独特数据集,需要什么。

3.主从架构除了可以扩展写请求之外,还有没有其他的缺点被主从架构解决了?

标签: databasedatabase-designarchitecturemaster-slavesystem-design

解决方案


所有这些架构都假设一个数据集。否则,您不是在谈论复制,而是在谈论分片,这是另一门学科。这两个讨论并非不相容,而是真正解决不同问题的不同问题。

多主解决方案几乎总是允许不一致的。最终一致性或惰性一致性通常是更高性能和无停机故障转移的权衡。基于仲裁的替代方案通常比简单的主/从解决方案具有较低的整体性能,因为多个服务器必须确认更改以允许其提交。

为了解决您的问题:

1)通常是异步的,是的,绝对可能发生不一致。同步解决方案脆弱、昂贵且缓慢,但偶尔需要解决非常特殊的问题。

2)不,主节点都共享一个数据集

3)假设你说的是最终一致的,你要解决的问题是扩展和冗余。任何节点都可以关闭,系统可以不间断地继续运行。如果您在谈论 ACID 一致性,那么您纯粹是在解决保证写入问题,而不是缩放问题。如果我经营一家银行,我可能需要多个具有 ACID 一致性的 master。


推荐阅读