从0实现一个KV存储 rust go实现
2023-08-04 10:54 作者:bili_93891819972 | 我要投稿
架构简介
以下对这种KV存储(下称磁盘KV)的架构进行简单描述,为后续问题描述做铺垫。
1.1.1 系统架构
磁盘KV使用目前较流行的计算存储分离架构,在TiKV集群上层封装计算层(后称Tula)模拟Redis集群(对外表现是不同的Tula负责某些slot范围),直接接入业务Redis客户端

图1:磁盘KV架构图示
业务写入数据基于Tula转换成TiKV中存储的KV对,基于类似的方式完成业务数据的读取。
注意:Tula中会选举出一个leader,用于进行一些后台任务,后续详细说。
数据编码
TiKV对外提供的是一种KV的读写功能,但是Redis对外提供的是基于数据结构提供读写能力(例如SET,LIST等),因此需要基于TiKV现有提供的能力,将Redis的数据结构进行编码,并且可以方便地在TiKV中进行读写。
TiKV提供的API比较简单:基于key的读写接口,以及基于字典序的迭代器访问。
因此,Tula层面基于字典序的机制,对Redis的数据结构基于字典序进行编码,便于访问。
注意:TiKV的key是可以基于字典序进行遍历(例如基于某个前缀进行遍历等),后续的编码,