项目简介
本项目是一个基于Java的分布式文件存储系统,目标是提供高效、可靠的文件存储和访问服务。系统采用分布式架构,支持文件的分布式存储、访问和管理,适合大规模文件存储和处理场景。
项目的主要特性和功能
- 分布式文件存储
- 文件存储节点:多个存储节点负责实际的文件存储和IO操作。
- 调度器/注册中心:调度器管理文件存储位置,维护文件目录树,协调客户端和存储节点通信。
- 文件操作
- 文件上传:客户端可将文件上传到系统,系统自动选合适存储节点存储。
- 文件下载:客户端能从系统下载文件,系统按存储位置选合适节点下载。
- 文件删除:客户端可删除系统文件,系统自动清理存储节点上的文件副本。
- 高可用性和容错性
- 心跳检测:存储节点定期向调度器发心跳,使调度器及时掌握节点状态。
- 副本管理:支持文件多副本存储,保障节点故障时文件仍可用。
- 集群管理
- 集群模式:支持多个调度器节点组成集群共同管理文件存储和访问。
- 数据同步:集群中调度器节点可同步数据,保证数据一致性。
- 用户认证和授权
- 用户认证:客户端访问系统需身份验证。
- 权限管理:支持基于用户的权限管理,不同用户有不同文件访问权限。
安装使用步骤
1. 环境准备
确保系统安装Java 8或更高版本,配置好分布式环境,保证各节点正常通信。
2. 配置文件
根据实际环境配置tracker_config.json
和storage_config.json
文件,设置调度器和存储节点相关参数。
3. 启动调度器
java
NodeConfig nodeConfig = new NodeConfig("/src/tracker_config.json");
TrackerApplication application = new TrackerApplication(nodeConfig);
try {
Runtime.getRuntime().addShutdownHook(new Thread(application::shutdown));
application.start();
} catch (Exception e) {
e.printStackTrace();
log.info("Tracker Application Start Error!!");
System.exit(1);
}
4. 启动存储节点
java
NodeConfig nodeConfig = new NodeConfig("/src/storage_config.json");
StorageApplication application = new StorageApplication(nodeConfig);
try {
Runtime.getRuntime().addShutdownHook(new Thread(application::shutdown));
application.start();
} catch (Exception e) {
log.info("Tracker Application Start Error!!");
System.exit(1);
}
5. 客户端测试
java
NodeConfig nodeConfig = new NodeConfig("/src/client_config.json");
ClientApplication application = new ClientApplication(nodeConfig);
try {
application.start();
ClientFileService fileService = application.getFileService();
Map<String, String> attr = new HashMap<>(Constants.MAP_SIZE);
attr.put("aaa", "1222");
fileService.put("/aaa/bbb/susu.jpg", new File(UPLOAD_LOCAL_PATH), -1, attr);
} catch (Exception e) {
throw new RuntimeException(e);
}
6. 关闭系统
系统关闭时,调用application.shutdown()
方法,确保系统资源正确释放。
通过以上步骤,可成功启动并使用本分布式文件存储系统。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】