戎州网 — 精彩生活从这里开始!
官方空间官方空间官方微信官方微信官方微博官方微博
当前位置:首页 > 科技 >

分布式事务——2PC、3PC 和 TCC

责任编辑:发布时间:2019-11-08 13:54:23
来源:东方头条点击:

对于单机下的本地事务,很显然我们有已被实践证明的成熟 ACID 模型来保证数据的严格一致性。但对于一个高访问量、高并发的分布式系统来说,如果我们期望实现一套严格满足 ACID 特性的分布式事务,很可能出现的情况就是在系统的可用性和严格一致性之间出现冲突——因为当我们要求分布式系统具有严格一致性时,很可能就要牺牲掉系统的可用性。但毋庸置疑的一点是,可用性又是一个所有用户不允许我们讨价还价的属性,比如像淘宝这样的网站,我们要求它 7x24 小时不间断地对外服务。因此,我们需要在可用性和一致性之间做一些取舍,围绕这种取舍,出现了两个经典的分布式理论——CAP 和 BASE,这两者也是所有分布式事务协议的基石。

一、CAP 定理

CAP 首次在 ACM PODC 会议上作为猜想被提出,两年后被证明为定理,从此深深影响了分布式计算的发展。CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。

一致性:数据在多个副本之间保持一致。当有一个节点的数据发生更新后,其它节点应该也能同步地更新数据。

可用性:对于用户的每一个操作请求,系统总能在有限的时间内返回结果。

分区容错性:分布式系统中的不同节点可能分布在不同的子网络中,这些子网络被称为网络分区。由于一些特殊原因导致子网络之间出现网络不连通的情况,系统仍需要能够保证对外提供一致性和可用性的服务。

CAP 定理告诉了我们同时满足这三项是不可能的,那么放弃其中的一项会是什么样的呢?

放弃项

放弃P : 如果希望能够避免出现分区容错性问题,一种较为简单的做法是将所有数据放在一个节点上。这样肯定不会受网络分区影响。但此时分布式系统也失去了意义。因此在实际的架构设计中,P是一定要满足的。