首页 新闻 会员 周边

从B服务器上获取A服务器上的文件

0
悬赏园豆:50 [已解决问题] 解决于 2014-01-16 12:48

A服务器:存放着原始数据,大约400G

B服务器:安装有我们公司的WEB应用系统,这个系统需要获取A服务器上的文件数据,然后会对数据内容进行分析,判断,归类,然后将相应信息存放到数据库,相应文件会存放到B服务器的FTP中。

还有一点,B服务器不止一个,实际上是许多用户都有自己的服务器,安装有我们的系统,但是原始数据都在A服务器上。

以前我们的系统实现的是读取本地的文件,分析后上传到FTP,所以最差就是拿着U盘去A服务器拷贝数据到自己的服务器上就行了。

当然用户肯定不满意,于是现在的想法是在A服务器上建立FTP服务,其余的服务器都可以利用FTP服务去获取文件。

我的问题是除了使用FTP服务,还有其他解决方案来获取A服务器上的数据吗?

问题补充:

A服务器上数据格式:一个文件夹里放着所有的数据,实际上这个文件夹的格式由几十个子文件夹构成,每一个子文件夹对应一个用户的数据,每一个用户的数据格式也是相同的。子文件夹中有一个excel文件和若干孙文件夹,孙文件夹中就是真正的附件类容,其实全部都是图片资料,其实孙文件夹中还有一些目录结构,不过这都是附件本身的格式了,就不用管了。现在要做的就是首先得到那个excel文件,对其中的内容进行分析,excel每一行对应一个图片,分析主要做两件事:第一件事是排错,因为excel是手动录入的,有非常多的错误得查出来,如果没有错误就拿到那张图片附件上传到另一个FTP服务器上(一般就是安装有我们系统的那个服务器),同时还要保存一些信息到数据库中,就是记录那张图片的信息(比如那张附件是属于谁的等等)

现在使用的是FTPClient这个类去获取文件的。

主要是为了了解是否有更好的实现方式,我以为这种问题应该不是我个人才会遇到的问题。关键点在于速度,现在的任务类似于初始化的工作,400G的数据最好不要超过一天的时间。一旦我把这些数据分析后放到了另外一个FTP服务器上,原始数据就没用了。

总结:

(1)最好的办法就是直接在A服务器上布置系统,相应的数据库,FTP服务器也在A服务器上,这样就不需要经过网络传输了。

(2)客户要求系统不能布置在A服务器上,只能在B服务器上,那么就得一步步优化了,首先是A服务器上获取文件的时间,网络传输的时间,B服务器上的处理时间。这里的优化和实际情况是强相关的,比如是否可以对文件hash建立索引。

(3)如果需要网络传输,必然需要传输协议,至于是FTP,还是http,SMB,应该都可以,就是不清楚不同的协议对速度的影响大不大?

(4)最后谢谢各位热心朋友的回答

ThreeTree的主页 ThreeTree | 小虾三级 | 园豆:1490
提问于:2014-01-10 22:55
< >
分享
最佳答案
0

用SMB协议或ftp协议,如果是数据库就用sqlserver协议,看数据是怎么存放的,你想怎么样访问了?

收获园豆:20
空明流光 | 初学一级 |园豆:106 | 2014-01-12 22:06

最好的办法就是把所有数据都分析好后分布式部署在多台server上,然后CDN负载均衡。让客户端网站来访问。

空明流光 | 园豆:106 (初学一级) | 2014-01-12 22:11

@沧海一杰: 原始数据肯定是不动的,就放在A服务器上了。而且现在的工作类似于初始化数据库。初始化完成了,客户端网站访问就有数据了,那些数据其实是历史数据,需要导入到我们公司的系统中,当然我们系统也支持新数据的录入。想问下如果是SMB协议或者sqlserver协议,那么有没有类似FTPClient的工具类?

ThreeTree | 园豆:1490 (小虾三级) | 2014-01-13 12:18

@ThreeTree: 如果每个客户端需要的数据和处理算法都不一样,那就没办法了,只能说是优化A上的数据存储,比如索引之类的。如果每个客户端都是有一定的算法,想办法在A上把常用数据或所有数据Hash处理,或者直接在A上放已经分析好的数据,客户端想要哪部分发给他就行了。客户总不能每次都要400G的。。

空明流光 | 园豆:106 (初学一级) | 2014-01-13 12:27

@沧海一杰: A服务器上的数据到底是什么数据呢,是视频,音乐还是XML文档呢,这个你都没说

空明流光 | 园豆:106 (初学一级) | 2014-01-13 12:28

@沧海一杰: 文件全部都是图片jpg格式,当然还有若干excel文件,excel文件每一行包含很多内容,主要有图片的名称,以及该张图片属于谁的等等。虽然用户有很多,但是每个用户的数据都"一样",都是若干excel加上一堆图片,现在的实现也是一个用户一个用户的手动处理,算法完全一样,就是得指向不同的文件夹(原始数据)。顺便说一下我的任务是用400G原始数据来刷我们系统的数据库,而不是客户端每一次访问都要400G,还去访问那400G原始数据。一旦刷完数据库,原始数据就没有用处了。

同时谢谢你提供的一个思路,我从A服务器上回去了excel文件,分析完毕之后没有必要把相应的图片资料放在B服务器上,我完全可以把图片还存在A服务器上,也就是在A服务器上再建一个FTP服务,这样可以避免网络传输,应该可以节约时间。

晕,还是有问题,400G+400G,A服务器估计装不下。不过总算是一种方案。

ThreeTree | 园豆:1490 (小虾三级) | 2014-01-14 12:56

@ThreeTree: 

400G 硬盘才多少MONEY? 就算是SAS硬盘或是SSD硬盘,也贵不过解决方案的费用吧?

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-01-14 14:47
其他回答(5)
0

好多好多。

http/web service/windows service/wcf ....

收获园豆:20
爱编程的大叔 | 园豆:30839 (高人七级) | 2014-01-10 23:42

可以说说你指的http是怎样的一个流程吗?

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-01-12 18:07

@ThreeTree: 

 bitbug 说:“ftp不好用吗?你问什么会提出现在的问题?能明确说一下你的目的吗?是为了改进读取速度,还是为了改变实现方式,还是为了其他特殊需求呢?”

这个是最重要的,你的需求很不明确。

首先,有没有必要考虑安全问题,

其次,这些文件是什么样的文件?DOC、JPG、XLS?....

再次,你实现这个需要,可以付出的最大成本大约是多少?(不是找你要钱)

最小成本希望是多少?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-01-13 18:04

@爱编程的大叔: 你这么一说,确实需要具体情况具体讨论了,因为我只能想到FTP,所以想了解一下是否有其他思路。主要需求是速度,因为400G文件是连续的读取一遍,相当于利用原始数据初始化了系统中的数据库了。之后这400G原始数据就不需要了。400G文件要通过网络传输,速度很是问题。安全基本不用考虑,只要能实现功能就可以,每个用户的数据都是由若干excel文件和一堆文件夹组成,文件夹里是扫描图片资料jpg格式。excel中每一行就是图片的文件名,以及该图片属于谁的等等,要做事的就是分析excel内容把相应的图片放到相应的地方。成本就不考虑了,目前只是想想可行性方案有哪些.

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-01-14 12:43

@ThreeTree: 

你有几个误区,

1、速度问题是由好多因素组成的,比如服务器之间的连接带宽,服务器的文件服务性能。

2、类似楼下说的,图片不下载,而在A服务器上保存,也是一个方案。或者说,不保存图片,只是保存一个图片的链接(如果这些图片不删除,而只是引用的话),这方法可以避免400G+400G的问题。

3、建议分析工作是否可以先在A服务器做好?如果数据不需要与B服务器上的本地数据比较的话,完全可以将数据在A服务器上先进行分析,然后B服务器可以直接到A服务器的数据库中取得分析结果。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-01-14 14:52

@爱编程的大叔: 

确实如楼上所说,多因素造成的。不是单纯的用哪种协议或方式就能彻底解决你的问题。你的需求是要下载文件,那么肯定走网络,必然需要用网络协议。

那么从服务器端的文件处理能力到网络传输速度,再到客户端处理能力,还有下载文件的传输协议都有可以优化的空间。

支持(0) 反对(0) bitbug | 园豆:470 (菜鸟二级) | 2014-01-15 08:44
0

rsync 同步,设定同步的目录,配置主从让他们自己去同步去

收获园豆:5
l4wl137 | 园豆:274 (菜鸟二级) | 2014-01-11 10:42

这个没有编程接口吧,好像是通过命令来手动同步,我只是想获取到A服务器的文件来处理它。并不需要同步。但还是谢谢你。

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-01-12 18:04
0

也想了解下呢.帮你顶一个

chanchaw | 园豆:65 (初学一级) | 2014-01-11 12:46
0

同想了解!

大楚打码人 | 园豆:4313 (老鸟四级) | 2014-01-13 10:58
0

ftp不好用吗?你问什么会提出现在的问题?能明确说一下你的目的吗?是为了改进读取速度,还是为了改变实现方式,还是为了其他特殊需求呢?

收获园豆:5
bitbug | 园豆:470 (菜鸟二级) | 2014-01-13 15:20

因为我只能想到FTP,所以想了解一下是否有其他思路。主要需求是速度,因为400G文件是连续的读取一遍,相当于利用原始数据初始化了系统中的数据库了。之后这400G原始数据就不需要了。400G文件要通过网络传输,速度很是问题。安全基本不用考虑,只要能实现功能就可以,每个用户的数据都是由若干excel文件和一堆文件夹组成,文件夹里是扫描图片资料jpg格式。excel中每一行就是图片的文件名,以及该图片属于谁的等等,要做事的就是分析excel内容把相应的图片放到相应的地方。成本就不考虑了,目前只是想想可行性方案有哪些.

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-01-14 12:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册