CAP原理(CAP Theorem)
在分布式数据系统中,CAP原理中,有三个要素:
一致性(Consistency)可用性(Availability)分区容忍性(Partition tolerance)
CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡。对于大多数web应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向。
当然,牺牲一致性,并不是完全不管数据的一致性,否则数据是混乱的,那么系统可用性再高分布式再好也没有了价值。牺牲一致性,只是不再要求关系型数据库中的强一致性,而是只要系统能达到最终一致性即可,考虑到客户体验,这个最终一致的时间窗口,要尽可能的对用户透明,也就是需要保障“用户感知到的一致性”。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的,“用户感知到的一致性”的时间窗口则取决于数据复制到一致状态的时间。 最终一致性(eventually consistent) 对于一致性,可以分为从客户端和服务端两个不同的视角。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。 从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。 最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为: 因果一致性。如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将返回更新后的值,且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。“读己之所写(read-your-writes)”一致性。当进程A自己更新一个数据项之后,它总是访问到更新过的值,绝不会看到旧值。这是因果一致性模型的一个特例。会话(Session)一致性。这是上一个模型的实用版本,它把访问存储系统的进程放到会话的上下文中。只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统的保证不会延续到新的会话。单调(Monotonic)读一致性。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。单调写一致性。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性,就非常难以编程了。上述最终一致性的不同方式可以进行组合,例如单调读一致性和读己之所写一致性就可以组合实现。并且从实践的角度来看,这两者的组合,读取自己更新的数据,和一旦读取到最新的版本不会再读取旧版本,对于此架构上的程序开发来说,会少很多额外的烦恼。 从服务端角度,如何尽快将更新后的数据分布到整个系统,降低达到最终一致性的时间窗口,是提高系统的可用度和用户体验非常重要的方面。
对于分布式数据系统: N — 数据复制的份数 W — 更新数据是需要保证写完成的节点数 R — 读取数据的时候需要读取的节点数如果W+R>N,写的节点和读的节点重叠,则是强一致性。例如对于典型的一主一备同步复制的关系型数据库,N=2,W=2,R=1,则不管读的是主库还是备库的数据,都是一致的。 如果W+R<=N,则是弱一致性。例如对于一主一备异步复制的关系型数据库,N=2,W=1,R=1,则如果读的是备库,就可能无法读取主库已经更新过的数据,所以是弱一致性。 对于分布式系统,为了保证高可用性,一般设置N>=3。不同的N,W,R组合,是在可用性和一致性之间取一个平衡,以适应不同的应用场景。 如果N=W,R=1,任何一个写节点失效,都会导致写失败,因此可用性会降低,但是由于数据分布的N个节点是同步写入的,因此可以保证强一致性。如果N=R,W=1,只需要一个节点写入成功即可,写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据,因此是弱一致性。这种情况下,如果W<(N+1)/2,并且写入的节点不重叠的话,则会存在写冲突.
分享到:
相关推荐
《VideoCap:摄像头预览与参数调整利器》 在当今数字化时代,摄像头已经无处不在,无论是电脑内置摄像头还是外接设备,它们都是我们日常生活、工作和娱乐的重要组成部分。VideoCap是一款专为摄像头预览和参数调整...
加密解密分析工具CAP是一款专为密码学爱好者和专业人士设计的实用软件,它主要用于解析和理解各种常见的加密算法。在信息安全领域,加密技术是保护数据隐私和网络安全的关键手段,而CAP工具则为研究和理解这些算法...
CAP 以协同的组织、人员、状态、结果的行为过程为基础,全新构造工作、业务信息化 的模型,与专业化软件的计算能力、专业模型能力相配合而不是竞争,成为基础业务活动的 入口和工作场所,是对业务场景的信息化,...
CAP4(Cryptographic Analysis Program)是一款专门用于进行加密分析的软件工具,它可能被设计用于检测、评估和破解各种加密算法的安全性。下面将详细探讨密码学的基础概念、CAP4可能的功能以及与之相关的文件内容。...
IC-CAP,全称为Integrated Circuit Characterization and Analysis Program,是一款广泛应用于半导体行业的集成电路特性分析和评估软件。这个压缩包文件“IC-CAP 2016与 IC-CAP 2018安装PJ文件.rar”包含了IC-CAP的...
《MicroCap v9.0.0.0 Pro:电子电路仿真与设计的高效工具》 MicroCap是一款在电子工程领域广泛应用的专业级软件,其最新版本MicroCap v9.0.0.0 Pro提供了全面的电路设计和仿真功能,极大地提升了工程师们在电路设计...
IC-CAP(Integrated Circuit Characterization and Analysis Program)是一款专门用于集成电路(IC)特性分析与模型提取的软件工具,由安捷伦公司开发。本教程主要面向技术人员和工程师,旨在介绍使用IC-CAP进行参数...
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o] Error 1 make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2 make: *** [all] Error 2 解决办法: 通过...
### CAP或PCAP文件结构详解 CAP或PCAP文件,是一种广泛用于网络数据包捕获的标准文件格式。这种格式最初由Network Associates为他们的Sniffer Pro产品设计,后来被Wireshark等众多网络分析工具采纳。CAP和PCAP文件...
标题 "easier cap驱动程序" 涉及到的是一个特定的硬件设备驱动程序,用于改变USB设备在操作系统中的识别名称。在这个情况下,驱动程序在安装前被识别为"usbtv007",而安装后则变为"OEM Capture"。这意味着驱动程序起...
《Micro-Cap v10.04:一体化电路设计与模拟仿真软件详解》 Micro-Cap v10.04是一款强大的电路设计与混合信号模拟仿真工具,它为电子工程师提供了一个集成化的环境,用于创建电路原理图并进行精确的性能分析。这款...
CAP437-2021航空安全规章信息 CAP437-2021是英国民航局(Civil Aviation Authority,CAA)发布的一份关于离岸直升机着陆区的安全规章。该规章旨在确保离岸油气平台、船只和其他设施的直升机着陆区符合安全标准。该...
Ping 命令报错分析 - cap_set_proc 错误解决方案 Linux 权限控制机制中, capability 是一种基于进程的权限控制机制,它可以将传统的基于用户的权限控制机制进行细粒度的控制。Capability 机制可以控制进程的某些...
bgp-con-nexthop-before.cap bgp-con.cap bgp-in.cap bgp-no-nei.cap bgp-simple.cap DHCP Client.cap dot1x-error.cap dot1x-login.cap dot1x-logina.cap eapol or eap or nbns-dot1x.cap gmrp.cap gvrp.cap h3...
【标题】"DSPF28335的CAP代码"涉及的是TI公司的TMS320F28335数字信号处理器上的一种特定功能——CAP(Comparator阿ctive Output,比较器活动输出)模块的源代码实现。该处理器是针对工业自动化、电机控制和电力电子...
Videocap是一款针对个人计算机使用的摄像头录像软件,其主要功能是让用户能够轻松地通过电脑上的摄像头,包括内置摄像头、移动摄像设备以及USB外接摄像头,捕捉和记录视频内容。这款软件小巧精悍,操作简便,同时...
《深入解析:cap_Test抓包工具》 在IT行业中,数据包分析是理解网络通信、调试应用程序和优化网络性能的关键步骤。cap_Test抓包工具,作为一款专为硬件和软件开发者设计的专业工具,其功能强大,操作简便,无论...
Micro-Cap是一款由Spectrum Software开发的电子电路分析程序。从内容来看,这份手册是Micro-Cap的用户指南,提供了从基础操作到高级分析的全面指导。手册涵盖了从创建和编辑简单电路、进行瞬态分析到交流分析等众多...
经典密码学CAP4
在本文中,我们将深入探讨如何在LPC2103微控制器上实现MAT0.0 PWM输出,并通过CAP1.0进行捕获。LPC2103是NXP半导体公司生产的一款基于ARM7TDMI-S内核的微控制器,具有丰富的外设接口和灵活的配置选项,适用于各种...