您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

分布式基础之CAP

时间:2019-10-22 10:29:20  来源:  作者:

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

分布式基础之CAP

 

  • C表示一致性(Consistency),分布式中所有节点访问数据时,要求数据始终都是最新的。
  • A表示可用性(Availability),分布式中任意节点出现故障时,要求系统可正常使用。
  • P表示分区容忍性(Partition tolerance),分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。(分区状态可以理解为部分机器不连通了,比如机器挂了,繁忙失去响应,单机房故障等)

Consistency

数据一致性,及系统只读到最新写入的数据,如:单点串行化的方式,就能达到一致性效果。

单机架构保持一致性:

分布式基础之CAP

 

分布式架构数据同步失败,无法保持数据一致性:

分布式基础之CAP

 

举个栗子:你去租房的时候都会去找地产中介(某链),你找到了A小区的门店发现没有需要的房源,然后去B小区的门店发现有个房源很适合你,这就可以理解为两个门店信息不一致,及不满足一致性要求,但实际上你会遇到这种情况,你去A小区门店询问的时候,有你需要的房源,然后他们会去B小区的门店拿钥匙,这是因为房东把房源交给了B小区门店,然后A小区的门店同样同步的B门店的房源,这样就满足一致性的要求。

Availability

如果每运行100个时间单位,有1个时间单位不可用,则说系统的可用性是99%。

分布式基础之CAP

 

如上图服务A可能由于网络原因导致不可用,但是B、C还是可以继续服务的,但是在反向代理那个位置发生了故障那系统都不可用了,它不是高可用的。

举个栗子:还是以租房为例,你去租房的时候发现A小区的门店今天关门了,然后直接去了B小区的门店发现他们正常工作的,这就满足了可用性的要求,如果去B小区或其他门店都没有正常工作,那这家地产商可能倒闭了,没法对客户提供可用性的服务了。

Partition tolerance

分布式系统,大多都是很大个节点,第个节点节点之前都不是完全独立的,需要相互通信,当发生节点无法连通时,系统如何进行容错处理,是需要考虑的。

举个栗子:C小区新增加了一个门店,装修啥的都弄好了,就是没拉网线,没有连通性,等于就是个孤立的门店,店员只能大眼瞪小眼,没得事做。那你去A门店找房源,那里的人可能都不知道有C小区这个门店,所以A直接带你去了C小区看房子了。

总结

一致性,可用性,分区容忍性三者只能取其二,常见的最佳工程架构实践是什么呢? 最常见的实践是这样的:

  • 连通性异常的处理必须保证,满足P
  • 一致性C与可用性A一般二选一
  • 选择一致性C,举例:传统单库水平切分,就是这类选型的典型
  • 选择可用性A,举例:双主库同步高可用,就是这类选型的典型


Tags:分布式 CAP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可...【详细内容】
2019-10-22  Tags: 分布式 CAP  点击:(127)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条