分布式数据库CAP原理学习分享

一、CAP定理的引入

在过去,因为信息处理的业务量不大,所以信息系统使用单机版数据库已足够满足应用需求,该架构简单描述为:一台服务器或小型机部署数据库系统软件,一台磁盘阵列上作为存储系统用来存储数据库系统产生的格式化的数据文件,为了保障高可用能力,一般会部署两台数据库服务器,见以下示意图:
分布式数据库CAP原理学习分享_第1张图片
单机版数据库系统在两台服务器上部署两套,一套为主数据库系统,另一个为备数据库系统,备数据库系统不工作,上层的应用系统通过主数据库系统来访问和处理数据,主备两套数据库系统之间通过心跳检测技术探测对方的工作状态,一旦主数据库系统不工作,那么备数据库系统立刻启动,替代主数据库系统对应用系统提供数据库服务。

随着大数据时代、移动互联网业务的兴起,信息系统要处理的业务量呈现爆炸式的增长,主要体现在数据处理业务的数量增大,存储的数据量增多以及处理性能要求增快,传统单机版的数据库系统就很难支撑如此之大的业务量了,出现了瓶颈,所以分布式数据库技术就出现了,它巧妙的把单机版的数据库系统通过软件组成一套集群,把存储的数据按照一定的规则打撒到集群中各个数据库系统来存储,同时上层的应用提交过来的业务处理请求也分散到集群的各个数据库系统上来处理,那么就可以承载更大的数据量存储和更多的业务处理,并且能通过增加数据库节点数量来提升数据库集群的处理能力,满足未来业务增长的需求,如下图所示,由多台数据库系统组成集群,来支撑更大的业务量和更多的存储量。

分布式数据库CAP原理学习分享_第2张图片
但是分布式数据库系统的每个数据库节点上所存储的只是完整数据的一部分,如果这台机器不工作了或者磁盘坏掉,就会出现不能提供服务或者数据丢失的情况,因此,为了保障系统的可用性和容错能力,对每节点存储的数据要在集群两外两台节点上有相同的副本存储,这样就有效的保障了数据的安全,但相比单机系统所带来的问题就是维护的数据副本量至少增多了2份,数据写入主本之后需要向副本同步来保持一致性,但网络也可能会出现故障,出现了故障数据不能向副本同步,上层的应用能不能访问数据是一个需要考虑的问题,因为,对分布式系统产生了一个CAP原理来合理的解释并做出了响应的规则约定。

二、CAP原理的解释

1、CAP的定义

CAP是“一致性(Consistency)、可用性(Availability)以及分区容忍性(Partition Tolerance)”的缩写,接下来就来详细的阐述一下CAP原理。

1)C 即一致性(Consistency)
一致性就是要求分布式系统要保障,一旦数据写入到分布式存储系统之后,所有访问数据的请求不管是访问分布式存储的那个节点上,查到到该写入的数据都是一致的,不能出现3个副本中有的副本有该条数据,有的副本没有该条数据(插入问题),更不能是有的副本该条数据和另外一个副本该条数据是不一样的(更新问题)。

2)A 即可用性(Availability)
可用性就是要求分布式系统要保障,一旦数据写入到分布式存储系统之后,所有访问该数据的请求都可以正常响应,不管该数据能不能查到,又或者该条数据查出来的一不一致,不能出现查询该数据时出现长期等待或者报错的发生。

3)P 即分区容忍性 (Partition Tolerance)
分区容忍性时要求分布式系统要保障,一旦数据写入到分布式存储系统的主本文件后,因为网络的的问题无法同步到副本的时候,系统依然能够对外提供服务,网络在分布式系统来讲是不敢绝对保障的,如果因为网络问题,导致写入数据无法向副本同步,这时候就是分区的情况出现,但网络的绝对的可靠从科学角度上来讲是无法做到的,因此,所有分布式系统必须是满足“P”的存在,不然就只能使用单机系统来解决,那就不是分布式系统了。

因此,综上所述,分布式系统基本上所有的都必须满足“P”,在“A”和“C”之间来选择,要么是AP,要么是CP

2、AP的解释

首先分布式系统是允许P的存在,当分布式集群中网络故障导致数据不一致,那么整个分布式系统可以对外提供服务,当一个数据写入到主本的时候,因为网络问题未能向副本及时同步,那么这条数据在主副本之间出现了不一致的情况,但A的要求就是保证可用性为前提,虽然数据不一致,当查询该条数据的请求过来时,访问主本能查到数据,访问副本不能查到数据,这种情况都是正常状态。

当前,互联网电商的购物车后台的数据库就是AP原则的数据库,为了满足高可用性能,购物车里面的数据有时候能够查到,有时候不能查到都正常,只要最后结账时的账单能够一致就可以了(这就给足了数据短暂不一致的时间,但大幅提高的性能)。

3、CP的解释

同样,分布式系统是允许P的存在,当分布式集群中网络故障导致数据不一致,那么整个分布式系统可以对外提供服务,当一个数据写入到主本的时候,因为网络问题未能向副本及时同步,那么这条数据在主副本之间出现了不一致的情况,但C的要求就是保证该条数据必须一致才能够访问,所有在该条数据没有完全在3个副本完全同步时,该条数据是不允许被访问到的,这就要求写入该条数据必须要等3个副本都必须完全写入成功后才能够被访问,这就造成数据写入性能要比AP的差,但相对换来的是数据的高度一致。

三、CAP原理的总结

总上所述,CAP原理定义的就是3个原则在分布式存储系统中只能满足其中两个,无法全部都满足,因为要求网络绝对的可靠是不可能的,因此,所有的分布式系统都必须满足P,然后AP和CP之间做出抉择,是保性能牺牲一致(AP),或者是保一致牺牲性能(CP)要根据实际的应用场景来确定。

你可能感兴趣的:(分布式技术)