liuxianloveqiqi / tinykv

A course to build distributed key-value service based on TiKV model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

架构图

img

底层存储引擎RockesDB

LSMT(Log-Structured Merge-Tree) - zhengbiyu - 博客园

Raft

Leader选举

raft角色关系

log日志

img

Read Index

image-20240831173244481

peer

img

multi Raft

单个 Raft-Group 在 KV 的场景下存在一些弊端:

(1) 系统的存储容量受制于单机的存储容量(使用分布式存储除外)。

(2) 系统的性能受制于单机的性能(读写请求都由Leader节点处理)。

MultiRaft 需要解决的一些核心问题:

(1) 数据何如分片。

(2) 分片中的数据越来越大,需要分裂产生更多的分片,组成更多 Raft-Group。

(3) 分片的调度,让负载在系统中更平均(分片副本的迁移,补全,Leader 切换等等)。

image-20240830104751703

Percolator

image-20240901102835317

About

A course to build distributed key-value service based on TiKV model

License:Apache License 2.0


Languages

Language:Go 99.2%Language:Makefile 0.4%Language:Shell 0.4%