• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

app-pool-server: 文件传输服务器,采用增量传输方式,解决远程机房上传文件网速慢问 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

app-pool-server

开源软件地址:

https://gitee.com/jscode/app-pool-server

开源软件介绍:

app-pool-server

项目介绍

上传文件到远程机房速度一般比较慢,例如100KB/s。使用putty工具上传war包(40M)到远程服务器需要几分钟。

为了提高效率,减少上传文件时间,我们可以尽量减少要传输的文件内容。

war包是zip压缩文件,同一个应用,不同版本的war包,会包含很多相同的压缩文件。上传文件时,如果不需要上传服务器端已经存在的压缩文件,那就可以大大减少要传输的文件内容。

实现原理

  1. 客户端在上传文件前,解析文件,计算压缩文件中每个Entry内容的MD5值。

  2. 客户端将Entry内容的MD5值和长度发送到服务器端,检查服务器是否已存在对应的Entry。

  3. 服务器根据Entry内容的MD5值和文件长度进行判断,检查服务器端存在哪些Entry,并返回给客户端。

  4. 客户端将服务器端已存在的Entry从文件中删除,生成新文件(压缩文件内容)。

  5. 客户端将新文件,和已去掉的Entry列表发送给服务器端。

  6. 服务器端将去掉的Entry还原到上传的文件中(还原文件内容)。

  7. 服务器端将文件解压缩,将文件包含的Entry建立缓存。

multisources

运行效果

方案需要传输的文件大小上传耗时
优化前14330 KB140 秒
优化后90 KB5 秒

安装教程

项目编译 mvn clean install

使用说明

需要与app-pool-client客户端配合一起使用

  1. 启动http服务器
java -jar .\target\app-pool-server.jar d:\tmp  #第一个参数为应用包存放目录
  1. 使用客户端app-pool-client上传文件
java -jar target/app-pool-client.jar http://localhost d:\tmp\jar-demo.jar # 第一个参数为服务器地址,第二个参数为上传的文件。参考https://gitee.com/jscode/app-pool-client
  1. 查看已上传的文件
用浏览器打开http://localhost

multisources

文件缓存

  • 服务器端只缓存大小超过100KB的文件

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap