CAP理论与最终一致性分布式数据中心分布式数据中心假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,再把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)
数据更新的消息是通过一台中心的MQ进行转发
系统会出哪些问题
非正常状态如何保证A->M的消息,M一定接收到了,同样,如何保证M->A的消息,M一定接收到了如果数据需要一致性更新,比如A发送了三条消息给M,M要么全部保存,要么全部不保存,不能够只保存其中的几条记录
我们假设更新的数据是一条条发送的
假设同时A发送了多条更新请求,如何保证顺序性要求
如何解决这些问题
网店购物系统状态订单的有三个状态:I:初始P:已支付W:已出库,订单金额100,会员帐户余额200如果整个流程比较顺利,正常情况下,订单的状态会变为I->P->W,会员帐户余额100,订单出库
系统会出哪些问题
非正常状态订单系统调用支付系统支付订单,支付成功,但是返回给订单系统数据超时,订单还是I(初始状态),但是此时会员帐户余额100
订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货
订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货诉订单系统,没有货了
这个时候数据状态和前一种情况一样如何解决这些问题
分布式系统的CAP一致性(Consistency)数据系统在执行过某项操作后,所有节点在同一时间都具有最新的值,所以不管用户访问哪一个节点都会读取到最新的值可用性(Availability)每一个操作总是能够在一定的时间内返回结果,"一定时间内"是指,系统的结果