用wcf向服务器上传多大的文件_图片服务器:回忆一下那些年用过的FastDFS,还有多少人记得...

由于项目中用到很多图片,不过现在图片还是由type=file的按钮上传到服务器上,由nginx做静态服务器来访问这些图片,没有用到图片服务器来上传下载,这样做的缺点就是,服务部署在哪里,图片就上传到哪台服务器,没有一个集中的图片服务器,最进在考虑是否项目中引入一个图片服务来供上传下载,说到这里,思绪就回到了N年前开发用到的FastDFS,当时用的不亦说乎,今天重新搭建一下,回忆一下那个美好的屌丝生活!

附上大神写的FastDFS的Github:

805fca8847353aa044a08369d4a30cde.png

FastDFS简要介绍:

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

下图就是他的架构图:

71eb070b734bb6da5fff302ff42d65b2.png

1、Tracker cluster中各个tracker server相互独立,不进行相互通信。

2、Storage cluster中各个storage组相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。

3、每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。

文件上传的流程图如下:

a27df90d0ecacb01b794867b7ec8eb7d.png

请求上传说明:

1、Client通过Tracker server将文件上传到Storage server。

2、Tracker server向Client返回一台可用的Storage server的IP地址和端口号。

3、Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。

4、上传完成,Storage server返回Client一个文件ID,文件上传结束。

上传完成后,会返回下面的文件索引信息:

b91366a9c5c2169a408ea06ff2dee176.png

文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

~组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。

~虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。

~数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

~文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

然后就是文件下载的过程如下:

54b260dab4745f04fc305e7d42369eb0.png

请求下载说明:

1、Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。

2、Tracker server向Client返回一台可用的Storage server的IP地址和端口号。

3、Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。

FastDFS提供简单易用的上传下载,是不是感觉手痒痒,那就动手搭建一下吧!

由于我身穷但是志坚,没钱买服务器,我就用虚拟机来搭建一下,一个storage的服务器,一个tracker的服务器。

43346237c3027270ca4ca5fb45e3f1d6.png

1、创建一个目录,来存放FastDFS相关依赖:

[zjl@zheng ~]# mkdir -p /home/zheng/tools[zjl@zheng ~]# cd /home/zheng/tools/

2、下载并安装FastDFS依赖包libfastcommon

[zjl@zheng tools]# wget https://codeload.github.com/happyfish100/libfastcommon/zip/master[zjl@zheng tools]# unzip master[zjl@zheng tools]# cd libfastcommon-master/[zjl@zheng libfastcommon-master]# lsHISTORY INSTALL libfastcommon.spec make.sh php-fastcommon README src[zjl@zheng libfastcommon-master]# ./make.sh[zjl@zheng libfastcommon-master]# ./make.sh install

3、下载并安装FastDFS

[zjl@zheng tools]# wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz[zjl@zheng tools]# tar xf FastDFS_v5.08.tar.gz[zjl@zheng tools]# cd FastDFS[zjl@zheng FastDFS]# ./make.sh && ./make.sh install

4、目录如下:

c94e9ac1e5c55893c7558bf428b282a1.png

5、服务脚本和样例配置文件如下:

868e42ea0124d59f8e6e01f485a415c4.png

6、命令行工具如下:

0150d47e44f5d5800d78c70d1baea8da.png

7、配置跟踪服务器(tracker server),虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,以上安装适用tracker server和storage server,把样例文件复制出来一份:

e6783bbbee9dade398919cc4b375a089.png

8、编辑tracker server配置文件tracker.conf,修改内容如下:

7ce48872f9e857f2938979559643ad75.png

9、编辑client端的配置文件client.conf,修改内容如下:

83c2dbda7e8830988a9b6b9ae5f6a87f.png

10、测试启动tracker server:

846ac67844655556e5c35b058dac7569.png

11、配置存储服务器(storage server),和配置tracker差不多,只是配置文件中的配置不一样,就是storage.conf的配置:

b8207218320815135c719e7b92ffd6cf.png
1caa1bb86a3a1f83a30a112c16326487.png
ae56bbeb617e61f43932ea536f4a56a0.png

12、测试启动storage server:

b59abac8fa1e9d285ca8f33e6c4111ed.png

到现在为止,FastDFS的跟踪和存储服务器我们已经搭建完毕了,我们可以通过命令行工具来测试一下:

[zjl@zheng ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/zheng/imgs/pythonNB.jpggroup1/M00/00/00/uHYT6VcaP0aARXXvAAHrUgJEviQ626.jpg

返回文件ID即说明文件已经上传成功!对于这些图片,通常当做静态资源来处理,也就是要配置诸如Nginx这样的静态资源服务器来实现浏览器访问,这个配置就不多说了,FastDFS和Nginx的配合也是非常完美的!

e7e91f745a6223b40240ae45700c4afd.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值