COPS

本文探讨了在大型网站中,如何实现在多个数据中心的数据复制,以确保靠近用户的快速读取和写入操作。提出了一个系统设计,允许本地读写并保持一致性,通过时间戳和依赖关系管理来解决并发写入冲突。COPS算法用于实现因果一致性,但也存在延迟问题。该文深入研究了数据一致性与性能之间的权衡。
摘要由CSDN通过智能技术生成

大型网站,数据在多个数据中心

数据在数据中心进行复制,靠近用户 容错

read 操作要快 读占了大多数

写操作 尽可能保持一致性

需求:读/写操作在本地数据中心的本地replica进行处理,,无需等待其他数据中心的回复。需要一个能本地读和本地写的系统

local read local write 另外还要保持一致性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ewfoOrMh-1617203302057)(http://note.youdao.com/yws/res/9708/EDF6DDF65BA14A4B8FA84ADEF92BFF43)]
上图的设计是最终一致性, no order garantee cassandra ???

例子:

// APP
C1:   put(photo) put(list)




C2:                             get(list)  get(photo)

// 最终一致性系统中,没法保持正确性  get(list),但get(photo)可能并不存在。。。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqebukTR-1617203302073)(http://note.youdao.com/yws/res/9721/7CF4CC4EE2D548B2A3103829E0A5CF76)]

wall-clock time

  • 两个DC同时进行put操作 时间戳pair 高位:时间戳 低位:标识符(假设时间同步)

Lamport clocks(为了解决时间不准确的问题)

每个服务器保存一个Tmax(服务器目前从所以地方看到的那个最高版本号)

Tmax = highest V# seen

V#=T = max(Tmax+1,real time) (要进行put操作时的版本号)Tmax是之前的时间

它要比最后一次对数据进行更新时的写操作的版本号还要高,至少也是和现在的时间一样。

COPS 中使用Lamport clocks分配时间戳。

Conflicting writes

并发对同一个key写入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXbhTLt4-1617203302076)(http://note.youdao.com/yws/res/9748/9A749701A9DA4FE6A812C3129DEE7E1A)]

Last writer wins

straw man two
sync(k, V#)

put(k,v) -> v#

C1:  v# = put(photo),sync(photo,v#),put(list)   // sync同步数据到其他站点

C2:                             get(list) get(photo)
COPS

client context

版本号之间的依赖来实现因果一致性。

get(x)  -> V2   x:v2
get(y)  -> v4   v:v2  y:v4
put(z,-) -> v3 (put(z,-,x:v2,y:v4))  //这种关系叫依赖(dependency)  
// 两个依赖  xv2->zv3  yv4->zv3
put(q,-)   (put(q,-,z:v3,x:v2,y:v4))  // put需要在前面的值出现后再执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0wm049D-1617203302078)(http://note.youdao.com/yws/res/9782/650AB953E38E45F1B037A6B003F00E6A)]
只有在z的依赖,xv2,yv4展示给了数据中心3对应的client后,新版本的z才能展现给client。

缺点:延迟时间过长,级连等待。

COPS-GT
//因果一致性(COPS),你能看到的数据至少和哪些dependency一样新
get(ACL)                            get(list)

            put(ACL) put(list)
因果一致性的缺陷:
  • COPS 04视频最后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值