CAP定理-为什么Mysql是CA

问题描述

按照CAP

一致性-所有节点都提供了相同的数据

可用性是指即使群集中的某个节点也可以访问群集的能力 群集出现故障。

分区容限意味着群集甚至可以继续运行 如果两个节点之间存在“分区”(通信中断) (两个节点都在运行,但无法通信)。

但是Mysql的默认行为是主从或主从。

所以,主奴隶

  • 没有一致性,因为会发生从属延迟,因此从从属读取的数据不一致。
  • 没有可用性,因为如果没有DBA的干预,从服务器就无法成为主服务器。

所以,大师级大师

  • 没有一致性,因为会发生从属延迟,因此从从属读取的数据不一致。
  • 没有可用性,因为在没有DBA干预的情况下,从/其他主服务器无法成为主服务器。
  • 它的部分容忍能力是因为它们在网络故障的情况下都能正常工作。

我错过了什么吗?

解决方法

在引入节点以平衡集群设计的帮助下,MySQL数据库引擎达到了CAP定理。 因此,当您有两(2)个节点时,如果两台服务器之间存在网络问题,则群集将分为两个分区。每个成员将占成员总数(1/2)的50%。这就是为什么所有分区都不会达到法定人数,并且所有分区都不允许查询的原因。因此,要获得完全的分区容限,群集设计至少需要添加第三个节点,以便您的数据库达到针对一个故障的分区容限。 enter image description here

因此,即使两个节点之间的“ 分区”(通信中断),集群仍继续起作用,但是无法通信),因为一个分区仍具有仲裁(2/3 = 66%,大于50%)。

,

首先要指出的是,CAP定理适用于分布式数据库,应该用这些术语来阅读。

根据维基百科,现在进入CAP定理:

  • 一致性:每次读取都会收到最新的写入或错误
  • 可用性:每个请求都会收到一个(非错误)响应,但不能保证它包含最新的写入信息
  • 分区容限:尽管节点之间的网络丢弃(或延迟了)任意数量的消息,系统仍继续运行。

因此,当您说MySql的默认行为是主从时,则意味着 master slave 节点只是主节点和辅助节点,并且一次仅是单节点,即使用主节点来处理任何用户请求。因此,此处的分区容限已经受到损害。

但是数据库仍然是一致的,因为所有请求(读/写)都将发送到主节点,并且用户将始终获得相同的一致数据。

并且数据库可用,因为当所有请求都到达同一主节点时,所有请求都会收到响应。

因此默认情况下 CA数据库中的Mysql。从属滞后不会影响一致性可用性

MySql还有另一种可能性,即通过一些配置调整可以使 CP数据库可用性受到损害。这将是多个主节点的分布,并通过它们之间的网络保持同步。在这种情况下,如果其中任何一个网络或分区中断,则首选 Consitency ,这意味着所有 read 请求将获得相同的数据,没有损坏,因为 Availability 用于写入请求的邮件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...