项目三总结 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第1天
分布式文件存储的底层系统,实现功能包括处理网络节点故障、节点异常、数据一致性和资源扩缩容(?)
项目目标
- 基础功能:数据(文件)读写接口,容忍单点故障
- 进阶要求:(监控指标大盘是啥)监控指标大盘、系统自动扩容,元数据一致性。
- 高级特性:(应该做不了,重在了解)支持基于纠删码EC算法的存储策略。
项目要求
1.C++ / go,不能使用hadoop-hdfs源码 2.元数据、存储节点服务核心功能,客户端,数据基本管控服务。 3.性能意思是不做特殊要求,支持功能就行。 4.模块之间的RPC通信协议、元数据一致性服务可参照开源方案。 a.RPC--Thrift、BRPC、ProtoBuf(rpc框架,提供接口,设计需要的服务) b.共识算法:raft c.持久化LevelDB d.命令行、http服务、日志、监控,非核心逻辑模可使用第三方库
详细说明
系统架构
三个模块:客户端(client)、元数据服务(NameNode)、存储引擎(DataNode)
基础功能
put(create、write、close)、get(open、read、seek、pread、close)、delete、stat、mkdir、rename、list
核心模块
- 多副本,类似hdfs,副本数量选取需要依据
- 节点故障切换,数据保持一致性
- 数据写入磁盘,文件形式
- 数据组织方式,提高磁盘利用率
客户端
- SDK、http接口、命令行(选一个)
- 实现write、read、stat、rename、mkdir、list
- 多副本存储,存储节点如何选择(策略:链式、星型,对比一下)
- 节点故障时的数据补全
存储节点扩容
-新增节点,保证磁盘占用率均匀
基本性能测试报告
基本指标监控
-接口请求总量、请求成功率、网络流量、存储数据分布(命令行或web展示)
高级特性
实现基于纠删码EC算法的存储策略。