分布式事务最优解的SNOW原则(OSDI分享之一)

分布式存储系统在有事务更新的前提下,如何保持读的一致性和提高读写性能一直是分布式事务里面非常有意思的话题。2016年的OSDI(操作系统的顶级学术会议)会议上发表的一篇文章对于设计实现分布式存储系统,尤其是分布式事务有着很好的理论指导意义。这篇文章是“The SNOW Theorem and Latency-Optimal Read-Only Transactions”。作者是南加州大学和纽约大学的学者“Haonan Lu, Christopher Hodsdon, Khiem Ngo, Shuai Mu, Wyatt Lloyd”,后面简称SNOW。我这里只是尽可能忠于原文的一个介绍,如果需要了解证明的细节,可以查看我的附件原文
背景
数据分布在多台物理服务器,一个非常典型的分布式事务场景是:读的事务可能需要跨越多台物理机的同时保持一致性/读的隔离性(read isolation)。业界已经有很多正确的读事务的算法实现。但是这些读是否是最优化的算法,和最优化的算法之间有什么差别,之前并没有一个答案。SNOW的意义在于给出了理论值,对于现在已有的算法进行了分类,对于不够优化的算法根据SNOW理论进行了优化,并能看到非常明显的性能提升。当然,这个优化和提升是对于读的性能,很可能会需要付出拖慢写的代价。
算法理论
首先介绍4个基本条件:
Strict serializability:所有事务之间都是全局严格排序的,放松这个条件并不是说事务的完整性和一致性受损,而是说事务之间的顺序可能对不同的读是不同的。
Non-blocking operations:不阻碍的操作,就是说读不需要等任何其他操作的完成而立刻返回结果(这个结果可能是没有结果需要重试,见下一个条件)
One-response:读一次成功,有些算法可能会在一致性读的条件不满足的情况下要求客户端重试。
Write transactions:允许和有冲突的写并发。就是如果跨多机的读的内容中可以被并发的更新,读仍然可能成功。
这里面最能影响读性能的是Non-blocking operations和One-response。
SNOW的核心是证明了所有的只有读的事务的实现,都只能满足SNOW四个条件中的3个,同时满足4个条件的算法是不存在的。
应用
论文由算法理论得到的主要应用是将目前已知算法根据他们的对SNOW条件的满足进行了分类。定义同时满足SNOW中的三个条件的算法为SNOW最优(SNOW-optimal)。 这里SNOW-optimal是说算法对于读来说最优,尤其是竞争比较激烈的时候,但是可能同时是加重了写的负担。所以实际从业务需求出发,如果业务本身以读为主,那么,SNOW-optimal的代价就是合理的
论文把两个现存算法COPS,Rococo改造成SNOW-optimal和Rococo-SNOW。这俩个算法的读的性能都得到了改进,但是同时在一些场景下可能付出了写性能的代价。如果是服务以读为主,或者写受影响的场景不常见,我们可以考虑这种取舍。
这个表格是作者总结出来当前一些算法在SNOW条件下的判断





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值