-
Notifications
You must be signed in to change notification settings - Fork 46
1: ERaftKV 白皮书目录
Colin edited this page Apr 5, 2023
·
8 revisions
本文描述了一个正在进行中的系统设计文档。旨在设计一个持久化分布式 KV 存储系统 ERaftKV,它使用 Raft 协议来保证数据一致性,同时支持节点组成多分片大规模数据存储集群,满足存储海量数据的需求。
- 数据强一致存储,保证数据安全可靠在分布式系统中持久化存储。
- 支持 KV 数据类型的操作,包括对 key 进行 PUT,GET,DEL,SCAN 操作,用户在对集群数据进行操作要保证操作的持久性,读写的顺序一致性。
- 动态的进行集群的配置,包括增加和删除节点,增加和删除集群的分片配置,包括集群分片负责哪些 key-range。 (key-range or slot 或者 key-range,slot 全部支持,可配置)
- 支持 raft 打快照,进行日志的压缩合并,快照期间要求不阻塞数据读写。
- 支持指定 leader 进行切换。
- Raft 选举支持 PreVote,新加入节点追数据不参与选举,避免触发不必要的选举。
- 支持按 slot 迁移数据,迁移过程中增量的请求不受影响,保证迁移 key 的事务。
- Raft 日志冲突的时候,减少 rpc 快速匹配冲突开始的日志位置。
- Raft 状态机里面的事件通知到上层。
- Raft 读优化,加读队列保证 leader 节点提交后返回读请求,不写没必要的日志。(是否保证线性一致性,可以配置)
- 对外就是一个大的存储集群,用户只需要增加新的机器,或者推出宕机故障机器。
- Raft 库日志存储结构
- Raft 库选举流程
- Raft 库日志复制流程
- ERaftKV 分片节点动态变更
- ERaftKV 日志快照
- ERaftKV 集群多分片
- ERaftKV 对外接口以及客户端
- ERaftKV RPC
- ERaftKV Raft 库数据结构以及操作接口
- ERaftKV 存储层核心数据结构以及操作接口
- ERaftKV 网络层核心数据接口以及操作接口
- 单测规范设计
- ci 流程
- pr 规范文档
- cr 规范文档
- 代码风格规范文档