如何解决远程机房上传war包文件慢问题?


声明:本文转载自https://my.oschina.net/u/1263909/blog/1816407,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

上传文件到远程机房速度一般比较慢,例如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建立缓存。

 

运行效果

  需要传输的文件大小 上传耗时
优化前 14330 KB 140 秒
优化后       90 KB     5 秒

 

代码仓库

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

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

 

注意:

使用java.util.zip.ZipFile先解压war包,再将解压后目录压缩成zip文件,两个文件的MD5值不一样。参见

https://my.oschina.net/u/1263909/blog/1811881

 为了保证上传文件后MD5值不变,采取了直接修改war包的方式。

 

本文发表于2018年05月22日 10:00
(c)注:本文转载自https://my.oschina.net/u/1263909/blog/1816407,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1816 讨论 1 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1