Skip to content

YiJustin401/MixedStorage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

混合存储

基础准备

  • 目标定义:
    • 明确软件的使用场景和功能需求(如块存储、文件存储或对象存储)
    • 定义系统规模(如存储容量、QPS、并发用户数)
    • 确定支持的平台(Linux、Windows、云环境)
  • 知识准备
    • 分布式系统基础:CAP 理论、一致性模型(如强一致、最终一致性)。
    • 存储系统知识:文件系统原理(如 ext4、XFS),对象存储(如 S3 协议)。
    • 网络通信:TCP/IP、RPC(如 gRPC 或自定义协议)。
    • 编程与工具:掌握 C++ 17 或更高版本,使用 CMake 构建项目,工具链如 gdb、valgrind。

系统设计

  • 模块划分
    • Metadata Service:管理文件或对象的元数据。
    • Storage Engine:处理数据块的存储与检索。
    • Replication Module:实现数据高可用(如主备同步、复制因子)。
    • Networking Layer:负责客户端与节点间通信。
    • Scheduler:任务分配与负载均衡。
  • 架构模式
    • 单 Master 多 Slave,或者去中心化(如 Raft / Paxos 协议)。
    • 数据切分与分片策略:Hash-based 分区或 Range-based 分区。
    • 数据一致性:如基于 WAL 的写前日志。
  • 性能与扩展
    • 支持水平扩展(节点增加/减少)。
    • 使用 Page Cache、SSD 缓存等优化存储性能。

组件开发

  • 存储引擎
    • 开始实现一个简单的存储系统,支持基本的 CRUD 操作。
    • 设计一个日志结构合并(LSM)树或 B+ 树索引。
    • 实现数据压缩与快照。
  • 网络模块
    • 初步设计基于 RPC 的通信框架。
    • 实现消息传递与心跳机制,确保节点健康状态。
  • 分布式特性
    • 基于 Raft 实现分布式一致性。
    • 数据副本机制,确保容灾能力。

高可用与性能优化

  • 高可用
    • 故障检测与恢复。
    • Leader Election:自动切换主节点。
    • 多副本一致性检查与修复。
  • 性能
    • IO 模型优化(如异步 IO、Direct IO)。
    • 使用内存映射文件(mmap)或 io_uring 提升性能。
    • 实现冷热数据分层存储。

测试部署

  • 测试
    • 单元测试与集成测试。
    • 压力测试,模拟高并发与大数据场景。
  • 部署
    • 支持容器化(Docker/Kubernetes)。
    • 提供运维工具,支持监控与报警。

持续迭代

  • 增加 S3 接口,支持对象存储。
  • 支持主流文件系统(与 FUSE 集成,提供挂载点)。
  • 添加安全机制(认证、权限控制、数据加密)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published