【BRFS文件系统概要设计】是北京博睿宏远数据科技股份有限公司提出的一项针对小文件存储问题的解决方案。设计目标是构建一个自主的文件系统,旨在解决内部产品(如SDK、Browser、Server等)在快照存储上的挑战,提供便捷的使用体验,并计划在成熟后开源,提升公司在业界的影响力。
1. **背景与目的**
- 背景:随着博睿公司的快速发展,内部产品面临大量小文件存储问题,开源文件系统虽能解决,但部署和使用不便。
- 目的:设计BRFS文件系统,以产品规划视角,明确应用范围、产品形态、技术框架、模块架构,为后续开发提供指导,同时为详细设计文档提供依据。目标读者包括产品经理、市场经理、售前人员、开发人员和测试人员。
2. **术语定义**
- StorageName:存储空间名称,用户在存储数据时必须指定。
- ServerID:服务标识,每个服务启动时需有唯一标识。
- FID:文件标识,由特定编码的字符串组成,用于读取数据。
3. **总体设计**
- 需求:参照《BRFS系统需求规格说明书.doc》。
- 运行环境:硬件要求为中档LINUX服务器,4CPU,8GB内存及以上,高速硬盘,千兆以太网卡和光纤接口卡。软件环境包括LINUX操作系统、特定版本的zookeeper、JDK、Hadoop-hdfs、nginx和netty。
- 系统设计:系统架构采用插件化,方便扩展和维护。系统安全涵盖操作系统、软件安全和通信监控。系统框架包含Client、Server、nginx、zookeeper和可选的Hdfs模块。
4. **系统模块**
- **Client**:作为库被其他系统引用,通过HTTP和PB协议与Server通信,提供权限验证、数据读写、删除等功能。
- **Server**:运行在服务器上,为Client提供服务,包括权限验证、数据读写、副本管理、数据归并、环境监控等。
- **nginx**:开源组件,用于负载均衡和安全区的代理。
- **zookeeper**:开源组件,用于分布式管理和服务器协作。
- **hdfs**:可选开源组件,用于归并后的大数据存储。
- **可视化监控与报警**:Web服务,实时显示Server的监控数据和文件系统资源信息。
5. **系统架构**
- 整体架构基于组件化,各模块物理独立、逻辑统一,有接口实现无缝结合,易于扩展。图1展示了系统框架,包括Client、Nginx、Zookeeper服务器、Hdfs以及可视化监控和报警组件。
6. **系统特点**
- 插件化设计:便于添加新功能和维护。
- 安全性:从多层面保障系统安全,包括程序监控和异常追踪。
- 可扩展性:模块化结构支持系统规模的扩大和新功能的集成。
- 开源兼容:部分组件如zookeeper和hdfs,可以与开源社区保持同步,利用社区力量持续优化。
BRFS文件系统设计综合考虑了稳定性、扩展性和安全性,旨在为博睿公司的产品提供高效、灵活的文件存储解决方案,同时也为未来开源和行业贡献打下基础。