第四课(一)|学习笔记

简介: 快速学习第四课(一)

开发者学堂课程【高校精品课-西安交通大学-数据库理论与技术:第四课】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/12/detail/15860


第四课(一)

 

内容介绍

一、CAP 定理

二、CAP 定理的起源

三、CAP 定理:鱼和熊掌不可兼得

四、CAP 定理:示例

五、CAP 定理:选择放弃

六、服务器一致性

七、一致性哈希

 

一、CAP 定理

CAP 定理(Brewer's CAP Theorem)是分布式数据管理系统的理论基础之一,最初是由 Eric Brewer 教授(University of California, Berkeley)提出的有关分布式数据共享系统性质一个猜想,后来 Seth Gilbert 和 Nancy Lynch 证明了其正确性,因此成为定理。这个证明和数学定理不太一样,不是严格的数学定理,但应用了数学定理的方式。 

 

二、CAP 定理的起源

1985年,Lynch 证明了异步通信中不存在任何一致性的分布式算法,即 FLP 原理,且这是个否定的结果。2000年,Brewer 教授在提出一致性、可用性和分区容错性 CAP 三者无法在分布式系统中被同时满足,这仅仅是个猜想,并没有证明。2002年,Lynch 与其他人证明了 Brewer 猜想,从而把CAP上升为-一个定理。Now,争论与质疑:CA与CP中C定义不同,具体看一致性如何理解;不适应传统的数据库事务,传统数据库认为 CA 都能保证;分区容错概念横糊等,直观上分区容错即断网。一个分布式系统不可能同时满足一致性(C) ,可用性(A)和分区容错性(P)这三个需求,三个要素中最多只能同时满足两点。三者不可兼顾。一致性(Consistency): 在分布式系统中的所有数据备份,在同一时刻是否具有同样的值。(等同于所有节点访问同一份最新的数据副本)。如果具有同样的值,则为一致性。可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(每一个操作总是能够在定的时间内返回结果)。分区容忍性(Partition tolerance):允许节点之间丢失任意多的消息,即网断了,当网络分区发生时,节点之间的消息可能会完全丢失。

如果不断网,则 C 和 A 都能满足,数据保证一致,还能保证可用性。但是网一断,便无法保证。例如,学校的招标招查收换系统,当时用的荒电卡,后勤部门担心一个问题:学校并校,新晋校区有个食堂,还有医学校区有食堂,卡是通用的。有两个并排的服务器,南区有一个基站,买了卡,卡里充了100元,消费时刷卡,卡会根据消费额扣除,比如今天吃饭消费5元,便从卡中扣5元。后勤部们担心这笔钱,如果网络不通则会发生什么?在网通的情况下,吃饭消费了100元,则数据会统计到南区,那边的服务器也会变成零,则去南区便无法吃饭消费。如果断网,在这个区的钱消费完,余额变为0,但另一个区的100元还在,意味着在此区消费完毕后再火速到另一个区,在另一个区再刷一遍卡,这是双花问题。因此要首先避免双花问题,或者票不能重复订两次。什么是一致性?

比如卡里余额在两台服务器上,同一时刻的值一样。如果断网便无法保证一致性,即这边钱消费完毕,但因为网不通,所以数据无法传输到另一边,所以另一边还是100元,这便是不一致。此时有一个问题,到底保证是一致性还是可用性。

所以食堂应保证可用性,不能说因为网断了,所以食堂不开饭了;但可以利用数据不一致来获取利益,但会损害他人的利益。网不断两个都能保证,网一断,只能在一致性和可用性中选一个。比如银行系统,则一致性更重要,网断了,则不让取钱。

网断了,需要保证数据一致性,如果不一致,在一个地方把钱取光,则可以去另一个 ATM 机再取,那么是不允许的,因此需保证一致性,降低可用性。相反,食堂便需牺牲一致性。两个都保,需要网不断,可以使网更坚固,多条电路,降低断网几率,或者也可以不用网,用集中系统,便不会出现 CAP 的问题。

 

三、CAP 定理:鱼和熊掌不可兼得

在分布式系统中,CAP可以同时得到吗?鱼与熊掌可以兼得吗?答案: NO!一个分布式系统最多只能同时满足两个。Brewer's CAP "Theorem":You can have at most two of these three properties for any system. CAP定理告诉我们:在设计分布式数据共享系统时,熊掌与鱼不可兼得也!因此,架构师不要将精力浪费在设计能满足三者的完美分布式系统,而是应该进行取舍。例如,如果关注的是一致性(C),比如银行对一致性要求非常高,不能容忍不一致性,因为不一致性会造成钱的损失,钱对不上账是不允许的,那么就需要处理因为系统不可用而导致的写操作失败的情况。而如果关注的是可用性(A),那么就应该知道系统的 read 操作可能不能精确的读取到 write 操作写入的最新值。正如饭卡的例子,在一个区消费完卡里的钱后,又去南区,利用了数据不一致。

由于系统的关注点不同,相应的采用的策略也是不一样的,只有真正地理解了系统的需求,才有可能利用好 CAP 理论。CA:传统关系数据库,两个都保证,是因为它有集中系统。no cirle 数据库牺牲一致性,数据宁可不一致,但是业务影响不大可以容忍。AP:key-value 数据库

相关文章
|
存储 监控 负载均衡
走向IPv6,阿里巴巴IPv6规模化部署实践
IPv6是互联网升级演进的必然趋势,我国主流APP也正式进入到IPv4和IPv6的双栈时代。本文将从APP及云产品的角度,和大家分享一下我们在这个过程中的经验积累,为进一步推动IPv6规模化部署提供参考。
走向IPv6,阿里巴巴IPv6规模化部署实践
|
运维 大数据 云计算
|
数据安全/隐私保护
|
5月前
|
Java 关系型数据库 MySQL
java酒店管理系统的设计与实现
java酒店管理系统的设计与实现
|
负载均衡 算法 安全
能量感知调度(EAS) 【ChatGPT】
能量感知调度(EAS) 【ChatGPT】
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之当将两个连接器放在同一个作业中时,MySQL作业无法启动,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
小滑块上个斜面,难倒多少高中生?现在,AI让它动起来了
《Augmented Physics:基于机器学习的物理学习工具》 高中物理学习中,小滑块上斜面等问题常让学生困惑。Augmented Physics利用AI技术,将静态物理图示转化为交互式模拟,通过增强实验、动画图示、双向操作和参数可视化等技术,帮助学生直观理解物理概念。研究表明,该工具能有效提升学生对物理概念的理解,具备广阔的应用前景。
225 1
|
消息中间件 NoSQL Java
订单出现超时未关闭场景解决方案
订单出现超时未关闭场景解决方案
530 5
|
API 数据安全/隐私保护 开发者
商品详情 API 接口的调用次数是否有限制?
商品详情API接口调用次数受限,旨在保障系统稳定性和防止恶意攻击。平台依据账户类型设定不同限制:普通开发者账户调用次数较少,而企业级账户享有更高限额但需申请并可能收费。此外,平台还设置了短期和长期调用频率限制,以避免高并发请求导致服务器过载。
404 2
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
207 1