從0實(shí)現(xiàn)一個(gè)KV存儲(chǔ) rust go實(shí)現(xiàn)
2023-08-04 10:54 作者:bili_93891819972 | 我要投稿
架構(gòu)簡介
以下對(duì)這種KV存儲(chǔ)(下稱磁盤KV)的架構(gòu)進(jìn)行簡單描述,為后續(xù)問題描述做鋪墊。
1.1.1 系統(tǒng)架構(gòu)
磁盤KV使用目前較流行的計(jì)算存儲(chǔ)分離架構(gòu),在TiKV集群上層封裝計(jì)算層(后稱Tula)模擬Redis集群(對(duì)外表現(xiàn)是不同的Tula負(fù)責(zé)某些slot范圍),直接接入業(yè)務(wù)Redis客戶端

圖1:磁盤KV架構(gòu)圖示
業(yè)務(wù)寫入數(shù)據(jù)基于Tula轉(zhuǎn)換成TiKV中存儲(chǔ)的KV對(duì),基于類似的方式完成業(yè)務(wù)數(shù)據(jù)的讀取。
注意:Tula中會(huì)選舉出一個(gè)leader,用于進(jìn)行一些后臺(tái)任務(wù),后續(xù)詳細(xì)說。
數(shù)據(jù)編碼
TiKV對(duì)外提供的是一種KV的讀寫功能,但是Redis對(duì)外提供的是基于數(shù)據(jù)結(jié)構(gòu)提供讀寫能力(例如SET,LIST等),因此需要基于TiKV現(xiàn)有提供的能力,將Redis的數(shù)據(jù)結(jié)構(gòu)進(jìn)行編碼,并且可以方便地在TiKV中進(jìn)行讀寫。
TiKV提供的API比較簡單:基于key的讀寫接口,以及基于字典序的迭代器訪問。
因此,Tula層面基于字典序的機(jī)制,對(duì)Redis的數(shù)據(jù)結(jié)構(gòu)基于字典序進(jìn)行編碼,便于訪問。
注意:TiKV的key是可以基于字典序進(jìn)行遍歷(例如基于某個(gè)前綴進(jìn)行遍歷等),后續(xù)的編碼,
標(biāo)簽: