系统架构设计理论与原则

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

(一)、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的更多相关文章

  1. Kafka知识总结及面试题

    目录 概念 Kafka基础概念 命令行 Kafka 数据存储设计 kafka在zookeeper中存储结构 生产者 生产者设计 消费者 消费者设计 面试题 kafka设计 请说明什么是Apache K ...

  2. 消息队列面试题、RabbitMQ面试题、Kafka面试题、RocketMQ面试题 (史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  3. 分布式系统设计权衡之CAP

    写在最前: 1.为什么学习并记录分布式设计理念一系列相关的东西 在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是 ...

  4. CAP定理在分布式系统设计中的最新应用

    本文翻译自国外InfoQ和计算机杂志上一篇2012年旧文,本文就有关数据同步进行了讨论,特别关注业务事务的不变性与一致性如何在分布式系统中巧妙保证,探讨了长时间运行的事务的补偿机制.这些对分布式系统设 ...

  5. 001-分布式理论-CAP定理

    一.概述 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性)这三个基本需求 ...

  6. 分布式系列文章——从ACID到CAP/BASE

    事务 事务的定义: 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务. 事务的作用: 当多个应用程序并发访问 ...

  7. 从分布式一致性谈到CAP理论、BASE理论

    问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...

  8. CAP理论(转)

    add by zhj: CAP理论可以简单的理解为一致性,可用性,可分区性,这三者没有办法同时满足.我们使用的关系型数据库,比如MySQL,Postgresql是CA类型, 而Redis,MongoD ...

  9. 分布式一致性原理—CAP

    背景 随着分布式事务的出现,传统的单机事务模型(ACID)已经无法胜任,尤其是对于一个高访问量.高并发的互联网分布式系统来说. 如果我们要求严格一致性,很可能就需要牺牲掉系统的可用性,反之亦然.但两者 ...

随机推荐

  1. HDU - 1875 畅通工程再续(最小生成树)

    d.c个小岛,通过建立桥,使其全部可达.求所有的桥的最小长度和. s.最小生成树,数据改成double就行了 c.Prim算法:cost[a][b]和cost[b][a]都得赋值. /* Prim算法 ...

  2. CA服务器的搭建

    CA (Certification Authority) 是认证机构的国际通称,它是对数字证书的申请者发放.管理.取消数字证书的机构.CA的作用是检查证书持有者身份的合法性,并签发证书(用数学方法在证 ...

  3. oracle自动表分析

    oracle 表的统计信息,跟他的执行计划很有关联 执行计划的正常是否,跟SQL的执行速度很有关系 首先讲解一下如何查看一个数据库的是否开启自动统计分析 1.查看参数:STATISTICS_LEVEL ...

  4. maven实战(5)-- settings.xml的配置

    哈哈 查看maven的官方文档最权威:http://maven.apache.org/settings.html

  5. BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组

    BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组 Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加 ...

  6. 【POJ 1061】 青蛙的约会

    [题目链接] 点击打开链接 [算法] 列出同余方程,然后用exgcd求解 [代码] #include <algorithm> #include <bitset> #includ ...

  7. bzoj4516

    后缀自动机 留个板子 upd:大概懂了 每次新加入的npRight集合肯定只有最后一个位置,那么求所有长得不一样的子串贡献就是Max-Min+1,因为Right集合只有这一个位置,所以这Max-Min ...

  8. 文件的创建,读取,写入,修改,删除---python入门

    转自:http://blog.163.com/jackylau_v/blog/static/175754040201181505158356/ 一.用Python创建一个新文件,内容是从0到9的整数, ...

  9. VC++、MFC

    VC++.MFC最好的开源项目 介绍:介绍一下用VC++/MFC写的最好的开源项目. Sourceforge.net中有许多高质量的VC++开源项目,我列举了一些可以作为VC++程序员的参考. 正文: ...

  10. css里关于浏览器的前缀

    今天遇到一个比较坑爹的 -moz-box-sizing: border-box; box-sizing' border-box;   一下子有点懵逼,第一个什么鬼??一查,原来是火狐浏览器的前缀.应该 ...