文章目录
前言
笔者最近在学习一个第三方高效K-V存储系统RocksDB,相比较于其它类似成熟的存储系统而言,其中有很多共同之处,不过也有其独到设计之处。本文是笔者结合RocksDB GitHub上的wiki页进行的一个汇总整理,也顺当是帮助大家对RocksDB内部的整体模块设计有一个快速的了解。
RocksDB的整体模块
RocksDB作为一个可嵌入式的持久化存储系统,它是一个单点高性能的存储DB,不是我们平常我们说的分布式存储系统。RocksDB能支持非常高吞吐量的IO读写,可以很好地作为大型分布式存储系统元数据的存储媒介,比如Hadoop Ozone就将其元数据使用RocksDB作为元数据的结果写出。
RocksDB有和其它分布式存储系统类似的术语操作定义,比如WAL(Write-Ahead-Log),Transaction,Compact,Snapshot等等。不同点在于分布式存储系统需要依赖服务间的RPC通信做WAL的操作,而RocksDB没有RPC的概念。所以RocksDB本质上来说它是一个可插拔式的存储引擎选择。
以下是笔者整理出的RocksDB的整体架构预览图:
在上图中,总共将RocksDB分成了5大子模块,分别为:
- Basic Operation,基本操作定义
- Terminology&