CAP理论与最终一致性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CAP理论与最终一致性
分布式数据中心
分布式数据中心
假设有一个主数据中心在北京M,然后有成都A,上 海B 两个地方数据中心
假设成都上海各自的数据中心有记录变更,需要先 同步到
主数据中心,主数据中心更新完成之后,再 把最新的数据
分发到上海,成都的地方数据中心A, 地方数据中心更新
数据,保持和主数据中心一致性(数据库结构完全一致)
分区容错性(Part i t i on To lerance)
除了整个网络的故障外,其他的故障(集)都不能导致 整个系统无法正确响应
CAP理论
CAP是在分布式环境中设计和部署系统时所要考虑 的三个重要的系统需求
根据CAP理论,数据共享系统只能满足这三个特性 中的两个,而不能同时满足三个条件
系统设计者必须清楚系统真正需要的是什么,然后 在这三个特性之间做出权衡
CAP理论讲解
在网络中有两个节点分别为G1和G2,存储着同一数 据的不同副本,现在的数据是一致的,两个副本的 值都是V0,A、B分别是运行在G1、G2上的应用程序
CAP理论讲解:正常流程
1.A将V0更新,数据值为V1 2.G1发送消息m给G2,数据V0更新为V1 3.B读取到G2中的V1
CAP理论讲解:不同的一致性
假如有一个客户程序把对象A的值从V0改为V1 强一致性
系统保证其它所有客户程序的后续读取操作都会得到V1
弱一致性
系统不能保证其它所有客户程序的后续读取操作都会得到V1
最终一致性
系统不能保证其它客户程序的后续读取操作都会立即得到 V1,但会保证在经过一段时间后,其它客户程序会得到V1
假设同时A发送了多条更新请求,如何保证顺序性 要求?
如何解决这 些问题?
网店购物系统状态
订单的有三个状态:I : 初始 P:已支付 W:已出库, 订单金额100, 会员帐户余额200
如果整个流程比较顺利,正常情况下,订单的状态 会变为I- >P- >W,会员帐户余额100,订单出库。
系统会出哪 些问题?
如何解决 这些问题?
分布式系统的CAP
一致性(Consis t ency)
数据系统在执行过某项操作后,所有节点在同一时间都 具有最新的值,所以不管用户访问哪一个节点都会读取 到最新的值
可用Leabharlann Baidu(Avai labi l i t y)
每一个操作总是能够在一定的时间内返回结果," 一 定 时间内"是指,系统的结果必须在给定时间内返回 ,如果超 时则被认为不可用
CAP理论讲解:网络分区故障
1. A将V0更新,数据值为V1 2.G2没有收到G1的信息m 3.B读取到G2中的V0,数据一致性没有得到保证
CAP理论讲解:网络分区故障
1. A将V0更新,数据值为V1 2.G2没有收到G1的信息m 3 . 如果需要保证一致性,那么就要阻止B读取数
据,这就破坏了可用性
非正常状态
订单系统调用支付系统支付订单,支付成功,但 是 返回给订单系统数据超时,订单还是I(初始状 态),但是此时会员帐户余额100。
订单系统调用支付系统成功,状态也已经更新成 功
,但是通知仓库发货失败,这个时候订单是P(已
支付)状态,此时会员帐户余额是100, 但是仓库不
会发货。
。
订单系统调用支付系统成功,状态也已经更新成功, 然后通知仓库发货诉订单系统,没有货了。这个时 候数据状态和前一种情况一样
分组讨论
哪些系统需要强/弱/最终一致性?
银行的ATM系统, 飞机售票系统 新浪网站系统 系官方网站
。
数据更新的消息是通过一台中心的MQ进行转发。
系统会出哪 些问题?
非正常状态
如何保证A->M的消息,M一定接收到了,同样,如 何 保证M->A的消息,M一定接收到了
如果数据需要一致性更新,比如A发送了三条消息 给M ,M要么全部保存,要么全部不保存,不能够只 保存其 中的几条记录。我们假设更新的数据是一条 条发送的。
这段可能不一致的时间段称为“不一致性窗口”
客户端/服务器端一致性
服务器端一致性
如何尽快将更新后的数据分布到整个系统,降低达到最 终一致性的时间窗口
可以统过调整副本一致性策略决定是支持哪种一致性
客户端一致性
多进程并发访问时,更新过的数据在不同进程如何获取 的不同策略,决定了不同的一致性
分布式数据中心
分布式数据中心
假设有一个主数据中心在北京M,然后有成都A,上 海B 两个地方数据中心
假设成都上海各自的数据中心有记录变更,需要先 同步到
主数据中心,主数据中心更新完成之后,再 把最新的数据
分发到上海,成都的地方数据中心A, 地方数据中心更新
数据,保持和主数据中心一致性(数据库结构完全一致)
分区容错性(Part i t i on To lerance)
除了整个网络的故障外,其他的故障(集)都不能导致 整个系统无法正确响应
CAP理论
CAP是在分布式环境中设计和部署系统时所要考虑 的三个重要的系统需求
根据CAP理论,数据共享系统只能满足这三个特性 中的两个,而不能同时满足三个条件
系统设计者必须清楚系统真正需要的是什么,然后 在这三个特性之间做出权衡
CAP理论讲解
在网络中有两个节点分别为G1和G2,存储着同一数 据的不同副本,现在的数据是一致的,两个副本的 值都是V0,A、B分别是运行在G1、G2上的应用程序
CAP理论讲解:正常流程
1.A将V0更新,数据值为V1 2.G1发送消息m给G2,数据V0更新为V1 3.B读取到G2中的V1
CAP理论讲解:不同的一致性
假如有一个客户程序把对象A的值从V0改为V1 强一致性
系统保证其它所有客户程序的后续读取操作都会得到V1
弱一致性
系统不能保证其它所有客户程序的后续读取操作都会得到V1
最终一致性
系统不能保证其它客户程序的后续读取操作都会立即得到 V1,但会保证在经过一段时间后,其它客户程序会得到V1
假设同时A发送了多条更新请求,如何保证顺序性 要求?
如何解决这 些问题?
网店购物系统状态
订单的有三个状态:I : 初始 P:已支付 W:已出库, 订单金额100, 会员帐户余额200
如果整个流程比较顺利,正常情况下,订单的状态 会变为I- >P- >W,会员帐户余额100,订单出库。
系统会出哪 些问题?
如何解决 这些问题?
分布式系统的CAP
一致性(Consis t ency)
数据系统在执行过某项操作后,所有节点在同一时间都 具有最新的值,所以不管用户访问哪一个节点都会读取 到最新的值
可用Leabharlann Baidu(Avai labi l i t y)
每一个操作总是能够在一定的时间内返回结果," 一 定 时间内"是指,系统的结果必须在给定时间内返回 ,如果超 时则被认为不可用
CAP理论讲解:网络分区故障
1. A将V0更新,数据值为V1 2.G2没有收到G1的信息m 3.B读取到G2中的V0,数据一致性没有得到保证
CAP理论讲解:网络分区故障
1. A将V0更新,数据值为V1 2.G2没有收到G1的信息m 3 . 如果需要保证一致性,那么就要阻止B读取数
据,这就破坏了可用性
非正常状态
订单系统调用支付系统支付订单,支付成功,但 是 返回给订单系统数据超时,订单还是I(初始状 态),但是此时会员帐户余额100。
订单系统调用支付系统成功,状态也已经更新成 功
,但是通知仓库发货失败,这个时候订单是P(已
支付)状态,此时会员帐户余额是100, 但是仓库不
会发货。
。
订单系统调用支付系统成功,状态也已经更新成功, 然后通知仓库发货诉订单系统,没有货了。这个时 候数据状态和前一种情况一样
分组讨论
哪些系统需要强/弱/最终一致性?
银行的ATM系统, 飞机售票系统 新浪网站系统 系官方网站
。
数据更新的消息是通过一台中心的MQ进行转发。
系统会出哪 些问题?
非正常状态
如何保证A->M的消息,M一定接收到了,同样,如 何 保证M->A的消息,M一定接收到了
如果数据需要一致性更新,比如A发送了三条消息 给M ,M要么全部保存,要么全部不保存,不能够只 保存其 中的几条记录。我们假设更新的数据是一条 条发送的。
这段可能不一致的时间段称为“不一致性窗口”
客户端/服务器端一致性
服务器端一致性
如何尽快将更新后的数据分布到整个系统,降低达到最 终一致性的时间窗口
可以统过调整副本一致性策略决定是支持哪种一致性
客户端一致性
多进程并发访问时,更新过的数据在不同进程如何获取 的不同策略,决定了不同的一致性