【MySQL】什么是CAP定理(CAP theorem)? [ 新手入门 ]
CAP定理又称CAP原则是一个衡量系统设计的准则。CAP定理指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),三者不可兼得。
● C(一致性):所有节点在同一时间的数据完全一致;
● A(可用性):服务一直可用,每个请求都能接收到一个响应,无论响应成功或失败;
● P(分区容错性):分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。任何分布式系统在可用性、一致性、分区容错性方面,不能兼得,最多只能得其二。因此,任何分布式系统的设计只是在三者中的不同取舍而已。
所以,就有了3个分类:CA数据库,CP数据库和AP数据库。传统的关系型数据库在功能支持上通常很宽泛,从简单的键值查询,到复杂得多表联合查询再到事务机制的支持。而与之不同的是,NoSQL系统通常注重性能和扩展性,而非事务机制,因为事务就是强一致性的体现。
● CA数据库满足数据的一致性和高可用性,但没有可扩展性,不考虑分区容忍性,对应的数据库就是普通的关系型数据库RDBMS,例如Oracle、MySQL的单节点,满足数据的一致性和高可用性。单点数据库是符合这种架构的,例如超市收银系统、图书管理系统。
● CP数据库考虑的是一致性和分区容错性,这种数据库对分布式系统内的通信要求比较高,因为要保持数据的一致性,需要做大量的交互,如Oracle RAC、Sybase集群。虽然Oracle RAC具备一定的扩展性,但当节点达到一定数目时,性能(即可用性)就会下降很快,并且节点之间的网络开销还在,需要实时同步各节点之间的数据。CP数据库通常性能不是特别高,例如火车售票系统。
● AP数据库考虑的是实用性和分区容忍性,即外部访问数据,可以更快地得到回应,例如博客系统。这时候,数据的一致性就可能得不到满足或者对一致性要求低一些,各节点之间的数据同步没有那么快,但能保存数据的最终一致性。比如一个数据,可能外部一个进程在改写这个数据,同时另一个进程在读这个数据,此时,数据显现是不一致的。但是有一点,就是数据库会满足一个最终一致性的概念,即过程可能是不一致的,但是到某一个终点,数据就会一致起来。当前热炒的NoSQL大多是典型的AP类型数据库。
共 0 条回复
PHP学院的中学生
最后登录:2024-09-23
在线时长:168小时13分
- 粉丝29
- 金钱4725
- 威望30
- 积分6705