概述
教你使用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)。
最后
以上就是清爽狗为你收集整理的fastdfs教你使用图片、文件储存三、Fastdfs的全部内容,希望文章能够帮你解决fastdfs教你使用图片、文件储存三、Fastdfs所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复