码迷,mamicode.com
首页 > 其他好文 > 详细

系统设计摘录CAP

时间:2015-07-08 18:39:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

系统架构设计理论与原则

这里主要介绍几种常见的架构设计理论和原则,常见于大中型互联系统架构设计。

(一)、CAP理论

1、什么是CAP

所谓CAP,即一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。

(1)、Consistency(一致性):更新操作成功并返回客户端完成后,分布式的所有节点在同一时间的数据完全一致(All nodes see the same data at the same time)。

这里的一致性,一定要和传统的RDBMS中的事务一致性区分开。

在传统的RDBMS中,事务具有ACID4个属性,即原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durable)。

ACID是关系型数据库的最基本原则,遵循ACID原则强调一致性,对成本要求很高,对性能影响很大。

a、原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。

b、一致性(Consistency):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。

c、隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。

d、持久性(Durability):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

MIT的Gilbert和Lynch在证明CAP的过程中改变了Consistency的概念,也就是将Consistency转化为Atomic。Gilbert认为这里所说的Consistency其实就是数据库系统中提到的ACID的另一种表述:一个用户请求要么成功、要么失败,不能处于中间状态(Atomic);一旦一个事务完成,将来的所有事务都必须基于这个完成后的状态(Consistent);未完成的事务不会互相影响(Isolated);一旦一个事务完成,就是持久的(Durable)。

(2)、Availability(可用性):读和写操作都能成功(Reads and writes always succeed)。

可用性是说服务能一直保证是可用的状态,当用户发出一个请求,服务能在有限时间内返回结果,所有的请求都能“成功”拿到对应的响应。

(3)、Partition Tolerance(分区容错性):在出现网络故障导致分布式节点间不能通信时,系统能否继续服务(The system continues to operate despite arbitrary message loss or failure of part of the system)。

直观感受就是系统中节点crash或者网络分片都不应该导致一个分布式系统停止服务。

系统设计摘录CAP

标签:

原文地址:http://www.cnblogs.com/wcLT/p/4630766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!