Coursera 笔记

Module 01 · Introducing NoSQL

CAP TheoremCAP 定理概述

Coursera ↗

欢迎观看关于 CAP 定理 的介绍视频。通过本视频,您将能够:

  • 定义 CAP 定理,
  • 描述 CAP 定理 的特点,
  • 了解 CAP 定理 的历史及其在分布式系统中的相关性。

 CAP 定理的背景

在 2000 年代初期,Hadoop 架构作为首个开源分布式架构被创建,用于存储和处理大规模数据。随着越来越多的服务被开发出来,需要将数据库分布式存储和处理。

当时,许多企业要求服务不仅能在全球多个地区保持活跃和可访问,而且要求服务始终保持可用性。而依赖数据一致性的关系型数据库在此情境下似乎无法实现 分布式系统中的可用性,这正是 CAP 定理 所揭示的内容。


 CAP 定理的定义

CAP 定理(也叫 Brewer 定理)由 Eric A. Brewer 教授在 2000 年提出,后来由麻省理工学院(MIT)的 Seth Gilbert 和 Nancy Lynch 在 2002 年进行修订。该定理指出,分布式系统 设计、实现和部署时,存在三个核心要求:

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容忍性(Partition Tolerance)

CAP 定理的关键点

分布式系统只能同时保证以下 三个 特性中的 两个,无法同时满足 三个 要求。

这三个特性分别意味着什么?

  1. 一致性(Consistency):
    • 系统中的所有节点都能看到相同的数据。换句话说,所有节点都必须保证在同一时刻显示相同的数据。
  2. 可用性(Availability):
    • 每个请求都能获得响应,无论成功还是失败。即使部分节点无法访问,系统仍能提供服务。
  3. 分区容忍性(Partition Tolerance):
    • 当发生数据丢失或网络故障时,系统仍然能够正常运行。分区容忍性意味着即使某些节点之间的连接中断,系统依然能够继续运行。

 分区容忍性详解

在分布式系统中,分区是指通信中断,即节点之间的连接丢失或延迟。分区容忍性要求系统在发生通信故障时依然能够继续运行。

例如,在一个由 8 个节点组成的集群中,如果发生网络分区,所有节点之间的通信会中断,最终集群被分成两个 4 节点的子集群。等到网络恢复后,两个子集群之间的一致性会被重新同步。

在分布式系统中,分区容忍性是不可避免的,因此它成为 NoSQL 等原生分布式系统的基本特性。


 CAP 定理与 NoSQL 数据库

在 NoSQL 数据库中,分区容忍性是必需的,因此系统可以选择:

  • 一致性和分区容忍性(CP),或
  • 可用性和分区容忍性(AP)。

举例来说,像 MongoDB 和 Cassandra 这样的 NoSQL 系统可以根据 CAP 定理 分类:

  • MongoDB 选择 一致性 作为主要设计目标。
  • Apache Cassandra 选择 可用性 作为主要设计目标。

这并不意味着 MongoDB 就无法提供可用性,或者 Cassandra 无法实现一致性。它们只是在设计时优先保证一致性(对于 MongoDB)或可用性(对于 Cassandra),而其他方面是可调节的。


 总结

通过本视频,您学到了:

  • CAP 定理 可以用于对 NoSQL 数据库进行分类。
  • NoSQL 数据库在一致性和可用性之间进行选择。
  • 分区容忍性 是 NoSQL 数据库的基本特性。