tinykv
文章平均质量分 91
mrxs
潜心修炼
展开
-
实验指导书(翻译)Project 4: Transactions
Project 4: Transactions在之前的项目中,你已经建立了一个 key/value 数据库,通过使用 Raft,该数据库在多个节点上是一致的。要做到真正的可扩展,数据库必须能够处理多个客户端。有了多个客户端,就有了一个问题:如果两个客户端试图 "同时 "写同一个 key,会发生什么?如果一个客户写完后又立即读取该 key,他们是否应该期望读取的值与写入的值相同?在 Project 4 中,你将通过在我们的数据库中建立一个事务系统来解决这些问题。该事务系统将是客户端(TinySQL)和服务翻译 2021-10-22 19:48:04 · 825 阅读 · 0 评论 -
实验指导书(翻译)Project3 MultiRaftKV
Project 3 MultiRaftKV在 Project2 中,你建立了一个基于Raft的高可用的kv服务器,做得很好!但还不够,这样的kv服务器是由单一的 raft 组支持的,不能无限扩展,并且每一个写请求都要等到提交后再逐一写入 badger,这是保证一致性的一个关键要求,但也扼杀了任何并发性。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9tK67iR-1634903019137)(https://github.com/tidb-incubator/tinyk翻译 2021-10-22 19:45:58 · 862 阅读 · 0 评论 -
实验指导书(翻译)Project2 RaftKV
Project2 RaftKVRaft 是一种共识算法,其设计理念是易于理解。我们可以在Raft网站上阅读关于 Raft 的材料,Raft 的交互式可视化,以及其他资源,包括Raft的扩展论文。在这个项目中,将实现一个基于raft的高可用kv服务器,这不仅需要实现 Raft 算法,还需要实际使用它,这会带来更多的挑战,比如用 badger 管理 Raft 的持久化状态,为快照信息添加流控制等。该项目有3个部分需要去实现,包括:实现基本的 Raft 算法在 Raft 之上建立一个容错的KV服务增翻译 2021-10-22 16:26:36 · 1146 阅读 · 0 评论 -
实验指导书(翻译)Project1 StandaloneKV
Project1 StandaloneKV在这个项目中,我们将会在列族的支持下建立一个独立的 key/value 存储 gRPC 服务。Standalone 意味着只有一个节点,而不是一个分布式系统。列族(CF, Column family)是一个类似 key 命名空间的术语,即同一个 key 在不同列族中的值是不同的。你可以简单地将多个 CF 视为独立的小型数据库。CF 在 Project4 中被用来支持事务模型。该服务支持四个基本操作:Put/Delete/Get/Scan,它维护了一个简单的 ke翻译 2021-10-21 23:13:44 · 1770 阅读 · 0 评论