关于在并行快照隔离中读取更新鲜的快照

On Reading Fresher Snapshots in Parallel Snapshot Isolation
2020 IEEE第40届分布式计算系统国际会议(ICDCS)
作者信息


摘要:在本文中,我们简要介绍了 FPSI,这是一种分布式事务内存键值存储,其主要目标是使事务能够读取比现有的 Parallel 实现更多的共享对象的最新(更新)版本在节点之间没有同步时钟服务的情况下,快照隔离 (PSI) 正确性级别。 FPSI 建立在 Walter 之上,这是一种非常适合社交应用的 PSI 实现。 FPSI 核心的新颖并发控制允许其无中止只读事务在第一次接触节点时访问最新版本的对象。

关键字:事务;一致性;快照隔离

1 介绍

快照隔离 (SI) [1] 是一种广泛采用的一致性级别,在构建事务系统 [3]、[4] 时,通常用作可串行化 [2] 的实用替代方案,这是并发控制实现的黄金标准标准。提供 SI 的并发控制显着提高了可序列化并发控制的并发级别和性能,因为它允许多个事务访问同一组共享对象的执行,只要它们的写入对象组是不相交的。

SI 的一大优点是,即使在执行期间读取(所谓的读取快照)和未写入的一组值已被并发事务 [1] 覆盖,事务也不应中止。通过利用此属性以及多版本数据存储库,大多数 SI 并发控制 [4]、[5] 只需将读取快照定义为事务开始时可用的所有版本。

当部署在节点不共享同步时钟并且它们之间的通信是异步的分布式系统上时,SI 事务不能简单地在它们开始时定义一个类似的(最新的)读取快照,因为没有共享节点之间的时间概念。事实上,在这样的分布式系统中,确定性地识别版本是在某个时间点之前还是之后创建是非常具有挑战性的 [4]、[6]、[5]。

Walter [4] 是最先进的分布式事务系统,其并发控制实现了 SI 的变体,称为并行快照隔离(或 PSI),其中事务读取快照可以在为了处理前面提到的节点之间没有共享时钟。 Walter 在逻辑上将对象分配给所谓的首选节点,因此如果事务从首选节点读取版本,则将保证其读取快照是最新的。对非首选节点的任何访问都可能导致版本过时。

Walter 尝试使用在事务关键路径之外发送的异步消息来修补与访问非首选节点相关的上述问题,旨在定期更新系统中非首选节点的逻辑时钟。如果没有这些信息,可能会出现两个负面影响。首先,尝试从非首选节点写入对象的事务将被反复中止,直到上述异步消息被传递。其次,从非首选节点读取的事务可以返回任意旧版本。

在本文中,我们简要介绍了 Fresher Parallel Snapshot Isolation(或 FPSI),这是一种分布式事务系统,它使用逻辑(矢量)时钟 [7] 来实现原始 Walter 并发控制的改进版本,以提高数据新鲜度。使事务能够访问最新的快照可以减轻不良行为,即 i) 引导只读事务(即不写入的事务)读取过时的值,如前面的示例所示,以及 ii) 引导更新事务通过实施一种称为可见读取的技术来持续中止(降低整体进度)[8]。

2 FPSI 并发控制概述

A. Walter 对数据新鲜度的挑战

实现数据新鲜度的主要算法挑战是处理 Walter 用于在事务提交时更新节点的逻辑(向量)时钟的技术。事实上,由于 Walter 的事务读取快照可以是任意旧的,因此向量时钟的更新不会传播与并发事务的因果依赖关系(相反,这将需要保持事务后续读取操作的安全性)。 Walter 可以忽略这一点,因为它的事务不会从并发事务中读取。

B.FPSI的解决方案

FPSI 使用称为版本访问集的附加元数据丰富了 Walter 的矢量时钟,旨在捕获与并发事务的依赖关系,以便在首次访问时可以安全地读取访问对象的最新版本。这个目标是通过将跟踪事务的读后写(反)依赖性的版本访问集与沃尔特现有的矢量时钟[7]相结合来实现的,以确保事务的一致性。

更具体地说,版本访问集与版本相关联,它包含读取该特定版本的只读事务的标识符。在更新事务的提交阶段,收集并发冲突只读事务的标识符集。该集合被传播到这些更新事务的新创建版本的版本访问集。

在下文中,我们概述了 FPSI 用于处理更新和只读事务的读取操作的两种策略。

  1. 只读事务的读取操作:FPSI 允许只读事务在第一次与节点(无论是否首选)联系时,通过推进其读取快照来始终访问共享对象的最新版本。换句话说,只读事务 T 的读取快照在 T 启动时没有定义。相反,它是在执行期间通过尝试包含仍保留 PSI 的最新版本来建立的。
    从 T 的高级阅读快照中包含的版本集中,那些 version-accessset 包含 T 标识符的版本应该被排除,因为这意味着 T 已经与提交这些版本的事务建立了反依赖关系。在剩余的版本中,选择最新的(意思是其中最新鲜的)作为读取操作的结果。
  2. 更新事务的读取操作:关于更新事务,FPSI 通过部署与用于只读事务的技术类似的技术来降低中止率。但是,由于更新事务可以在执行期间中止,因此使用版本访问集跟踪(反)依赖性将不切实际,因为中止的事务将需要额外的清理阶段,这会显着降低性能。 FPSI 通过决定从安全快照中读取(受 [9] 启发)来解决此问题,如果先前的读取操作访问由并发事务提交的版本,该快照可能比最新版本更旧,并且与执行具有已建立的反依赖关系更新交易。
    更正式地说,更新事务保证在第一次读取时读取访问对象的最新版本。之后,与处理第一次读取操作的节点相关联的逻辑时钟用于推导后续读取操作是否可以访问最新的一致版本。
    请注意,FPSI 通过改进更新事务的读取快照导致更新事务不会由于过时的读取快照而重复验证失败,这在 Walter 中比在 FPSI 中更有可能发生。

3 总结

在本文中,我们简要介绍了 FPSI,这是一种新颖的分布式并发控制,它提供了 PSI 正确性级别的实现,我们在其中提高了更新和只读事务的新鲜度。使用 FPSI,可以防止交易读取任意旧版本,这是当前最先进解决方案的一个重大缺点。

致谢

本材料基于空军科学研究办公室资助的工作,奖励编号为 FA9550-17-1-0367,国家科学基金会的资助编号为 CNS-1814974。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随处可见的打字员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值