牛!Java微服务版本“仿百度网盘”系统来了

这个系统略牛逼!

适合java新手司机学习用;

适合java老司机搞事用;

牛!Java微服务版本“仿百度网盘”系统来了_第1张图片

github开源地址:

https://gitee.com/college996/zwz-netdisk

牛!Java微服务版本“仿百度网盘”系统来了_第2张图片

就是架构也是很厉害;

前后端分离,前端是vue.js+elementui;

后端是采用SpringBoot+Dubbo+Zookeeper+Nacos为技术栈的微服务架构模式。

页面简洁美观、易于上手学习。

在线演示站点:

http://106.15.248.223/disk

界面很不错哦!

牛!Java微服务版本“仿百度网盘”系统来了_第3张图片

牛!Java微服务版本“仿百度网盘”系统来了_第4张图片

牛!Java微服务版本“仿百度网盘”系统来了_第5张图片

牛!Java微服务版本“仿百度网盘”系统来了_第6张图片

牛!Java微服务版本“仿百度网盘”系统来了_第7张图片

最后再来看看平台的架构和详细功能以及使用吧

一、平台介绍

在gitee和github里面基本上找不到一款好用、功能完善、且开放源码的网盘系统,有一些可以免费试用但是只提供安装包,于是在利用业务时间开发了一套轻量级且易于上手的网盘系统,主要基于目前主流的前后端分离和微服务架构模式开发,里面涉及很多的解决方案,适合没有项目经验的同学学习。网盘系统的核心目的有两个,第一:提供客户端给业务系统集成,统一管理业务系统的文件;第二:提供在线协调办公、管理个人文件的功能。系统会陆续更新和完善一些功能。

二、部署架构说明

牛!Java微服务版本“仿百度网盘”系统来了_第8张图片

三、技术栈说明

前端技术

  • ①vue.js+ElementUI 作为基础技术框架
  • ②WebUploader.js做切块上传框架

后端技术

  • ①Maven+SpringBoot+SpringDataJPA作为基础架构
  • ②Dubbo+Zookeeper作为服务治理架构
  • ③Nacos作为配置中心
  • ④Redis做分布式缓存、过期监听
  • ⑤Zookeeper做分布式锁
  • ⑥WebSocket+Netty做消息推送
  • ⑦Solr做全文检索引擎
  • ⑧FastDFS做分布式文件系统
  • ⑨基于Redis+token+自定义注解实现接口幂等性

四、功能说明

一、网盘系统

  • ①上传功能:主要是针对大文件的切块上传、秒传、文件夹上传
  • ②下载功能:主要是大文件的切块下载;多文件(夹)合并、压缩下载
  • ③文件分享:文件分享包括好友分享、私密链接分享、分享文件的转存
  • ④相册管理:可以建立不同的相册来管理图片,并且可以图片在线预览功能
  • ⑤回收站:删除的文件进入回收站,可以进行还原或者彻底删除
  • ⑥推送功能:主要是好友分享消息推送、过期消息推送、容量更新推送
  • ⑦分布式锁:主要是基于Zookeeper实现分布式锁,保证高并发情况下系统的数据安全
  • ⑧过期监听:主要是基于Redis过期事件实现监听功能,包括:分享失效监听、删除过期监听等
  • ⑨日志采集:通过AOP埋点的方式进行采集用户请求日志,并远程传输到日志服务端;自定义Dubbo的Filter实现链路ID的生成
  • ⑩文件搜索:集成Solr框架实现全文搜索功能
  • ⑪文件存储:集成FastDFS框架实现文件分布式存储
  • ⑫其他琐碎功能:比如,复杂、移动、预览、删除、重命名、在线创建、在线编辑、编辑历史版本留痕等等
  • ⑬Office在线编辑: 后期更新
  • ⑭h5版本客户端: 预计4月25号更新
  • ⑮c/s版本客户端: 后期更新
  • ⑯业务系统API客户端:【 已经完成】
  • ⑰图片新增水印: 后期更新
  • ⑱图片在线裁剪: 后期更新

二、后台系统

  • ①组件管理:主要管理文件的预览和编辑组件
  • ②类型管理:主要是管理文件的格式、对应的图标、对应的预览和编辑组件
  • ③日志管理:存储和展示业务系统的操作日志记录,并且可以根据追踪ID来关联所有的日志信息

五、系统安装步骤

参考:https://gitee.com/college996/zwz-netdisk/wikis

后期会编写一个自动化脚本,做到快速本地部署

六、版本更新说明

2020-04-14第一个版本更新

1、更新的功能点说明

  • ①开发了针对业务系统集成的客户端,netdisk-client、netdisk-client-provider
  • ②完善的接口幂等性,redisTemplate执行LUA脚本保证原子性,【判断key是否存在+保存值】这两步是有原子性问题,netdisk-web-perpc/src/main/java/com.micro.idempotence.NoRepeatAop类
  • ③日志采集,增加了开关(Nacos配置:busilog.state=off),netdisk-log-api/src/main/java/com.micro.logs.aop.CollectionLogAop
  • ④完善了Redis功能,新增redis密码,避免遭遇攻击(Nacos配置:redispwd=xxxx)
  • ⑤完善了切块临时记录存储问题,合并切块接口调用完成之后里面删除Redis里面的切块记录,避免大量切块记录过期造成的压力

2、如果想获取该版本,则更新以下操作

  • ①拉取后端代码
  • ②更新前端工程:zwz-disk-manage(新增了应用系统文件管理),更新地址:https://gitee.com/college996/zwz-disk-manage.git
  • ③Nacos配置文件,需要获取nacos_config_20200414.zip,可以从网盘分享里面获取,或者从上面的附件获取
  • ④安装Redis时,需要设置密码,参考:wiki里面的redis安装

七、对接业务系统的sdk说明

如何集成

第一步:运行netdisk-service-provider.jar

第二步:运行netdisk-client-provider.jar

第三步:业务注册,首先需要让管理员到后台系统新增一条记录,然后拿到APPID(后台系统->应用管理模块)

第四步:业务系统,采用原生的方式集成,导入disk-client-javasdk.jar包或者对应其坐标

    com.micro    netdisk-client-javasdk    0.0.1-SNAPSHOT	

示例代码:

    public static void main(String[] args){        List hosts=new ArrayList<>();        hosts.add(new HostBean("127.0.0.1", 8015, 1));        FileService fs=FileFactory.createFileService(hosts,"ddd");        //检查md5是否存在        String appId="11111";        String filemd5="xxxx";        int count=fs.checkFileByMd5(appId, filemd5);    }

第五步:业务系统,采用SpringBoot starter的方式集成,导入netdisk-spring-boot-starter.jar的坐标

    com.micro    netdisk-spring-boot-starter    0.0.1-SNAPSHOT

application.properties

    netdisk.server.host=127.0.0.1:8015

示例代码:

@Autowiredprivate FileService fs;@RequestMapping("/upload")public String upload() throws InterruptedException{    String appId="11111";    String filemd5="xxxx";    //检查md5是否存在    int count=fs.checkFileByMd5(appId, filemd5);}

3、API接口说明

由于接口太多,这里列出来不太方便,大家请看接口文件,里面的接口参数写的很清楚:

netdisk-client-javasdk/src/main/java/com.micro.netdisk.javasdk.service.FileService

八、其他相关地址说明

  • 前端工程(网盘):https://gitee.com/college996/zwz-disk.git
  • 前端工程(后台):https://gitee.com/college996/zwz-disk-manage.git
  • 网盘系统在线演示:http://106.15.248.223/disk
  • 网盘后台在线演示:http://106.15.248.223/disk-manage

你可能感兴趣的:(java,redis,分布式,spring,boot)