Google Percolator 是一个构建在 BigTable 之上的分布式事务解决方案,在 Google 内部用于网页索引更新的业务。TiDB 的事务模型沿用了 Percolator 的事务模型。
Percolator 的大致流程如下:
1. Prewrite 阶段
- 客户端向 Percolator 发起事务请求,Percolator 为事务分配一个唯一的事务 ID。
- 事务选取其中一行作为 primary,其他的作为 secondary。
- Percolator 对 primary 行加锁,并写入事务 ID 和开始时间戳。
- Percolator 对 secondary 行加锁,并写入 primary 行的地址。
2. Commit 阶段
- Percolator 向 primary 行所在的 tablet 发送 Commit 请求。
- tablet 将事务应用到数据库中,并释放锁。
- Percolator 异步向 secondary 行所在的 tablet 发送 Commit 请求。
- tablet 将事务应用到数据库中,并释放锁。
3. Abort 阶段
- 如果事务发生任何错误,Percolator 会将事务回滚。
- Percolator 会释放所有锁,并删除所有事务数据。
Percolator 的主要特点如下:
- 使用两阶段提交协议保证事务的原子性和一致性。
- 使用乐观锁避免事务冲突。
- 使用异步提交提高性能。
Percolator 的主要缺点如下:
- 不支持强一致性,只支持最终一致性。
- 不支持多版本并发控制 (MVCC)。
以下是 Percolator 和 TiDB 分布式事务的主要区别:
| 特性 | Percolator | TiDB |
|---|---|---|
| 一致性 | 最终一致性 | 强一致性 |
| 隔离性 | 读已提交 | 读已提交 |
| 锁机制 | 乐观锁 | 乐观锁 |
| 事务模型 | 两阶段提交 | 两阶段提交 |
| MVCC | 不支持 | 支持 |
总体而言,Percolator 是一种简单、高效的分布式事务解决方案,适用于对一致性要求不高的场景。TiDB 是一种高可用、高性能、强一致性的分布式事务解决方案,适用于对一致性要求高的场景。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




