CAP理论与BASE理论的理解

CAP理论指出在分布式系统中,一致性、可用性和分区容错性最多只能满足两个。CP注重一致性和分区容错,牺牲可用性;AP则保证可用性和分区容错,牺牲一致性。BASE理论是CAP的延伸,它接受数据最终一致性,通过基本可用、软状态和最终一致性来保证系统的高可用性。在实际应用中,根据业务需求灵活选择CAP和BASE的平衡点。
摘要由CSDN通过智能技术生成

CAP理论与BASE理论的理解


前言

本文主要讲述关于分布式项目中对CAP理论与BASE理论的理解


一、CAP理论

CAP理论作为分布式系统的基础理论,他描述的是一个分布式系统在以下三个特性中:
一致性(Consistency)
可用性(Availability)
分区容错性(Partition tolerance)
最多只能满足两个特性

三个特性分别是什么
一致性:在分布式系统完成某些写操作后任何操作,都应该获取到该写皂搓写入的那个最新的值。各个节点应该保持一致性

可用性:可以一直正常的进行读写操作。客户端不会出现超时,操作失败或者其他异常画面。能够一直得到服务端的响应并正常访问系统

分区容错性:在分布式系统中某个节点或者网络分区出现了故障的时候,整个系统仍然能够对外提供满足可用性和一致性的服务,也就是说部分故障不考虑使用,事实在设计分布式系统时都会考虑到Bug,硬件,网络等各种不可抗原因造成的故障,所以即使某些节点出错时,但是并不影响全局的使用

总结

CAP如何取舍:
CA:优先保证一致性和可用性,放弃分区容错。这也意味着放弃系统的扩展性,系统不再是分布式的,有违背设计原理的初衷
CP:优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合,如:zookeeper,Hbase是比较常用的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等系统恢复后才能让用户访问
AP:优先保证可用性和分区容错性,放弃一致性,NoSQL中的Cassandra就是这种架构。与CP一样,放弃一致性不是说一致性就不保证了,而是逐渐变得一致

BASE理论

BASE是对CAP中一致性和可用性权衡的结果,其来源于大规模的互联网分布式系统实践的总结,是基于CAP定律逐步演化而来,其核心思想:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来达到最终一致性

BASE理论简介

  1. 基本可用(Basically Available)
  2. 软状态(Soft State)
  3. 最终一致性(Eventually Consistent)

基本可用

什么是基本可用,如果系统部分功能出现不可预知的故障,但还是能够使用,与完全正常的系统而言
4. 5. 响应时间上的损失
正常情况下,搜索引擎0.5秒将结果返回给用户,而基本可用的搜索引擎可以在2s内将结果返回给用户
6. 功能上的损失
在一些特定的情况下,为保护系统的稳定性,将部分用户引导至一个降级页面

	软状态

什么是软状态?相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种“硬状态”
软状态指:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同的节点上数据副本存在数据延时

	最终一致性

软状态不可能一直是软状态,必须要有一个时间限制,期限过后所有数据应该保持一致,这个期限区别于各个方面,如网络延时,系统负载,数据复制方案设计等因素
而实际工程实践中,最终一致性分为5种:

  1. 因果一致性
    如节点A与B存在联系,那么节点A进行了数据的更新后,节点B对数据的访问则是基于节点A的更新后的值,于此同时,节点C与A没有联系,则节点C的数据访问则没有这样的限制
  2. 读已之所写
    节点A更新数据后,访问的总是自身更新后的最新值,而不会看到旧值。
  3. 会话一致性
    会话一致性将系统访问数据的过程框定在一个会话当中,系统保证在同一个有效的会话当中实现“读已之所写”的一致性。也就是说,执行完更新操作过后,客户端能在同一个会话当中总是访问到数据的最新值
  4. 单调读一致性
    如果一个节点从系统当中获取到某一数据项的一个值之后,那么系统对于该节点的后续任何数据访问都不应该返回更旧的值
  5. 单调写一致性
    一个系统要保证来着同一个节点的写操作被顺序的执行

总结

BASE理论面向的是大型高可用可拓展的分布式系统。与传统ACID特性相关,不同于ACID的强一致性模型,BASE通过牺牲强一致性来获得可用性,并允许数据在一段时间内不一致而最终达到一致状态。
同时,在实际分布式场景中,不同业务对数据一致性的要求也不尽相同,因此ACID与BASE理论往往又会结合起来一起使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值