我是靠谱客的博主 高贵煎蛋,最近开发中收集的这篇文章主要介绍ftp桥接到http服务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先说一下我的需求:我的linode服务器最近ftp和sftp连不上了,端口被封了,只有http可以访问,我没有办法上传文件了。因为我平常都用beyond compare上传文件,很方便。所以我希望能通过在本地起一个ftp服务,连接远程的http服务器,这样我的beyond compare还能继续使用。


需求很简单,只需要实现一个可扩展的ftp服务器,然后把读本地文件的部分改写为通过远程的http接口访问服务器上的文件系统。经过几天的努力,该功能已经全部实现了。


遇到的问题:

1. 大文件,对于大的文件,一般的http服务器都有上传文件大小限制,我是按段上传的,所以不会有这个问题。可以上传任意大小的问题。


2. 上面的问题衍生出来的新的问题,如果文件过大,按段上传可能会发起很多http请求,过多的连接有可能耗尽本机的socket端口,

   目前采用http1.1的长连接来减少连接次数,并同时设置socket的reuseAddress为true。


3. 分段上传所分段不可太小,否则很慢,如果太大,浪费内存,如果同时上传文件过多,很可能很快耗尽虚拟机内存,因为来不及释放。所以采用自动调整缓存大小的策略,一开始使用一个很小的缓存,每次flush缓存大小扩容一倍直到配置的最大值,最大不超过1M(可配置)。 一般的小文件基本不需要扩容。


4. 为了使程序尽可能简单,一开始上传采用段数据的时候采用了base64编码,经测试大文件感觉较慢,后来改为chunked方式上传,速度可以提升好几倍。

最后

以上就是高贵煎蛋为你收集整理的ftp桥接到http服务的全部内容,希望文章能够帮你解决ftp桥接到http服务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部