一个基于LSM和RAFT的分布式键值对数据库项目

简介

本人这段时间基于LSM(Log Structure Merge)技术和RAFT算法实现了一个分布式键值对存储系统项目,现在决定将该项目开源。项目工程位于:https://gitlab.com/netium/distkvstore

项目技术架构

该项目从整体上分为数据库引擎本身和共识引擎两部分。

数据库引擎是基于LSM的实现。
共识引擎使用了jgroups-raft库,该库提供了一个RAFT算法的实现。

该数据库可以根据配置文件的设定运行于单机模式和集群模式。当运行在单机模式下,共识引擎将不会启动,所有来自于客户端的请求将直接进入数据库引擎处理。当运行在集群模式下,共识引擎将会启动,集群里任何一个节点都能接收来自于客户端的请求,但是请求将会全部重定向到主节点,然后在共识引擎达成共识后将请求提交到数据库引擎处理。