分布式事务(二)—— CAP和Base理论

系列目录:

  • 《分布式事务(一)—— 事务的基本概念》

一、CAP理论

cap理论是分布式系统的理论基石

1、Consistency[一致性]

  即操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性的问题是并发访问时更新过的数据如何获取的问题。从服务端来说,则是更新如何复制分布到整个系统,以保持数据的一致。

2、Availability[可用性]

  可用性是指读取和写入操作一致能工成功,即服务一直可用,而且是正常的响应时间。好的可用性指系统能够很好的为用户提供服务,不出现用户操作失败或者访问超时等用户体验不好的情况。

3、Partition Tolerance[分区容错性]

  即分布式系统在遇到某个节点分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,但是看上去却是一个可以正常运转的整体。比如现在分布式系统中某一个或者几个机器宕机了,其他剩下的机器还是能够正常运转并满足系统需求,对于用户而言并没有什么体验上的影响。

如果你是一个分布式系统,那么你就必须要满足分区送错性,因为分布式系统就是为了解决高并发和提高系统的可用性,要不然就不用将系统做成分布式系统了。

二、CAP的取舍策略

  CAP三个特性只能满足其中两个,那么取舍策略就有三种:
在这里插入图片描述

  • CA:如果不需要P,则一致性和可用性是可以保证的。但是放弃P的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限,没有办法部署子节点,这是违背分布式系统的设计初衷的。
  • CP:保证一致性和分区容错性,放弃可用性。相当于每个请求在服务器之间保持强一致,而P(分区容错)也会导致同步时间的延长(也就是需要等待数据同步完成才能正常访问系统),一旦发生网络故障或者消息丢失的情况,就要牺牲用户体验,等到所有数据全部一致后再让用户访问系统。设计成CP的系统其实不少,最典型的就是分布式数据库,如Redis、HBase等。对于这些分布式数据库来说,数据的一致性是基本的要求,因为如果连这个都打不到,那么直接采用关系型数据库就好了,没必要再浪费资源部署分布式数据库。
  • AP:高可用并容许分区,则要放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据库提供服务,而这样会导致全局数据的不一致。

三、Base理论

  分布式系统中的一致性是弱一致性,单数据库mysql的一致性是强一致性

  Base是Basically Available(基本可用)、Soft status(软状态)和Eventually consistent(最终一致性)三个短语的缩写。Base理论对于CAP中一致性和可用性权衡的结果。其来源对于大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的。
  Base理论的核心思想是:即使没有办法做到强一致,但是可以做到最终一致。

Base理论的三要素

1、基本可用

  基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性,注意:这里并不是说系统不可用,比如:

  • (1) 响应时间上的损失:正常情况下,一个在线搜索需要在0.5秒内返回给用户响应的查询结果。但由于出现故障,查询结果的响应时间增加了1~2秒
  • (2) 系统功能上的损失:正常情况下,在一个电商网站上进行购物的时候,消费者几乎能顺利完成每一笔订单,但是在一些节日大促购物高分期的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一些降级页面。

2、软状态

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

3、最终一致性

  最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终能达到一个一致的状态。因此,最终一致的本质需要系统保证最终数据能够达到一致,而不需要实时保持数据的强一致。

  总体来说,Base理论面向的是大型高可用可扩展的系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致模型,而是牺牲强一致来获得可用性,并允许数据在一段时间内不一致,但最终达到一致状态。同时,在实际的分布式场景中,不同业务单元和组建对数据一致性的要求不同,因此在具体的分布式系统架构设计的过程中ACID特性和Base理论往往又会结合在一起。

一句话:CAP就是要告诉你:要想同时满足C、A、P就是做梦,Base才是你最终的归宿


后记
  个人总结,欢迎转载、评论、批评指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux------进程优先级与进程切换

目录 一、进程优先级 二、优先级与权限的区别 三、优先级的查看 四、进程优先级修改 五、进程切换 六、linux2.6内核调度队列与调度原理 一、进程优先级 首先我们得知道一个进程总是需要排队的,他一会在运行队列中排队等待运行,一会在设备的等待队…

spring-security 默认登录页面

Spring Security是一个强大且高度可定制的身份验证和访问控制框架。天然与Spring整合,易扩展,引入jar包就可以用了,在boot自动装载下,不需要任何配置就可以控制资源访问。那么默认登录页是如何生产的呢? 版本信息 内…

STM32学习笔记(六) —— 配置系统时钟

1.时钟树 从图中可以看出一共有四个时钟来源,分别是内部高速时钟、内部低速时钟、外部高速时钟接口、外部低速时钟接口,这些时钟源经过内部的倍频分频后提供给各外设使用。其中HSE与LSE需要由外部提供,可以是外部时钟直接输入,也可…

防御保护---防火墙双机热备直路部署(上下三层接口)

防御保护---防火墙双机热备直路部署(上下三层接口) 一、根据网段划分配置IP地址和安全区域二、配置动态路由OSPF三、配置双机热备四、测试:4.1 测试一:查看状态和路由器路由表(双机热备)前后对比4.2 测试二…

「数据结构」3.ArrayList

🎇个人主页:Ice_Sugar_7 🎇所属专栏:Java数据结构 🎇**欢迎点赞收藏加关注哦!* ArrayList 🍉ArrayList的构造🍉add方法🍌扩容机制🍌重要结论 🍉其…

网络协议与攻击模拟_13缓存DNS与DNS报文

一、缓存DNS服务器 1、引入缓存DNS 缓存域名服务器需要与外网连接 一台windows作为Client 一台Windows server作为缓存DNS 桥接网络 DHCP自动获取IP地址 Client 192.168.183.133 Windows server 192.168.183.138 ipconfig /all查看下Client的DNS,设置让Cl…

Unity | 渡鸦避难所-9 | 角色名字及血条等信息

1 效果预览 游戏中角色的名字和血条是非常重要的元素,它们可以帮助玩家了解角色的身份和状态。在 Unity 中,可以使用 UGUI 来实现这些功能 2 实现方案 1 画布 (Canvas) 画布 (Canvas) 组件表示进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加…

【异常处理】word或ppt打开后没反应或闪退,或者报错由安全模式打开

折腾了2个小时,可算解决了,办法是在【控制面板】中右击,选择【更改】 选择联机修复,然后耐心等待,最后再打开就没问题了。

DevOps落地笔记-08|技术债务:勤借勤还,再借不难

上一讲主要介绍了如何有效管理第三方组件的实际案例,目的是让你意识到依赖组件的质量也会影响到软件的质量。前面几个课时谈论的主要内容都是跟软件质量相关,通过各种方式方法提高软件交付的质量。这时就会遇到一个问题,软件质量固然重要&…

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)将于2024年6月21-23日在中国厦门举办。 SEAI旨在为软件工程与人工智能领域搭建高端前沿的交流平台,推动产业发展。本次会议将汇聚海内外的知名专家、学者和产业界优秀人才,共同围绕国际热点话题、核…

PostGIS空间数据库之空间数据融合实践

目录 前言 一、ST_Union()简介 1、方法说明 2、参数介绍 二、ST_Collect()简介 1、方法说明 2、参数介绍 3、两者区别 三、实际案例实践 1、不重叠融合 2、空间重叠融合 总结 前言 众所周知,熟悉GIS桌面软件的同学一定都知道,想要对空…

使用goland IDE编写go windows ui

最近突发奇想,想实现一款工作节奏的提示安排小闹钟。那首先解决的就是UI。本人擅长go语言。那go在windows ui的探索肯定有人做过了吧。一查还真有,通过知乎,csdn等查到目前支持最好的就是walk库了。那走起试试。 一、拷贝go代码 将官网例子…

WiFi 7 的核心要点

目录 WiFi 7 是什么? WiFi 7 的主要feature功能: 320Mhz channel 4K QAM Multi-Link Operation (MLO),多链路操作 512 block ACK OFDMA:multiple RUs to single STA. 总结:性能是第一优先级,WiFi 7&#xf…

Multi ElasticSearch Head插件基本操作

Multi ElasticSearch Head插件安装好之后我们可以进行一些基本的操作。 1、复合查询 因为ES提供了一些Restful风格的接口,可以让任何语言去调用,因此我们可以将之前的请求地址粘贴到Multi ElasticSearch Head插件里面,选择GET请求方式&#x…

RIP——路由信息协议

目录 1 内部网关协议 RIP 1.1 协议 RIP 的工作原理 1.2 RIP“距离”的定义 1.3 RIP 协议的三个特点 1.4 RIP 协议的优缺点 1.5 路由表的建立 路由表主要信息和更新规则 2 距离向量算法 3 RIP2 报文 4 坏消息传播得慢 5 启动RIP 启动RIP: router rip 命令 启用和检…

Elasticsearch:Geoshape query

Geoshape 查询可以用于过滤使用 geo_shape 或 geo_point 类型索引的文档。 geo_shape 查询使用与 geo_shape 或 geo_point 映射相同的索引来查找具有与查询形状相关的形状的文档,并使用指定的空间关系:相交(intersect)、包含(con…

Git介绍与常用命令总结

Git介绍与其常用命令总结 1、Git介绍2、Git的使用3、Git常用命令3.1 初始化仓库3.2 克隆仓库3.3 配置用户信息3.4 提交代码(Commit)3.5 推送代码(Push)3.6 拉取代码(Pull)3.7 分支(Branch)3.8 远程仓库(Remote)3.9 撤销回退本地改动3.10 更新本地仓库与远程仓库 1、Git介绍 Gi…

AI Prompt工程师 学习整理

前言 如果说Al大语言模型(LLM,Large Language Model)是宝藏我,那么Prompt提示词就是打开宝藏的钥匙。 最新一代的Al大语言模型具备出色的创作能力,能够生成富有人类感情、严谨逻辑、多场景应用的内容,而如何获得高质量的回答,正确学习使用Prompt提示词是关键。 &#x1f4a5…

【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文 引言 题目将于2024年2月2日6:00发布。我们团队将会在8点前准时更新问题分析,逐步更新数学模型和实现代码,最后发布完整的论文。 更新进展: &#xff08…

轻型民用无人机驾驶航空器安全操控——理论考试多旋翼部分笔记

今天已经可以在线考取轻型民用无人机驾驶航空器执照了,所以我也在在线观看完视频之后整理了如下的知识点,所有知识点全部来自UOM平台。 目录 航空器知识 (1)多旋翼民用无人驾驶航空器螺旋桨的作用 (2&#x…