1 个不稳定版本
0.1.0 | 2019年3月29日 |
---|
#2206 在 数据库接口
9,192 个星标 & 254 个关注者
23KB
464 行
Percolator 实验室
什么是 Percolator
Percolator 是谷歌为处理非常大的数据集而构建的系统,用于增量处理。Percolator 还提供了一个具有 ACID 快照隔离语义的分布式事务协议。更多详细信息请参阅论文:使用分布式事务和通知进行大规模增量处理。
实验先决条件
要开始这个实验,您需要了解以下内容:
-
熟悉 Rust(您也可以从我们的 Rust 培训课程中学习一些内容)
-
了解 protobuf 的工作原理
-
了解 RPC 的工作原理
-
了解分布式事务的概念
实验概念
服务器
在本实验中,有两种服务器提供不同的服务:TSO 服务器和存储服务器。
TSO 服务器
Percolator依赖于一个名为时间戳预言机的服务。由TimestampOracle
实现的TSO服务器可以按严格递增的顺序生成时间戳。所有事务都需要获取唯一的时间戳以指示执行顺序。
存储服务器
Percolator建立在Bigtable之上,向用户呈现一个多维排序映射。在本实验中,使用由MemoryStorage
实现的存储服务器来模拟Bigtable,该服务器由三个列组成。这些由BTreeMap
实现的列类似于Bigtable中的列。特别是,MemoryStorage
有三个列:Write
、Data
、Lock
,以与Bigtable保持一致。
此外,存储还需要提供基本的操作,如read
、write
和erase
,以操纵存储中的数据。
客户端
客户端将begin
一个包含一系列操作(如get
和set
)的事务,并通过调用commit
来提交事务。此外,客户端将调用get_timestamp
来获取时间戳。
更多实现细节可以在论文中找到。
编写自己的实现
在此项目中留有一些注释,例如“在此处定义您的定义”或“在此处编写您的代码”。您需要根据论文自行编写代码。没有太多严格限制,因此您可以在struct和proto中定义尽可能多的变量以实现功能。
测试您的作品
您可以直接在当前目录中运行以下命令
make test_percolator
依赖项
~2.7–4.5MB
~84K SLoC