#分布式系统 #分布式数据库 #培训 #事务 #课程 #知识 #服务器

pingcap/percolator

关于分布式数据库和分布式系统的开源培训课程

1 个不稳定版本

0.1.0 2019年3月29日

#2206数据库接口

9,192 个星标 & 254 个关注者

23KB
464

Percolator 实验室

什么是 Percolator

Percolator 是谷歌为处理非常大的数据集而构建的系统,用于增量处理。Percolator 还提供了一个具有 ACID 快照隔离语义的分布式事务协议。更多详细信息请参阅论文:使用分布式事务和通知进行大规模增量处理

实验先决条件

要开始这个实验,您需要了解以下内容:

  1. 熟悉 Rust(您也可以从我们的 Rust 培训课程中学习一些内容)

  2. 了解 protobuf 的工作原理

  3. 了解 RPC 的工作原理

  4. 了解分布式事务的概念

实验概念

服务器

在本实验中,有两种服务器提供不同的服务:TSO 服务器和存储服务器。

TSO 服务器

Percolator依赖于一个名为时间戳预言机的服务。由TimestampOracle实现的TSO服务器可以按严格递增的顺序生成时间戳。所有事务都需要获取唯一的时间戳以指示执行顺序。

存储服务器

Percolator建立在Bigtable之上,向用户呈现一个多维排序映射。在本实验中,使用由MemoryStorage实现的存储服务器来模拟Bigtable,该服务器由三个列组成。这些由BTreeMap实现的列类似于Bigtable中的列。特别是,MemoryStorage有三个列:WriteDataLock,以与Bigtable保持一致。

此外,存储还需要提供基本的操作,如readwriteerase,以操纵存储中的数据。

客户端

客户端将begin一个包含一系列操作(如getset)的事务,并通过调用commit来提交事务。此外,客户端将调用get_timestamp来获取时间戳。

更多实现细节可以在论文中找到。

编写自己的实现

在此项目中留有一些注释,例如“在此处定义您的定义”或“在此处编写您的代码”。您需要根据论文自行编写代码。没有太多严格限制,因此您可以在structproto中定义尽可能多的变量以实现功能。

测试您的作品

您可以直接在当前目录中运行以下命令

make test_percolator

依赖项

~2.7–4.5MB
~84K SLoC