# jdf-system **Repository Path**: juque-framework/jdf-system ## Basic Information - **Project Name**: jdf-system - **Description**: 分布式文件服务平台,基于springboot2.X的纯java应用,去中心化,支持节点嗅探,动态下线,节点间文件自动同步,支持不停机扩展。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2023-03-15 - **Last Updated**: 2024-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jdf-system #### 介绍 分布式文件服务平台,基于springboot2.X的纯java应用,去中心化,支持节点嗅探,动态下线,节点间文件自动同步,支持不停机扩展。 #### 软件架构 软件架构说明 #### 安装教程 1. clone 源码,并使用maven编译打包; 2. 修改application-*.yml的数据库配置、jdf部分配置、日志路径配置; 3. 创建数据库jdf_system,并执行bin目录下的脚本; 4. 使用maven编译打包; 5. 拷贝jdf-system-server-1.0-SNAPSHOT.jar; 6. 基于jar包的形式启动即可; 7. 默认浏览器访问地址: http://127.0.0.1:8080; 8. 管理端界面(默认登录帐号: admin / 123456): 9. 修改配置; * WORKSPACE_ID:工作空间ID,默认DEFAULT; * NODE_NAME:节点名称,约定在同一工作空间内必须唯一; * BIND_IP:实例对应的ip,要求其他实例能正常访问该ip; * FILE_PATH:文件保存路径,约定各实例必须对应单独目录; * USER_MAC_SECRET:用户密码密钥,变更会自动同步到所有实例; * 注册信息加密的密钥:REGISTER_AES_KEY,所有实例必须保持一致; * SIGNATURE:消息同步的签名,32为随机字符串,所有实例必须保持一致; 10. 脚本启动: ``` ./startup.bat <配置文件> 或 ./startup.sh <配置文件> ``` ![图片](https://www.juque.top/jdf-admin1/jdf/file/view/9d53caef677e4cbb9ba64c3de4ef6bfa "1") 11. 容器启动参考目录:/bin/docker/ 12. 多实例ng负载参考:/bin/nginx/ #### 管理端截图: ![图片](https://www.juque.top/jdf-admin1/jdf/file/view/1910bfd20c104f799914656562623133 "1") ![图片](https://www.juque.top/jdf-admin1/jdf/file/view/4143f42a1da843a6a446caabaaa06cd6 "1") #### 预览地址: - https://www.juque.top/jdf-admin1 - https://www.juque.top/jdf-admin2 #### 使用说明 1. 技术栈使用springboot 2.3.3.RELEASE、mybatis、mybatis-plus、httpClient、disruptor; 2. 提供docker部署方案,参考bin目录下的docker配置; 3. 项目的设计初衷是为了实现去中心化的分布式文件管理系统。所以在集群模式下,支持动态扩展节点; 4. 前端模块参考:vue-jdf-system; 5. jdf-system-api模块提供基于api形式的文件上传下载; 6. 服务对外统一的上传接口:/jdf/file/upload,统一下载接口: /jdf/file/view/{fileId}; 7. api模块集成步骤: * 添加jdf-system-api到本地maven仓库: ```shell /bin/mvn_install_api.bat ``` * 添加依赖: ```xml cn.juque jdf-system-api 1.0-SNAPSHOT cn.juque framework-common 1.0-SNAPSHOT ``` * 添加配置: ```yaml jdf: protocol: http # http协议 ip-list: # jdf集群实例的ip端口 - 172.170.0.15:8080 view-url-list: # 访问文件的根路径 - https://www.juque.top platform-id: system-service # 客户端对应的平台ID secret: 139fd7368a6145dfa28830a360f268fb # jdf管理端初始化平台ID的凭据,不要保存到公共网络环境 ``` * 初始化客户端: ```java @Data @Configuration @ConfigurationProperties(prefix = "jdf") public class JdfSystemConfig { private String platformId; private String protocol; private List ipList; private List viewUrlList; private String secret; @Bean public FileInfoClient fileInfoClient() { return new FileInfoClient(this.protocol, this.ipList, this.platformId, this.secret, this.viewUrlList); } } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 版本日志: ##### 2.0 1. 移除mysql的依赖,文件、配置数据冗余到各个实例节点; 2. 文件新增虚拟目录用于归类文件; 3. 文件新增作用域,私域文件可自定义访问时长,可授权第三方客户端访问; 4. 新增权限管理模块,授权第三方管理端访问指定虚拟目录下的文件; 5. 部分配置参数由配置文件移到前端手动配置。配置管理新增“作用范围”,“系统级别”的配置不允许删除,配置也支持节点间相互同步; 6. 新增IP黑名单模块,加入黑名单的IP将无法访问jdf集群; 7. 引入工作空间概念,文件将冗余到同一工作空间下的所有实例,但文件只会存在任一工作空间; 8. 修复首页没有自动刷新的bug; #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)