前言
本人大数据专业初入大三刚刚接触并开始学习Nosql数据库原理,当然初入一些算法和原理还不是很熟练掌握,有待提升自己的编程结合能力。在此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。
一、CAP
1.CAP原理
CAP是指分布式系统中Consistency(一致性)、Availibility(可用性)、Partition tolerance(分区容错性)三个特性。
根据学习资料了解
C(一致性):是指分布式系统中所有节点都能对某个数据达成共识。具体到NoSQL系统中表示,主要关注数据的多个副本内容是否相同,多篇论文也称之为Atomic(原子性),以便和ACID中的术语相贴切。简单的来说,就是保持其他节点与该节点保存的副本文件内容一致。当然在多副本的情况下,就要在数据写入、读取等过程设计一致性策略。
A(可用性):是指系统能够对用户的操作给予反馈。这里的可用性通常是指系统的反馈的及时程度,符合大多数软件系统对用户的反馈效果。当然还有一些操作系统将不给予反馈,需要操作者自己处理查询。
P(分区容错性):也可称之为分区保护性。可以这么理解:当该集群有一节点发生故障导致信息不可传递或者部分消息丢包,此时系统分为了多个区域,该区域下该节点失能但却对该分区功能影响不大,仍可以继续工作,继续提供服务。
CAP理论认为分布式系统只能兼顾其中两个特性,既该集群只有CA、CP、AP者三种情况。兼顾CA则系统不能采用多副本,兼顾CP则必须容忍系统响应迟缓,兼顾AP则需要容忍系统内多副本数据可能出现不一致的情况。
2.CAP原理实用性
在实践中,一般会根据实际情况进行权衡,支持用户进行策略选择。CAP不仅仅可理解为用在分布式软件的设计原则上,在不同的层面、子系统或模块中,都可以根据CAP原理制定局部策略。不仅适用于大数据、Nosql领域,也适用于网站的分布式架构设计和业务流程设计等方面。
二、BASE和最终一致性
1.选择策略
根据CAP原理可知无法实现兼顾C、A、P三个原理的完美方案。因此在Nosql数据库的设计就会遇到采取策略的问题,比如稳二保一等。为了解决难题,便提出了BASE原则。
(1)Basically Available(基本可用):允许分布式系统中部分节点或功能出现故障的情况下,系统的核心部分或其他数据仍然可用。
(2)Soft-state(软状态/柔性事务): 允许系统中出现“中间状态”,在Nosql中可以体现为允许多个副本存在暂时的不一致情况。
(3)Eventual Consistency(最终一致性):允许系统的状态或者多个副本之间存在暂时的不一致,但随着时间的推移,总会变得一致。
2.最终一致
最终一致性可以看作是BASE理论的核心,即通过弱化一致性要求,实现更好的伸缩性、可靠性和响应能力。Nosql和关系型数据库在一致性上的取舍差异,也体现出二者不能像代替的特点。
总结
稳扎稳打