副本、一致性与CAP定理
· 阅读需 2 分钟
为什么副本和一致性?
大数据集 ⟶ 扩展 ⟶ 数据分片/分区 ⟶ 1) 数据访问路由 2) 可用性副本 ⟶ 一致性挑战
CAP定理的一致性权衡
- 一致性:所有节点在同一时间看到相同的数据
- 可用性:保证每个请求都能收到关于其成功或失败的响应
- 分区容忍性:系统在任意消息丢失或部分系统故障的情况下继续运行
任何网络共享数据系统只能拥有三种理想属性中的两种。
- 关系数据库管理系统(rDBMS)倾向于CP ⟶ ACID
- NoSQL倾向于AP ⟶ BASE
“2 of 3”是误导性的
12年后,作者埃里克·布鲁尔(Eric Brewer)表示“2 of 3”是误导性的,因为
- 分区是罕见的,当系统没有分区时,几乎没有理由放弃C或A。
- 选择实际上可以在同一系统内的多个地方以非常细的粒度应用。
- 选择不是二元的,而是有一定程度的。
因此,当没有分区(节点正确连接)时,这种情况经常发生,我们应该同时拥有AC。当出现分区时,处理它们的步骤如下:
- 检测分区的开始,
- 进入可能限制某些操作的显式分区模式,并
- 当通信恢复时启动分区恢复(补偿错误)。