Update from Sync Service
This commit is contained in:
@@ -1,15 +1,77 @@
|
||||
==在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:==
|
||||
# CAP 定理
|
||||
|
||||
- **一致性(Consistency)** ==(所有节点在同一时间具有相同的数据)==
|
||||
- **可用性(Availability)** ==(保证每个请求不管成功或者失败都有响应)==
|
||||
- **分隔容忍(Partition tolerance)** ==(系统中任意信息的丢失或失败不会影响系统的继续运作)==
|
||||
> Brewer's Theorem — 分布式计算系统的基本原则
|
||||
|
||||
==CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。==
|
||||
==因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:==
|
||||
---
|
||||
|
||||
- ==CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。==
|
||||
- ==CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。==
|
||||
- ==AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。==
|
||||

|
||||
> 来自 <[http://www.runoob.com/mongodb/nosql.html](http://www.runoob.com/mongodb/nosql.html)>
|
||||
> 来自 <[http://www.runoob.com/mongodb/nosql.html](http://www.runoob.com/mongodb/nosql.html)>
|
||||
## 定理内容
|
||||
|
||||
一个分布式系统**不可能同时满足**以下三点:
|
||||
|
||||
| 特性 | 说明 |
|
||||
|------|------|
|
||||
| **一致性 (Consistency)** | 所有节点在同一时间具有相同的数据 |
|
||||
| **可用性 (Availability)** | 保证每个请求都有响应(成功或失败) |
|
||||
| **分区容忍 (Partition Tolerance)** | 系统中任意信息丢失或失败不影响系统继续运行 |
|
||||
|
||||
---
|
||||
|
||||
## CAP 三角
|
||||
|
||||
```
|
||||
C
|
||||
/\
|
||||
/ \
|
||||
/ \
|
||||
/ P \
|
||||
/________\
|
||||
A
|
||||
```
|
||||
|
||||
**核心**:分布式系统最多只能同时满足 **两个** 特性。
|
||||
|
||||
---
|
||||
|
||||
## 三类系统
|
||||
|
||||
### CA — 一致性 + 可用性
|
||||
|
||||
- 单点集群
|
||||
- 不具备分区容错能力
|
||||
- 例子:传统 RDBMS(MySQL、PostgreSQL)
|
||||
|
||||
### CP — 一致性 + 分区容忍
|
||||
|
||||
- 牺牲可用性
|
||||
- 网络分区时可能不可用
|
||||
- 例子:MongoDB、HBase、Redis
|
||||
|
||||
### AP — 可用性 + 分区容忍
|
||||
|
||||
- 牺牲一致性
|
||||
- 分区期间保持可用,数据可能不一致
|
||||
- 例子:Cassandra、DynamoDB
|
||||
|
||||
---
|
||||
|
||||
## 选择指南
|
||||
|
||||
| 场景 | 选择 |
|
||||
|------|------|
|
||||
| 金融交易、银行系统 | CP(强一致性) |
|
||||
| 社交媒体、新闻 Feed | AP(高可用) |
|
||||
| 需要强一致的传统业务 | MySQL/PostgreSQL |
|
||||
|
||||
---
|
||||
|
||||
## NoSQL 数据库分类
|
||||
|
||||
| 类型 | 数据库 |
|
||||
|------|--------|
|
||||
| **CA** | 传统关系型数据库 |
|
||||
| **CP** | MongoDB、HBase、Redis |
|
||||
| **AP** | Cassandra、DynamoDB、CouchDB |
|
||||
|
||||
---
|
||||
|
||||
> 参考:[NoSQL 简介 - 菜鸟教程](http://www.runoob.com/mongodb/nosql.html)
|
||||
|
||||
Reference in New Issue
Block a user