分布式理论

CAP和BASE

CAP

  • C一致性(Consistency)

在分布式环境下,一致性是指数据在多个副本之间能否保持一致性的特征。

在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致性的状态。

  • A可用性(Availability)

可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果 。

有限的时间:指尽可能短的时间内返回处理结果。

返回结果:指在有限的时间内返回正常的结果,不保证返回的是最新的结果。

  • P分区容错性(Partition)

如果是分布式系统,那么就会存在多个节点,就会存在节点故障或网络故障,所以P是不可避免的。

CAP不能同时满足:

分布式系统中,如果要保证C一致性,那么就要执行节点数据同步,同步就存在网络请求故障、逻辑执行耗时等问题,此时就不能保证节点的可用性了。如果要保证A可用性,系统尽可能的快,此时就不能保证网络请求一定成功、逻辑是否执行完成,此时就不能保证节点的一致性了。所以,在分布式系统中,只能同时满足AP或者CP。

BASE

  • BA(Basically Available)基本可用

牺牲高一致性,获得可用性和可靠性。

在分布式系统中出现不可预知故障时,允许损失部分可用性(注意,这里不等价于系统不可用)。

比如:

响应时间上的损失:系统故障时请求响应时间由原来的0.5s延长到1s,此时系统仍然可用。

系统功能上的缺失:在系统流量洪峰时为了保证核心功能稳定,将部分消费者引导到一个降级页面。

  • S(Soft state)软状态

软状态指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统的整体可用性,即允许系统各节点数据同步存在延时。

  • E(Eventually consistent)最终一致性

系统各节点一定时间后数据最终达到一致状态。

BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP理论逐步演化而来的。

BASE理论和传统的事务ACID特性是相反的,它完全不同于ACID的强一致性模型,在实际的分布式场景中,不同业务和组件对数据一致性要求是不同的,因此在具体的分布式系统中BASE理论和ACID特性是结合一起使用的。

一致性分类

  • 强一致性

又称线性一致性。

任何时刻,任何用户或节点都可以读到最近一次成功更新的副本数据,强一致性是程度要求最高的一致性要求。

一个集群要对外提供强一致性,某一个节点数据发生改变,要等到最新数据同步到其他所有节点后,才能对外提供服务。

保证强一致性,务必不能满足可用性。

  • 弱一致性

一旦某个更新成功,用户无法在一个确定的时间内读到这次更新的值,且即使在某个副本上读到了新的值,也不能保证在其他副本上可以读到新的值。

  • 最终一致性

一旦数据更新成功,各个副本上的数据最终达到完全一致的状态,但达到完全一致状态所需要的时间不能保证。

  • 顺序一致性

任何一次读,都能读到某个数据的最近一次写的数据。

对其他节点之前的修改是可见(已同步)且确定的,并且新的写入建立在已经达成同步的基础上。

相关推荐
每天一道题14 小时前
Kafka 是如何工作的?从 Broker、Partition、Offset 到 Consumer Group
分布式·kafka
用户14944848132016 小时前
为什么大厂很少直接用 2PC/TCC?聊聊分布式事务在真实业务里的落地套路
分布式·后端
code_slave(码畜)18 小时前
微服务架构落地:分库分表实战(下) —— 分布式主键、跨分片查询与分页聚合防坑
数据库·spring boot·分布式·spring cloud·微服务·架构·分库分表
德迅云安全-上官18 小时前
新一代智能分布式云接入:应用加速守护 TCP 业务安全与体验
分布式·tcp/ip·安全
凯凯姜18 小时前
分布式定时任务重复执行与故障恢复
分布式
Sayai20 小时前
Kafka 磁盘空间治理实战:retention 保留策略、log.dirs 在线扩容、分区跨盘迁移与不停机整体换盘
大数据·运维·分布式·kafka·消息队列
爱吃牛肉的大老虎21 小时前
Redis之分布式 Session问题
数据库·redis·分布式
阿标在干嘛21 小时前
分布式锁的“场景适配“:我们为什么在部分链路中选择了数据库乐观锁?
数据库·分布式
磐链科技1 天前
Web3区块链开发需要哪些核心技术?解析分布式网络、数字钱包与跨链交互方案
分布式·web3·区块链
爱吃火鸡面呀1 天前
PySpark 入门实战:从 DataFrame 到 SQL、DSL 与窗口函数
分布式·spark