| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 分布式基础-CAP定理的含义 -> 正文阅读 |
|
[大数据]分布式基础-CAP定理的含义 |
分布式基础-CAP定理的含义随着微服务的发展,分布式系统(distributed system)正变得越来越重要,java后端系统多是分布式系统,很少有单机部署了。 在引入分布式系统的同时,也带来了复制性,只有了解了分布式系统的基本定理,才会明白引入分布式系统会带来哪些问题?以及如何去解决。 可以这么说,CAP定理是理解分布式系统的起点。 如果想要更深入的了解,可以参考Seth Gilbert;Nancy A. Lynch 的论文 Perspectives on the CAP Theorem。 一.分布式系统的三个指标
取首字母分别为:C、A、P,CAP定理简单的说,就是分布式系统不能同时满足三个指标。 1.1 Partition tolerance(分区容错)大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。 Partition tolerance 的含义是:区间通信可能失败,比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。 对于分布式系统,区间通信无法保证一定成功,分区容错无法避免。即CAP中的P一定存在,CAP定理告诉我们,剩下的C和A,无法同时成立。 1.2 Consistency(一致性)Consistency的含义是:在写操作之后,在访问分布式系统中任一节点查询数据的时候,都是最新的数据。 假设分布式系统中有两个节点:S1和S2,每个节点都存储一个变量V0,这时候客户端client开始对S1进行写操作,更新V0 -> V1,然后S1更新完成会通知client。 这时候,很明显是不满足一致性的,由于S2节点变量value还是V0,假如client在write操作完成之后,read操作S2节点,value还是V0,不是最新的V1。 因此为了满足一致性,S1节点在将变量V0更新为V1之前,会先锁定S2节点的读写操作,在将S1节点变量更新为V1之后,会通知S2更新变量为V1,S2更新成功会通知S1,S1在确保S1、S2节点都更新成功之后,解锁S2节点的读写操作,并返回client更新成功。 具体操作如下图所示: 此时就是满足一致性的分布式系统。 1.3 Availability(可用性)Availability的含义是:任何时候,client向任意一个节点S1或者S2发送请求,都能立马得到响应,不管获得的数据是V0还是V1。 二.分布式系统中Consistency 和 Availability 为啥不能同时满足一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。 如果保证 S2 的一致性,那么 S1 必须在写操作时,锁定 S2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,S2 不能读写,可用性无法满足。 如果保证 S2 的可用性,那么势必不能锁定 S2,所以一致性不成立。 综上所述,S2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。即要么AP,要么CP。 引用: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:47:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |