项目三总结 | 青训营笔记

188 阅读2分钟

项目三总结 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第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算法的存储策略。