APP下载

基于Cap理论的系统设计

2018-01-08于海水

中国科技纵横 2018年23期
关键词:系统设计模型

于海水

摘 要:本文,首先分析Cap理论概述,其次阐明Cap理论的内涵与需求,再次探讨基于Cap理论的系统设计定理与系统设计模型,旨在进一步优化系统设计水平,满足联网的计算机信息传递需求。

关键词:Cap理论;系统设计;模型

中图分类号:TP393.08 文献标识码:A 文章编号:1671-2064(2018)23-0027-02

Cap原则又称Cap定理,是指在同一个分布式系统中,一致性、可用性、分区容错性三者不可兼得。如今,随着互联网公司的全球化发展,Google、Amzon等开始尝试建立全球数据中心,部署服务。而为满足可用性,Dynamo、PNUTS等系统都采用了复制技术,这一技术的应用引发了数据一致性问题,且违背了Cap理论,现应基于Cap理论进行系统设计,有效解决全球化数据中心服务问题。

1 Cap理论概述

1.1 内涵

Cap理论内涵是在网络数据共享系统环境下其数据一致性、可用性、分区容忍性三要素不可兼得,只能同时满足三要素中其中两个。在Cap理论兴起的十几年里,很多研究者开始尝试以Cap理论为基础探究分布式系统的设计问题,甚至NoSQL运动在研究过程中也将Cap理论作为基础,用于探究对抗传统关系型数据库的设计问题。

Cap理论主张的观点非常明确,详细界定了同一个网络数据共享系统不可兼得一致性、可用性、分区容错性,即最多能够满足下述条件中两个。

(1)数据一致性(C),可做到提供一份最新的数据副本,允许所有节点访问这一数据副本,使用数据副本;(2)可用性(A),能够做到及时更新网络数据共享系统中数据,且当某一部分节点发生故障问题以后,系统集群仍可正常响应客户端读写要求;(3)分区容错性(P),允许网络分区。

Cap理论的出现给设计师提供了很好的设计思路,很多设计师开始以Cap理论为依据,参照取舍方案,设计各种各样的新系统。

1.2 需求

在分布式环境下,系统设计中的一致性、可用性、分区容错性三要素又可称为Cap需求。其中,Cap的一致性需求,是指当分布式系统接收到某一数据操作指令时,其系统中多个副本数据会保持一致,进而成功完成多个副本中数据的增、减、删操作指令。当某一个副本的操作显示失败,那么将回到一致性操作前状态,重新展开多个副本数据的增、减、改操作。在分布系统中,当多个副本数据达到一致性以后,客户在访问副本数据过程中将从中获取到最新的数据,不会呈现出不同客户端读取到不同数据的情况。例如,假设分布式环境下有N1、N2两个节点,数据V是N1和N2的共享数据,其初始值是V0。其中,N1节点所采用的数据算法是A,N2节点所采用的数据算法是B,算法A和算法B非常相似。前者,可将新值写入共享数据V,后者可读取V的值。

在存储系统保持一致性的基础上,当新的V值通过算法A写入到共享数据V以后,将变成数据V1,数据V1将通过节点N1被发送至N2,N2将及时更新新的V值。如此,B读取到的N1节点、N2节点V值将是一致的,都是V1。在网络断开环境下,N1节点通过算法A计算出的新的V值,即V1无法及时发送到N2节点,N2节点的V值仍然是初始值V0,那么B读取的N1、N2节点V值将出现不一致的情况。Cap的可用性需求,是指在分布式环境下,允许客户端访问数据。但是,系统上所有节点响应的数据并不代表是一致的。例如,系统上有N1和N2两个节点,客户端要通过系统节点获取文章评论,那么假设N1节点上数据是最新的,当客户端通过N2获取数据时,其返回的数据将缺少最新的一条。在这样一种情况下,系统仍然被认为是可用的,只有当数据响应时间超过所设定好的响应时间服务,才可认定系统不可用,无法及时反馈所要浏览的数据。Cap的分区容错性需求,是指在分布系统中将统一数据副本存储于不同地点,当系统中某些子集合节点出现故障问题时,分布系统容错性将支撑整个系统仍然进行正确响应,由此可提高系统的性能。但是,在对系统进行分区时,要切断各个分区之间的网线,保证每个网络分区都是孤立的。

由上述论述内容可知,核心系统有一致性、可用性、分区容错性三个Cap需求,在基于Cap理论进行系统设计时,要把握好Cap需求。

2 基于Cap理论的系统设计定理

2.1 异步网络模型

在系统活动增加和吞吐量逐渐上升背景下,Cap定理将显得尤为重要,基于Cap理论的系统设计异步网络模型,无统一时钟,不能同时满足消息可丢失或不丢失的对等运算一致性、可用性、分区容错性Cap需求[1]。同时,在异步网络模型时,当遇到消息被延迟的问题,任何一个算法都无法准确判断出消息延迟原因。因为,丢失可造成消息延迟,传输通道受阻也可造成消息延迟。

2.2 同步网络模型

在同步网络模型中,所有节点上时钟功能主要是计时器作用,每一个节点上时钟时间显示值可能不同,但可用于确定调度某事件后经过多长时间间隔进行另一项操作,在给定时间内接收到消息。此外,同步网络模型与异步网络模型不同,只是不能同时满足消息可丢失的对等运算可用性、一致性、分区容错性Cap需求。在Cap理论指导下Google开始尝试使用PC机搭建计算和存储平台,PC机的使用让分布式系统同时满足了可用性、分区容错性两个Cap需求。另外,在系统未出现故障情况下,分布式系统还能够提供一致性读写服务。

总之,基于Cap理论的系统设计要真正了解系統需求,在把握好系统需求前提下,合适使用Cap理论,处理好3个核心系统需求强调点。

3 基于Cap理论的系统设计模型

基于Cap理论的系统设计模型有ACID和BASE两种。在ACID模型设计中,重点是依据Cap理论完成现代关系型数据库的设计,现代关系型数据库事务正确执行依赖于原子性、一致性、隔离性、持久性四个基本元素。其中,原子性是指在包含多个操作的某一事务执行时,一旦开始执行这一事务,必须保证完成所有操作,如若某一操作没有完成,要回到事务开始状态,重新完成操作的正确执行。以A给B转账100元为案例,当开启事务之后,要么事务中的操作都发生,要么事务中的操作都不发生。如下所示:

Begin transaction

Update account set money=money-100where name=‘A;

Update account set money=money+100where name=‘B;

If Error then

Rollback

Else

Commit

在上述案例中,扣款和加款兩条语句,要么都执行,要么都不执行。

一致性,是指数据库事物执行时系统开始状态、结束状态、给定并发数等等,都是不变的、一致的[2]。以银行转账事务为例,在银行转账事务执行过程中,无论是事务执行成功,还是事务执行失败,事务结束以后ACCOUNT表中aaa和bbb的存款总额应是2000元,业务逻辑要保持一致性。而为了更好的实现一致性,在ACID模型具体设计过程中,要建立起一个数据库机制,用于约束事务执行中的数据库层面,保证其符合Check约束、唯一约束等。还有,ACID模型开发人员应处理好业务一致性问题。隔离性,是指关系型数据库中两个相同的事务会被隔离开来,事务之间不会相互影响,由此在隔离状态下提高数据库事务正确执行效率。持久性,是指当事务执行操作完成以后,事务执行结果会保存到数据库。基于上述四个基本元素基础上,ACID模型设计实现方式要依附于WAL和shadow paging两种形式,这两种技术相比较,后者更加简单,且能够在没有redo和undo的支持下提高写日志记录的开销恢复速度。shadow paging与WAL技术相比,缺点也比较明显,要以“块”为单位完成事务提交输出操作,无法满足多个事务并发执行需求。WAL技术,是在修改已经记录日志后对数据文件进行修改,即当日志记录冲刷到永久存储器后可通过日志恢复数据库方式,完成事务提交操作。整个过程中,如若发现尚未附加到数据页记录的情况,要以向前滚动恢复(REDO)方式在日志记录中重做,保证事务执行效果。

基于Cap理论的BASE模型设计,是反ACID模型,它在模型具体设计过程中不再强调一直性,而是重点考虑数据库可用性。BASE模型,基本可以支持分区失败,状态可以在一段时间不同步,只要保证数据最终一致即可。所以说,BASE模型是反ACID模型,做了可用性与一致性之间的一个取舍。BASE模型的设计要依附于按功能划分数据库与sharding碎片两种实现方式,其中,在利用sharding基本原理进行BASE模型设计时,要先根据数据库实际情况,把数据库分为多个部分。待数据库切分完毕之后,将切分好的各个部分放置于不同数据库上,有效提高单一数据库整体性能[3]。但是,在海量数据的数据库处理时,要根据这一种类型数据库表多、数据多的特点,以垂直切分法为主将一个数据库切分成多个部分。然后,再将各个部分方在sever上,由此达到最佳的BASE模型设计状态。

总之,BASE模型设计中心思想是强调可用性,在满足基本的可用性基础上,可牺牲容忍性和一致性。现阶段,BASE模型设计性能方面的潜能还是有待挖掘的,在基于Cap理论的BASE模型具体设计中,NOSQL运动丰富了BASE模型设计方案。其一,可在BASE模型设计中参照Amaze Dynamo等人提出的Key-Value存储思想,灵活选择Cap三原则,设计多样化数据库产品。其二,可根据自己项目需求,通过灵活选择Cap三原则,设计领域模型+分布式缓存+存储的BASE模型,这种BASE模型设计形式与前者相比,难度更高。但不管是Key-Value存储模型设计还是领域模型+分布式缓存+存储的BASE模型设计,其存储都可以是同步,也可以是异步。从二者不同点角度来看,第一种模型设计方式更加适用于非Java工作环境下,可用性更高。而第二种模型设计中更加灵活,但它只是一种架构解决方案,不能拿来就用。

4 结语

综上可知,在系统设计中,复制技术的运用引发了一致性问题。在一致性问题解决过程中使用Cap理论加以指导十分重要,基于Cap理论指导的系统设计要遵从异步网络模型和同步网络模型设计定理,并通过优化系统设计模型彻底解决原有系统设计中的一致性问题,创造一个良好的互联网数据中心运行环境。

参考文献

[1]黄瑜.大型数据库的关联挖掘算法设计[J].现代电子技术,2018,30(20):45-48.

[2]张青,任宏.智能人机交互通信系统设计与实现[J].现代电子技术,2018,22(20):175-178.

[3]侯荷洁.大数据环境下的军事期刊数据库建设刍议[J].国防,2018,11(09):68-71.

猜你喜欢

系统设计模型
适用于BDS-3 PPP的随机模型
p150Glued在帕金森病模型中的表达及分布
重要模型『一线三等角』
重尾非线性自回归模型自加权M-估计的渐近分布
3D打印中的模型分割与打包
FLUKA几何模型到CAD几何模型转换方法初步研究