云时代架构读后感四

摘要:
所以理解和掌握了CAP,对系统架构的设计至关重要。因此分布式系统理论上是不可能有CA组合的,所以我们只能选择CP和AP组合架构。下面我们来详细看一下CP架构和AP架构的特点:CP架构CP架构即Consisteny(一致性)与Partitiontolerance的组合。因此,这种情况下,就是保障了AP架构,但其放弃了Consisteny(一致性)。
原文地址:

https://mp.weixin.qq.com/s?__biz=MzAwNTQ4MTQ4NQ==&mid=2453562294&idx=1&sn=45d3ab6fb0f1f4e14d22606fb562bbda&chksm=8cd136d4bba6bfc28fcaeee41c08e4510a7742471f42edcc151e01e279a050018e0fd7d65768&mpshare=1&scene=23&srcid=#rd

架构设计之「 CAP 定理 」

CAP定理是分布式系统中最基础的原则。所以理解和掌握了CAP,对系统架构的设计至关重要。

「 CAP定理 」又被称为 布鲁尔定理,它提出对于一个分布式系统而言,不能同时满足以下三点:

  • Consisteny(一致性)
  • Availability(可用性)
  • Partition tolerance(分区容错性)

也就是说CAP定理指明了,任何分布式系统只能同时满足这三项中的两项。

云时代架构读后感四第1张

如上图,如果是最多同时满足两项,那我们可以有三个组合:CA、CP、AP。在聊这三个组合之前,我们先分别看一下 Consisteny(一致性)、Availability(可用性)、Partition tolerance(分区容错性)的含义。

假设某个系统当前有两个节点A和B,两个节点分别可以由Actor进行读写,两个节点之间的数据会自动完成同步。

1.Consisteny(一致性)

一致性的要求是指,对于任何客户端(上图Actor)来说,每次的读操作,都能获得最新的数据。即,当有客户端向A节点写入了新数据之后,其它客户端从B节点中进行读操作所获得的数据必须也是最新的,是与A节点数据保持一致的。

2.Availability(可用性)

可用性的要求是指,每个请求都能在合理的时间内获得符合预期的响应(不保证获取的结果是最新的数据)。

按照上图来看就是,客户端只要向A节点或B节点发起请求后,只要这两个节点收到了请求,就必须响应给客户端,但不需要保证响应的值是否正确。

3.Partition tolerance(分区容错性)

分区容错性是指,当节点之间的网络出现问题之后,系统依然能正常提供服务。

讲完了C、A、P的含义和要求,我们继续来看看它们之间如何组合使用。

二、CAP怎么应用

有 CA、CP、AP 三种组合方式,但是在分布式系统的结构下,网络是不可能做到100%可靠的。如果选择 CA组合,放弃 P(分区容错性)。还是以最上面的图中A和B节点来举例,当发生节点间网络故障时,为了保证 C(一致性),那么就必须将系统锁住,不允许任何写入操作,否者就会出现节点之间数据不一致了。但是锁住了系统,就意味着当有写请求进来的时候,系统是不可用的,这一点又违背了 A(可用性)原则。

因此分布式系统理论上是不可能有CA组合的,所以我们只能选择 CP 和 AP组合架构。

下面我们来详细看一下 CP架构 和 AP架构的特点:

CP架构

CP架构即 Consisteny(一致性)与 Partition tolerance(分区容错性)的组合。

云时代架构读后感四第2张

1. 如上图,由于网络问题,节点A和节点B之前不能互相通讯。当有客户端(上图Actor)向节点A进行写入请求时(准备写入Message 2),节点A会不接收写入操作,导致写入失败,这样就保证了节点A和节点B的数据一致性,即保证了Consisteny(一致性)。

然后,如果有另一个客户端(上图另一个Actor)向B节点进行读请求的时候,B请求返回的是网络故障之前所保存的信息(Message 1),并且这个信息是与节点A一致的,是整个系统最后一次成功写入的信息,是能正常提供服务的,即保证了Partition tolerance(分区容错性)。

上述情况就是保障了CP架构,但放弃了Availability(可用性)的方案。

2.AP架构

AP架构即 Availability(可用性)与 Partition tolerance(分区容错性)的组合架构。

云时代架构读后感四第3张

如上图,由于网络问题,节点A和节点B之前不能互相通讯。当有客户端(上图Actor)向节点A进行写入请求时(准备写入Message 2),节点A允许写入,请求操作成功。但此时,由于A和B节点之前无法通讯,所以B节点的数据还是旧的(Message 1)。当有客户端向B节点发起读请求时候,读到的数据是旧数据,与在A节点读到的数据不一致。但由于系统能照常提供服务,所以满足了Availability(可用性)要求。

因此,这种情况下,就是保障了AP架构,但其放弃了 Consisteny(一致性)。

以上,就是对CAP定理的一些思考。希望对大家有所帮助。

分库分表并不能解决“无限扩容”的问题,只有单元化才能解决这问题。

免责声明:文章转载自《云时代架构读后感四》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【原创】字典攻击教务处(BurpSuite使用)codeforces1137B kmp(fail的妙用)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《大规模分布式存储系统:原理解析与架构实战》.pdf

关注“Java后端技术全栈” 回复“面试”获取全套面试资料 分布式存储系统,将数据分散存储在多台独立的设备上。 传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。 分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提...

电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码

鸿鹄云商大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 分布式、微服务、云架构电子商务平台 java b2b2c o2o 技术解决方案 开发语言:java、j2ee 数据库:mysql JDK支持版本:JDK1.6、JDK1.7、JDK1.8版本 通用框架...

CTO、技术总监、首席架构师的区别

转载说明:这篇文章,实用性非常强。工作,首先强调的应该是 分工和职责。 经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO。 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥。 一、高级程序员 如果你是一个刚刚创业的公司,公司没有专职产品经理和项目经理,你就是公司的产品经理,你如果对你现在的开发员能力不满,那么你只需要的是...

关于Android中so解析那些事

1、Android系统目前支持的CPU架构:ARMv5、ARMv7、x86、MIPS、ARMv8、MIPS64、x86_64,每一种都关联着一个ABI(Application Binary Interface)   2、ABI:定义了二进制文件(尤其是.so文件)如何运行在相应系统平台上,包括使用的指令集、内存对齐、可用的系统函数库。Android系统上,...

转 SaaS应用十大关键NFR

非功能需求(SaaS的NFR)是跨越应用功能的跨越所有模块和功能的要求。这些要求深入到应用程序的架构,这是他们得到解决的地方。因此,在SaaS架构阶段之前了解这些NFR对于特定应用程序很重要,因此应用程序设计可以满足这些要求。 SaaS模式的本质使得某些NFR对其运行至关重要。让我们看看SaaS应用程序的十大关键NFR以及其背后的原因。 SaaS应用的关...

警惕VPS服务商常用的超售手段

任何商业企业都希望将利益最大化,这是可以理解的。但如果做的过火最终损害的还是自己的利益。VPS服务提供商也一样,为了将利益最大化,他们往往会实用技术手段对所出售的VPS进行“超售”。 那么何谓“超售”呢?顾名思义,即“超出可接受范围的出售”。本文将谈谈这些业内共知的那些常用超售手段: OPENVZ架构 1、对于OpenVZ架构,超售可谓不费吹灰之力。由于O...