根据 cap 定理 CP 或 AP,mariadb galera 集群位于何处,基于其工作原理的简要说明。
1 回答
一致性——为了处理“关键读取”问题,Galera 需要一点帮助。见http://mysql.rjweb.org/doc.php/galera#critical_reads
否则,可以说 Galera 可以在“任何”单点故障中幸存下来。
Galera 通常部署在 3 个节点中,在 3 个地理位置中的每个节点中部署一个。这意味着没有任何一台机器故障、数据中心故障、地震、龙卷风、网络中断等可以一次取出多个节点。其他两个节点(无论哪两个节点存活并仍然相互通信)将声明它们“有一个仲裁”并继续接受写入并传递读取。此外,“脑裂”不是“可能的”;这就是阻止任何双主服务器尝试的原因,即使在监控任何 SPOF 后仍然存在。
如果第三个节点或网络被修复,Cluster 会根据需要对数据进行修补,使 3 个节点再次拥有相同的数据。
当然,这与 CAP 的定义并不完全相同,但对于计算机集群来说是一个合理的目标。
它是如何工作的(简而言之)......每个节点都与其他节点通信。它仅在COMMIT
交易期间执行此操作。(因此,即使分布在 WAN 上,它也是相当有效的,这需要在自然灾害中幸存下来。)COMMIT
对其他节点说:“我将要写这篇文章;可以吗?” 没有真正写,他们检查了 Galera 的魔法酱,看它是否会成功。一旦每个人都说“是”,则COMMIT
向客户返回成功。(这给了你一个“关键”阅读问题的提示。)