主数据库架构中的主节点是否共享相同的数据集,或者它们是否拥有自己独特的数据集?

Do the master nodes in a master master database architecture share the same dataset or are they having their own unique dataset?

在传统的主从架构中,有一个主节点和 1 个或多个 slaves.The 驻留在主节点中的数据集异步同步到从节点 nodes.The 写入仅限于一个(主)节点 itself.In 如果主节点发生故障,其中一个从节点将被创建 master.This 会出现一些停机时间和一些数据丢失。

Master 主架构将有多个主节点,每个主节点将有自己的 slaves.Here 可以在多个上完成写入 nodes.So 如果其中一个主节点出现故障,另一个主节点将支持写入 requests.So 我担心的是

1.Whether主控架构中的主控节点共享同一个数据集?如果是,那么主节点之间的通信模式是同步的还是异步的?如果它是异步的,那么如果其中一个主节点宕机,另一个主节点将具有不一致的数据,就像在主从架构中一样。

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

3.Apart从写请求的扩展来看,master master架构是否解决了master slave架构的其他缺点?

所有这些架构都假设一个数据集。否则你不是在谈论复制,而是在谈论分片,这是完全不同的学科。这两个讨论并不矛盾,但实际上是解决不同问题的不同问题。

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

解决您的问题:

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

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

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