fastdfs教你使用图片、文件储存

教你使用FASTDFS

一、图片存储:

1.分析图片文件的特点??
二进制格式,容量小,很多,零碎。
2.这样一个文件放在哪里合适呢??
数据库 ??? 可以,使用Blob可以存储。 存在形式:数据库字段形式。
硬盘???可以,存在形式:文件。
3.哪种方式更适合我们的项目??
这里应该直接以操作系统的文件形式进行存储,性能会更高点。可以将图片访问路径保存在数据库里,因为路径可以很轻松访问,放在数据库也方便管理。

1、单体架构(单机)

地址:
存储容量有限。访问不会出现问题,并发高时,需要做集群。

2.单体架构(集群)

地址:
有何问题??这种方式,会出现上传文件和浏览文件不在同一台服务器上的问题,导致明明上传了文件,却访问不到文件。解决办法:考虑做文件同步,或者应用服务器和文件服务器分离。

3.集中式文件服务器

地址
应用和图片分离,访问图片没有问题,但是单机容量有限,其次存在单点故障问题,最后就是并发性有限。

4. 集中式文件服务器(集群)
地址:该结构能解决海量文件存储的问题,并发性也可水平扩展,但是文件访问问题依然存在,所以文件同步问题依然存在,普通的文件系统已经不满足这种需求了,所以亟待一种新的文件系统来专门解决。

二、分布式存储

1) 对象存储(Object Storage Service,简称 OSS),目前由各大云服务商提供,特点:简单, 易用,不需要你维护,api接口简单好用,关键是文档齐全,程序员不需要担心使用问题。
缺点:要钱。其次,不利于学习,毕竟什么都给你封装好了。不利于技术的提高。
推荐大家去企业用这个,哈哈。省事啊!!!
2) 分布式文件系统(开源)
由于开源,所以服务器什么的,都得自己从头开始搞,而且肯定会遇到坑,这时逼着看文档,要么啃源码,总之,虽然辛苦,但能学习到很多东西,有利于技术的提高。另外,老板喜欢吧,因为不要钱啊,不过你苦啊,出了问题,还得你来啊。

三、Fastdfs

简介
阿里,大名鼎鼎的余庆杰作。国内创业公司,电商公司使用较多,例如,京东初期的图片服务器就是基于此。
FastDFS是一个轻量级的开源分布式文件系统
FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡
FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储,支持存储服务器在线扩容,支持相同内容的文件只保存一份,节约磁盘空间
FastDFS只能通过Client API访问,不支持POSIX访问方式
FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)

架构
地址:
Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽。
Storage Server:存储服务器,文件和meta data都保存到存储服务器上
group:组,也可称为卷。同组内服务器上的文件是完全相同的
文件标识:包括两部分:组名和文件名(包含路径)
meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768

同步
同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

知道大家都不喜欢学理论,但是真正有用的其实就是这些理论,把理论弄透了,你完全可以实现一个 java版的(这个是C语言写的),那我们下面就动动手吧!

实操
1.准备虚拟机
地址:
——本文虚拟机ip地址网段为:192.168.192.*

2.补充(修改虚拟机)
hostname storage
vi /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
——查看网卡修改后结果: ip address
地址:
3.安装libfastcommon-v1.0.36
yum install wget -y
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
yum install gcc perl –y
tar zxf V1.0.36.tar.gz
cd libfastcommon-1.0.36/
./make.sh
./make.sh install
——以上tracker和storage服务器安装步骤相同!!

4.安装fastdfs-v5.11
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar zxf V5.11.tar.gz
cd fastdfs-5.11/
./make.sh
./make.sh install
——以上tracker和storage服务器安装步骤相同!!

5.配置fastdfs-tracker
——创建默认数据和文件保存基路径:
mkdir -p /fastdfs/tracker
——复制配置文件:
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
——编辑配置文件:
vi /etc/fdfs/tracker.conf
地址:
6.修改防火墙:
firewall-cmd --zone=public --add-port=22122/tcp --permanent
——重载防火墙规则:
firewall-cmd --reload
——查看规则:
firewall-cmd --list-all
地址:
7.启动:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
——启动成功后会在/fastdfs/tracker下创建data,logs目录
地址:
8.开机自启动:

添加执行权限:chmod +x /etc/rc.d/rc.local

vi /etc/rc.d/rc.local
添加这一行,/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

------测试需要重启电脑,查看进程-------

9.配置fastdfs-storage
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vi storage.conf /Section 3
地址
mkdir -p /fastdfs/storage

——打开防火墙:
firewall-cmd --zone=public --add-port=23000/tcp --permanent

——重启防火墙:
firewall-cmd --reload

——启动服务(请确定tracker服务已经启动):
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

——启动成功后会在/fastdfs/storage 下创建data,logs目录
地址:
关闭:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop

开机自启动:vi /etc/rc.d/rc.local

添加这一行,/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

添加执行权限:chmod +x /etc/rc.d/rc.local

10.上传文件测试(在tracker上)
cd /etc/fdfs/
cp client.conf.sample client.conf
vi client.conf
地址:
保存退出:x

——测试程序:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/include/stdlib.h

查看storage服务器上是否有文件上传了:
地址:
-------如上图,上传文件成功。

11.storage server安装nginx
——下载解压nginx-1.12.2
cd /root
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxf nginx-1.12.2.tar.gz
——下载解压fastdfs_nginx_module
地址:
——下载fastdfs_nginx_module.zip
地址:
当前最新的master不能下了与fastdfs不兼容,最新的发布版也不能下载,也不兼容,所以只能寻找以前的提交版本:至少是这个提交之前的,
地址:
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/85347be190dcfe9d46bd67176f84afaa32718142.zip

yum install unzip -y

unzip 85347be190dcfe9d46bd67176f84afaa32718142.zip

——安装nginx
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
cd /root/nginx-1.12.2

./configure --add-module=/root/fastdfs-nginx-module-85347be190dcfe9d46bd67176f84afaa32718142/src/

make

make install

——配置nginx
vi /usr/local/nginx/conf/nginx.conf
地址:
地址:
ln -s /fastdfs/storage/data /fastdfs/storage/data/M00
cd /root/fastdfs-nginx-module-85347be190dcfe9d46bd67176f84afaa32718142/src/
cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
vi mod_fastdfs.conf
地址:
cd /root/fastdfs-5.11/conf
cp http.conf mime.types /etc/fdfs/

——开放http访问服务:
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

——启动nginx
/usr/local/nginx/sbin/nginx

——浏览器输入:
http://192.168.192.30/M00/00/00/wKjAHlrsFgWATavhAACE7ieMB5429600.h

开机自启动:vi /etc/rc.d/rc.local
添加这一行,/usr/local/nginx/sbin/nginx

(-----------------------------------------------------the end----------------------------------------)
根据以往经验,能够一次性成功的,几乎为零!!!!所以,一次没成功的,那就again吧。学习使我快乐 。

四、备注

关于启动fdfs的方式,其实还有一种更简单的方式,就是利用服务来启动,有点类似于windows的服务管理系统。Systemctl是7.x后提供的服务管理功能,不过该功能依赖于启动脚本,好在fdfs已经写好了,而且默认也安装好了,只需要开启就行了。如图所示
地址:
启动服务:systemctl start fdfs_storaged
停止服务:systemctl stop fdfs_storaged
重新启动:systemctl restart fdfs_storaged

——开机自启:systemctl enable fdfs_storaged
地址:
——检查单元是否配置为自己主动启动:
地址:
——其它命令
./nginx -s stop
./nginx -s quit
./nginx -s reload
重启nginx:-s reload
删除端口:firewall-cmd --zone=public --remove-port=12345/tcp –permanent
远程拷贝文件:从本机拷贝到远程服务器,反过来参数互换位置即可。
scp nginx-1.15.7.tar.gz 85347be190dcfe9d46bd67176f84afaa32718142.zip root@192.168.19.128:/root

作者:陈老师的学生
版权:@吉林网络科技有限公司
想用最新版,一定要先仔细看官网说明,版本之间的兼容性!!
官网下载当前的master就是5.12版本,目前还没发布出来,截至本文写作时(2019-1-1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值