首页新闻找找看学习计划

文件分布式存储

0
悬赏园豆:100 [待解决问题]

有多个web程序共用一组文件服务器,在多个web程序中上传、下载的地址是相同的。现在要做的是,当web程序上传附件时 会自动判断各个文件服务器的负载情况,选择最优的服务器进行上传,下载的时候,自动找到文件所在文件服务器进行下载。比如说,一共上传了30个附件,会根据附件的大小等情况 平均分配上传到3台文件服务器上。当现有的文件服务器都存满之后,可以随时新增附件服务器,而不需要修改程序。有知道的请详细说一下怎么处理,谢谢。

sym_cn的主页 sym_cn | 小虾三级 | 园豆:798
提问于:2015-01-13 10:19
< >
分享
所有回答(8)
0

想起一个事情,我以前一个朋友,开一辆奥拓,说,我要是中彩票,有了几个亿,

我买十辆奥拓,一辆平时上班用,一辆出门旅游用,一辆准备借给朋友...

爱编程的大叔 | 园豆:29818 (高人七级) | 2015-01-13 10:52

和土豪做朋友啊~

支持(0) 反对(0) Y2zz | 园豆:388 (菜鸟二级) | 2015-01-13 10:59

大叔,看了我提的那个TFS2013是问题了吗?求指导

支持(0) 反对(0) 晓菜鸟 | 园豆:2564 (老鸟四级) | 2015-01-13 11:32
0

用wmi技术获取你那3台服务器的实时cpu占用率之类的值来判断哪台服务器最闲,当有文件需要存的时候就取最闲的那台服务器,进行保存,并将保存信息记录到数据库中,以便取文件的时候去指定的文件服务器取文件

刘宏玺 | 园豆:14004 (专家六级) | 2015-01-13 11:00
0

你是在说HDFS吗

BiceG | 园豆:179 (初学一级) | 2015-01-13 11:41
0

中间层代理。。。访问跳转服务器,跳转服务器获取其他服务器负载,并将文件流转向一个具体的存储服务器。其实你的图就是你应该去做的实现。

幻天芒 | 园豆:36522 (高人七级) | 2015-01-13 11:49
0

如果是win系统。 就别把WMI当成吃干饭的。。。 神马CPU、内存、磁盘、网卡流量等都能通过wmi获取得到。

中间的那台服务器, 通过WMI远程连接后端的文件服务器,获取cpu、磁盘、网络等信息。 找到最匹配的后, 返回地址不就好了?

为了更快速不用查找, 可以在中间件与文件服务器abcdefg建立socket心跳连接, abcdefg服务器一直返回自己的状况。这样中间件更加快速的反应了。 

其它的。。细节。。。自己想。  

问天何必 | 园豆:3291 (老鸟四级) | 2015-01-13 12:57
0

我不太懂 但是我大致 根据我个人技术和经验来说

最优下载和上传 也就是他们之间ping 越低 越好  是不是可以先ping 所有服务器域名 然后寻找出最低的ms

这就是最优了 对么?  这只是我个人猜想 高人勿喷!

流星霜紫 | 园豆:473 (菜鸟二级) | 2015-01-13 15:11

首先 服务器被占用的越低 你ping 他 响应你的速度就越慢 ms 就会更低 

 

貌似 貌似 

支持(0) 反对(0) 流星霜紫 | 园豆:473 (菜鸟二级) | 2015-01-13 15:13

@流星霜紫: 没直接关系,ping只跟网络质量有关,跟服务器性能没有任何关系

支持(0) 反对(0) 吴瑞祥 | 园豆:28731 (高人七级) | 2015-01-13 15:51

@吴瑞祥: 哦 原来如此  看来我又异想天开了 (┬_┬)

支持(0) 反对(0) 流星霜紫 | 园豆:473 (菜鸟二级) | 2015-01-13 16:16
0

个人觉得需要以下几点

1:数据可配置当前在用的服务器,并且有标识,IP地址等

2:每台文件服务器应该有个(webservice)  之类的服务,可以取得当前服务器的存储量

3:上传文件时轮询库中的服务器列表 根据IP地址等标识 调用 (webservice) 的方法返回储量

4:选择最优的服务器 上传,将文件存放路径写入库中

 

 

以后加服务器就可以修改配置,并且在新的服务器部署 (webservice)

当然这里的webservice 也可以用别的方式实现 比如TCP

 

 

不过好像最简单的方法就是做磁盘映射,在文件服务器上就可以读取到各个 服务器的盘符大小和容量

天真浪浪 | 园豆:950 (小虾三级) | 2015-01-13 16:39
0

楼上的想法都很有问题,想想一些大网站的通用做法吧。

根据SOA的原则,各个服务之间是相互独立的,你需要的是一个文件服务,在做好authentication的前提下,各个web程序和文件服务相互之间不通讯;想上传文件,没问题,在众多文件服务器中选择一个,把地址给UI,用户直接把文件传到这个地址,返回一个key(或者url,这个by design)。

所以,你需要的是

一个文件服务器master,至少应该公开以下接口:

1. 随机选择一个可用的服务器进行上传(这个类似于负载均衡)

2. 根据请求的 key 跳转到真正的下载地址

 

你做的这些和web程序完全没有关系,web服务只需要知道向哪儿上传文件就行。

什么服务器之间相互传文件、磁盘映射之类的,扯淡。

南昌炒粉 | 园豆:714 (小虾三级) | 2015-01-15 14:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册