\[ \def\ABORT{\mathsf{ABORT}} \def\ACCEPT{\mathsf{ACCEPT}} \def\ACCEPTACK{\mathsf{ACCEPT\_ACK}} \def\act{\mathsf{act}} \def\ballot{\mathsf{ballot}} \def\certify{\mathtt{certify}} \def\client{\mathsf{client}} \def\COMMIT{\mathsf{COMMIT}} \def\committed{\mathsf{committed}} \def\coord{\mathsf{coord}} \def\dec{\mathsf{dec}} \def\DECIDED{\mathsf{DECIDED}} \def\decide{\mathtt{decide}} \def\DECISION{\mathsf{DECISION}} \def\decision{\mathsf{decision}} \def\FOLLOWER{\mathsf{FOLLOWER}} \def\follower{\mathsf{follower}} \def\l{\mathcal{l}} \def\LEADER{\mathsf{LEADER}} \def\leader{\mathsf{leader}} \def\D{\mathcal{D}} \def\next{\mathsf{next}} \def\Obj{\mathsf{Obj}} \def\P{\mathcal{P}} \def\phase{\mathsf{phase}} \def\PREPARE{\mathsf{PREPARE}} \def\PREPARED{\mathsf{PREPARED}} \def\PREPAREACK{\mathsf{PREPARE\_ACK}} \def\proc{\mathsf{proc}} \def\RECOVERING{\mathsf{RECOVERING}} \def\S{\mathcal{S}} \def\shards{\mathsf{shards}} \def\START{\mathsf{START}} \def\status{\mathsf{status}} \def\T{\mathcal{T}} \def\txn{\mathsf{txn}} \def\Val{\mathsf{Val}} \def\Ver{\mathsf{Ver}} \def\vote{\mathsf{vote}} \]
摘要
原子事务提交(ACP)是一个和一致性相似的单次协议问题,旨在模拟易出错的分布式系统的事务提交协议属性。我们认为,ACP 限制太多以至于不能捕获现代事务数据存储的复杂性,其中提交协议和并发控制集成,并且他们对不同事务的执行是相互依赖的。作为替代方案,我们引入了传输认证服务(TCS),一个新的正式问题,它通过集成的并发控制来捕获多发事务提交协议的安全保证。TCS 由可实例化的认证函数参数化,以支持常见的隔离级别,如可串行化和快照隔离。然后,我们推导出一个可证明正确性的弹性崩溃协议,用于通过连续改进来实现 TCS。我们的协议比主流方法实现了更好的时间复杂度,主流方法在 Paxos 风格的复制之上分两阶段提交。
概论
现代数据存储通常被需要管理大量数据,同时为用户提供严格的事务保证。它们通过将数据划分为独立管理的分片和容错性来实现可伸缩性,方法是在一组服务器上复制每个分片。实现这样的系统需要复杂的协议来确保分布式事务满足通常称为 ACID 的所需属性的组合:原子性,一致性,隔离性和持久性。