大型网站一致性的基础理论---CAP/BASE
最近在看《大型网站系统与java中间件事件》这本书,收获颇多。
分布式事务希望在多机环境下可以像单机系统那样做到强一致,这需要付出比较大的代价。而在有些场景下,接受状态并不用时刻保持一致,只要最终一直就行。
CAP(Consistency Availability Partition-Tolerance)
Consistency: 即所有的节点在同一时间读到同样的数据,这就是数据上的一致性。
Availability: 保证无论时成功还是失败,每个请求都能够收到一个反馈。这里的重点是系统一定要有响应。
Partition-Tolerance:即便系统中有部分问题或者有消息的丢失,但系统仍能够继续运行。这被称为分区容忍性。
但是,在分布式系统中并不能同时满足上面三项。
1 选择CA,放弃分区容忍性,加强一致性和可用性。这其实就是传统的单机数据库的选择。
2 选择AP,放弃一致性,追求分区容忍性及可用性。这是很多分布式系统在设计时的选择,例如很多nosql系统就是如此。
3 选择CP,放弃可用性,追求一致性和分区容忍性。这种选择下的可用性会比较低,网络的问题会直接让整个系统不可用。
从上面的分析可以看出,在分布式系统中,我们一般还是选择加强可用性和分区容忍性而牺牲一致性,而是首先满足A和P,然后看如何解决C的问题。
BASE(Basically Available Soft state Eventually consistent)
Basically Available: 基本可用,允许分区失败。
Soft state: 软状态,接受一段时间的状态不同步。
Eventually consistent: 最终一致,保证最终数据的状态时一致的。
当我们在分布式系统中选择了CAP中的A和P后,对于C,我们采用的方式策略就是保证最终一致,也就是不保证数据变化后所有节点立刻一致,但是保证它们最终是一致的。在大型网站中,为了更好地保持扩展性和可用性,一般都不会选择强一致性,而是采用最终一致的策略来实现。
大型网站一致性的基础理论---CAP/BASE的更多相关文章
- 《大型网站系统与Java中间件实践》读书笔记
分布式系统的基础知识 阿姆达尔定律 多线程交互模式 互不通信,没有交集,各自执行各自的任务和逻辑 基于共享容器(如队列)协同的多线程模式->生产者-消费者->队列 通过事件协同的多线程模式 ...
- 《大型网站系统与JAVA中间件实践》读书笔记-数据访问层
数据访问层 5.1.2数据库垂直/水平拆分的困难 随着网站业务的快速发展,数据量和访问量不断上升,数据库的压力越来越大. 更换更好的硬件(Scale Up)是一种解决方案,而且在我们能付得起硬件费用并 ...
- 《大型网站系统与Java中间件实践》读书笔记——CAP理论
分布式事务希望在多机环境下可以像单机系统那样做到强一致,这需要付出比较大的代价.而在有些场景下,接收状态并不用时刻保持一致,只要最终一致就行. CAP理论是Eric Brewer在2000年7月份的P ...
- 大型网站高可用架构之CAP原理
在讨论高可用数据服务架构之前,必须先讨论的一个话题是,为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性. CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性.数据可用 ...
- [转帖]浅谈分布式一致性与CAP/BASE/ACID理论
浅谈分布式一致性与CAP/BASE/ACID理论 https://www.cnblogs.com/zhang-qc/p/6783657.html ##转载请注明 CAP理论(98年秋提出,99年正式发 ...
- Java面试题精选,大型网站系统架构你不得不懂的10个问题
作者:JavaGuide(公众号) 下面这些问题都是一线大厂的真实面试问题,不论是对你面试还是说拓宽知识面都很有帮助.之前发过一篇8 张图读懂大型网站技术架构 可以作为不太了解大型网站系统技术架构朋友 ...
- 大型网站系统与 Java 中间件实践
http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅 ...
- 大型网站系统与Java中间件实践
大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4 ...
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
随机推荐
- 本地搭建ubuntu
1 使用VMware Workstation 安装ubuntu 14 2 进入ubuntu 命令行 ctrl+alt+f2 3 默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个 ...
- css 文本显示点点点
今天有这个需求,百度获取到这个效果,记录下来. text-overflow :ellipsis; //让截断的文字显示为点点.还有一个值是clip意思是截断不显示点点 white-space : no ...
- Gulp安装及配合组件构建前端开发一体化
原文:http://www.dbpoo.com/getting-started-with-gulp/ 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3 ...
- Spring AOP 由浅入深
(分析基于Spring的版本:version = 4.1.6.RELEASE) Spring AOP工厂: org.springframework.aop.framework.DefaultAopPr ...
- Spring Test+JUnit整合使用
在做spring相关测试时比较麻烦,如果只用JUnit测试,需要没测有初始化一下applicationContext,效率比较底下,而且也有不足之处.具体见下文 导致多次Spring容器初始化问题 根 ...
- 【转】PL/SQL Developer各个窗口的功能
源地址:http://www.codeweblog.com/pl-sql-developer%E5%90%84%E4%B8%AA%E7%AA%97%E5%8F%A3%E7%9A%84%E5%8A%9F ...
- [REP]AWS Regions and Availability Zones: the simplest explanation you will ever find around
When it comes to Amazon Web Services, there are two concepts that are extremely important and spanni ...
- 【解决】SQL Server作业中Excel Application不能访问文件
在通过SQL Server作业来实现定时任务时,出现如下错误: FullyQualifiedErrorId : ComMethodTargetInvocation使用“1”个参数调用“Add”时发生异 ...
- 在.NET下多层架构企业管理系统的开发
引言 .NET 框架是微软开发出的新一代开发平台.允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统.设备或编程语言.本文介绍的管理系统是在.NET平台下开发的,以极 ...
- http://www.cnblogs.com/nullcnb/p/3653262.html
alert(hasPrototypeProperty(person,"name")); //false 来自原型 person1.name="mywei"; a ...