EzRaft:用100行代码构建分布式KV存储

在过去几年里,我大部分时间都致力于OpenRaft的研发与维护。

OpenRaft是一个开源项目,在全球各地的多家企业中投入生产运行。为了支持如此广泛的应用场景,它必须具备极高的灵活性。日志条目、日志ID、状态机以及存储等各项功能,均以半场休息特性来表达,因此用户可以根据自身需求对其进行灵活定制。

如今,OpenRaft的API和性能均已相当成熟。然而,其采用的筏子算法模型仍然较为抽象。

OpenRaft的学习曲线

这种抽象化带来了较高的学习门槛。其主要包含三个部分:

  1. 理解Raft共识算法:在基于OpenRaft构建分布式存储之前,你必须先弄清楚Raft能够保证什么、又无法保证什么。
  2. 了解Rust语言:OpenRaft是用Rust编写的。要阅读代码并构建应用,需要对Rust的抽象概念和泛型有一定程度的熟悉度。
  3. 理解OpenRaft自身的抽象机制:一旦你理解了这套架构的原理,抽象化就能让软件的使用变得更加便捷。对于经验丰富的用户而言,这既提供了便利,也赋予了更大的灵活性;但当你从底层开始学习这个系统时,抽象本身反而会成为你需要首先掌握的另一项内容。

这种现象在使用抽象时很常见:在全面理解整个系统之前,你必须先弄清各个抽象模块之间的相互关系。大多数人往往更自然地从反向思维入手——先从具体的实例出发,再逐步过渡到一般性的概念。

如果你给某人一个抽象概念,并让他们想象一个具体的例子,那么这个概念往往难以真正理解;而如果先给他们一个具体的例子,他们往往能更容易看清其中蕴含的规律与模式。

OpenRaft的抽象设计使其成为一款强大且稳定的工作工具,但并不一定意味着从这里起步学习会特别容易。

为什么我开发了EzRaft

作为OpenRaft的维护者,我经常听到一些开发者表示,他们刚刚接触分布式系统、Rust,或者OpenRaft本身。他们想要……

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论