# jdf-system **Repository Path**: epoint/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**: 0 - **Forks**: 2 - **Created**: 2023-10-17 - **Last Updated**: 2023-10-17 ## 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. 修改jdf-system-console的yml配置,基于jar包的形式启动即可完成高可用的配置; 10. 管理端界面(默认登录帐号: admin / 123456): 11. 也可以下载编译后发行版,发行版启动 ``` ./startup.bat <配置文件> 或 ./startup.sh <配置文件> ``` ![图片](https://www.juque.top/jdf/file/view/45b59ed153428255d4a37bbb99410407 "1") ![图片](https://www.juque.top/jdf-console/jdf/file/view/19c746ef0ca69278b3f667f98cb238eb "1") ![图片](https://www.juque.top/jdf-console/jdf/file/view/edcc83d2cc50a16420cfea4d260e736f "1") ![图片](https://www.juque.top/jdf-console/jdf/file/view/b2a79c54a0294ec13ca3197620ffabf8 "1") #### 使用说明 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. jdf-system-console模块简单的实现了上传下载接口的高可用,仅支持轮询算法。在实际项目中需要单独部署; 8. api模块集成步骤: * 添加依赖: ```xml cn.juque jdf-system-api 1.0-SNAPSHOT cn.juque framework-common 1.0-SNAPSHOT ``` * 添加配置: ```yaml jdf: ip-list: 127.0.0.1:8080 platform-id: api-consumer secret: a1088303157342c8a1a098e2588aa10a ``` * 初始化客户端: ```java @Configuration @Slf4j public class JdfSystemConfig { @Value("#{'${jdf.ip-list}'.split(',')}") private List ipList; @Value("${jdf.platform-id}") private String platformId; @Value("${jdf.secret}") private String secret; @Bean public FileInfoClient fileInfoClient() { return new FileInfoClient(ipList, platformId, secret); } } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 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/)