字节校园
用户6405
添加快捷方式
分享
Rabbit 队 简易分布式存储系统实现 青训营结业项目答辩汇报
输入“/”快速插入内容
Rabbit
队 简易分布式存储系统实现
青训营结业项目答辩汇报
一、项目介绍
项目核心信息:一个用
G
o
语言开发,使用
Raft 协议
来维护
namenode
一致性,可以通过命令行进行交互的简易分布式存储系统
Github 地址:
https://github.com/HLRJ/simple-distributed-storage-system
二、项目分工
三、项目实现
3.1 技术选型与相关开发文档
•
RPC 通信协议:
https://github.com/protocolbuffers/protobuf
•
元数据服务一致性:
https://github.com/lni/dragonboat
•
命令行解析:
https://github.com/spf13/cobra
•
日志模块:
https://github.com/sirupsen/logrus
•
链路追踪:
https://github.com/openzipkin/zipkin-go
•
测试框架:
https://github.com/onsi/ginkgo
3.2 架构设计
架构图
基本思路
•
client 与 namenode 交互,确定数据的存储分布,datanode 提供基本的 KV 存储抽象
•
namenode 之间通过 Raft 协议达成元数据一致性,其 leader 节点负责写请求,其余节点仅可以负责读请求
•
datanode 之间不存在通信,datanode 仅会在注册时与 namenode 集群通信
写流程
1.
client 向 namenode 请求创建一个文件
2.
namenode 将文件分块,设置数据结构,并返回块的大小
3.
client 以块为单位,向 namenode 请求该块应存储的 datanode 地址
4.
client 向返回的 datanode 发起写请求,并记录请求结果
5.
client 通知 namenode 写入的结果
在创建文件时,必须有
replicaFactor
个已注册的 datanode,否则会创建失败
读流程