【问题标题】:Multi Master vs Peer-to-Peer DB Architectures多主与对等数据库架构
【发布时间】:2018-08-10 06:13:38
【问题描述】:
我的理解是在多主数据库架构中:
- 您有 2 个以上的数据库服务器,都充当读/写主机;和
- 由某种类型的负载平衡器来平衡这些多个主服务器之间的操作;和
- 每当服务器获得读取时,它会在本地获取并返回查询的数据;和
- 每当服务器获得写入时,它会在本地写入 + 提交,然后将写入实时复制到其他服务器(这就是系统隐式需要负载平衡器的原因,以防止相同的写入进入 2+不同的主人同时);和
- 您可以进行主动/主动或主动/被动设置。使用前者,负载均衡器真正平衡了所有节点的写入。 我不太了解后者(主动/被动)
首先,如果我上面所说的任何内容不正确,请先纠正我或为我澄清!假设我或多或少达到目标:
那么 Multi-Master 和 Peer-To-Peer (P2P) 之间(真正的)区别是什么? 在 P2P 系统中,任何读取都会在本地执行并返回,而任何写入都会写入在本地,然后复制到所有对等点...他们不是同一个吗?!
【问题讨论】:
标签:
database-design
architecture
p2p
multi-master-replication
【解决方案1】:
主从
- 只有 Master 可以写入。
- 从属服务器从主服务器异步复制并仅提供读取查询。
- 为了防止数据丢失,当至少 n 个从属设备也与主设备一起写入时,可以将提交标记为已完成。
- MySql
大师 - 大师或多大师
- 任何服务器都可以读取/写入。
- 所有服务器同步复制。所以数据总是一致的。
- 可以配置为异步复制,但随后会变得类似于对等架构
- 只有两个主机存在脑裂问题。至少有 3 位主人即可解决。
- 沙发数据库
点对点
- 所有服务器都可以读取/写入。
- 服务器之间的异步复制,因此读取可以不同。 (最终一致性)
- Cassandra,弹性搜索
领导追随者
- 只有领导者提供读/写服务。
- 追随者只能异步复制。
- 可以为 N 个追随者配置同步复制,以防止领导者宕机时数据丢失。
- 卡夫卡
【解决方案2】:
它们可能看起来相似,但存在细微差别,希望这会有所帮助:
在 Active/Active 中,写入可以转到任何服务器,然后级联到集群中的其他服务器。
在主动/被动读取中,只会到达集群中的单个节点,然后级联到其他节点。
根据两种场景中的技术和实现,集群中的任何节点都可以为读取提供服务。