分布式系统架构常识:CAP理论
转载自 分布式系统架构常识:CAP理论
什么是CAP理论?
2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后麻省理工学院的Seth Gilbert和NancyLynch从理论上证明了CAP,之后CAP理论正式成为分布式计算领域的公认定理。
CAP理论是由下面三个概念组成的,且在分布式系统中三者不能兼得,只能同时满足两种条件。
一致性(C)
All nodes see the same data at the same time
所有数据库集群节点在同一时间点看到的数据完全一致,即所有节点能实时保持数据同步。
可用性(A)
Reads and writes always succeed
读写操作永远是成功的。即服务一直是可用的,即使集群一部分节点故障,集群整体还能正常响应客户端的读写请求。
分区容错性(P)
The system continues to operate despite arbitrary message loss or failure of part of the system
尽管系统中有任意的信息丢失或故障,系统仍在继续运行。以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
CAP权衡使用
1、保留CA,放弃P
如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)都放在一台机器上。虽然无法100%保证系统不会出错,但不会碰到由分区带来的负面效果。当然这个选择会严重的影响系统的扩展性。
作为一个分布式系统,放弃P,即相当于放弃了分布式,一旦并发性很高,单机服务根本不能承受压力。
像很多银行服务,确确实实就是舍弃了P,只用单台小型机+ORACLE保证服务可用性。
2、保留CP,放弃A
相对于放弃“分区容错性“来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待一定的时间,因此在等待期间系统无法对外提供服务。
作为分布式系统,有分区服务发生问题很有可能,如果因为某些服务不能用,导致整个服务都不能用,这个根本不是好的分布式系统。
3、保留AP,舍弃C
这里所说的放弃一致性,并不是完全放弃数据一致性,而是放弃数据的强一致性。即放弃了同一时刻的数据一致性,而保留数据的最终一致性。
以网络购物为例,对只剩下一件库存的商品,如果同时接受到了两份订单,那么较晚的订单将被告知商品告罄。
通常情况下,很多分布式服务系统都是采用该方案,保证可用性性,分布式服务,因为某些分区服务发生问题,先容忍,最终通过一些折中的方法达到最终数据一致性。
分布式系统架构常识:CAP理论相关推荐
- 分布式系统架构以及 CAP 原理
精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 ● 本文主要分为 ...
- Eureka工作原理(Eureka简介Eureka ServerEureka Client自我保护机制分布式系统中的CAP理论Eureka 工作流程)
一.Eureka简介 Eureka Server(注册中心,相当于zookeeper) Eureka Client: Provider Consumer 多个Eureka就叫集群.集群之间会定时通过r ...
- 分布式系统中的CAP理论,面试必问,你理解了嘛?
对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测.而且看了很多书和视频还是一脸懵逼.这篇文章主要使用大白话的方式,带你理解一下分布式系统中的CAP理论.保证你能听懂. 为 ...
- 浅论服务端应用程序开发中的CAP思想(非分布式系统中的CAP理论)
本文从属于笔者的<服务端应用程序结构风格变迁之路> CAP理论是分布式系统构建中的基础理论之一,其中的C(Consistency),一致性即指所有的节点都能访问同一份最新的数据副本.A(A ...
- 分布式架构之CAP理论/AP架构/CP架构
上一篇梳理一下 CAP定理:https://blog.csdn.net/Soinice/article/details/96782876 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性) ...
- 分布式系统中的CAP理论和BASE理论详解
一.CAP理论 CAP 理论/定理open in new window起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被 ...
- 阿里P9李运华:想成为架构师,你必须知道CAP理论
CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的ACM PODC上提 ...
- 美团即时物流的分布式系统架构设计
背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验.最主要的收获包括两点: 即时物流业务对故障和高延迟的容忍度极低 ...
- 美团外卖分布式系统架构设计
背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验.最主要的收获包括两点: 即时物流业务对故障和高延迟的容忍度极低 ...
最新文章
- python tornado入门_Tornado入门
- JVM之堆Heap体系概述
- 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
- spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程...
- chatbot2 RNN语言模型
- memset 结构体内指针_数据结构之线性表应用——内存管理
- 51单片机PWM程序详解
- 简单触发器的使用 -- 献给SQL初学者
- 《Java程序员职场全功略:从小工到专家》连载四:IT人不容易
- 如何学习Android系统源码
- 华为交换机重制_华为交换机如何初始化?华为交换机初始化配置-百度经验
- 请等候windows modules installer_【全国交通安全日】员工上下班安全攻略请收好!...
- Win10GodMode上帝模式
- 灯具防水等级测试和试验箱
- 第九届河南省程序设计大赛 1273-宣传墙(java)
- java 办公_Java003-协同办公OA
- android com.mylhyl,Android 高仿微信朋友圈拍照上传功能
- 计算机网络协议第一章,网络协议基础知识
- Lattice原理及在通信中的应用 2 Packing, Covering, Quantization, Modulation
- 计算机组成原理实验tec2000,TEC-2000A计算机组成原理实验系统
热门文章
- LeetCode 111二叉树的最小深度-简单
- 高等数学上-赵立军-北京大学出版社-题解-练习5.5
- C++string容器-字符串拼接
- HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)
- C - Maximize GCD(简单数论)
- B.The Tortoise and the Hare 长春
- [蓝桥杯2016初赛]方格填数
- CF1016G. Appropriate Team(Pollard-pho,FWT,数论)
- 牛客题霸 [三个数的最大乘积]C++题解/答案
- AtCoder4515 [AGC030F] Permutation and Minimum(dp)