目录
FastDFS安装(mac)|文件存储方案
在我们进行相关项目开发时,肯定会遇到需要进行文件保存的需求。那么这些文件(如图片)保存到哪里呢?
- 第一种方案是直接保存到本地磁盘中,即通过浏览器发一个post的请求,相关程序将文件保存到本地,这样完全可以实现。但缺点是文件和项目代码都会保存到同一台电脑上,即这台电脑(服务器)既要向客户端响应项目代码又要响应文件。
- 如果像分开就可以使用文件服务器,在这里就是FastDFS,即项目代码在一台电脑,文件在另一台电脑(也就是服务器)。从而实现分开
1 FastDFS介绍
1.1 FastDFS架构
包括Client、Tracker server和Storage server。
- 整体过程:Client也就是我们说的客户端,其请求Tracker进行文件上传、下载,Tracker再调度Storage完成文件上传和下载。
- Client: 客户端,业务请求的发起方,通过专有接口,使用TCP/IP协议与Tracker或Storage进行数据交互。FastDFS提供了upload、download、delete等接口供客户端使用。
- Tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。
-
Storage server:存储服务器(存储节点或数据服务器),文件和文件属性都保存到存储服务器上。Storage server会定时的向Tracker server发消息,如果一段时间没发,Tracker server就会将其去除。直接利用OS的文件系统调用管理文件。
- Storage群中的横向可以扩容,纵向可以备份。
1.2 工作原理实例介绍
以上传文件为例:
- Client拿到需要上传的文件,这时Client会向Tracker server发一则消息即“当下需要保存文件”;
- Tracker server在接到消息后,就会从其列表中寻找可用的Storage server,并将可用的Storage server IP返回给Client;
- Client在就到相关IP后,就向这个指定IP的那台服务器发生要上传的文件;
- Storage server 收到文件会将文件保存,并为其起名,后将该名称返回给Client。
- Client收到这个名字后只需将该名称保存下来,供以后依据该名称到Storage server找寻该文件。
1.3 FastDFS上传和下载流程
1.4 FastDFS文件索引
-
FastDFS上传和下载流程 都涉及到文件索引(file_id)。
- 文件索引(file_id)是客户端上传文件后存储服务器返回给客户端,是以后访问该文件的索引信息。
-
文件索引(file_id)信息包括:组名、虚拟磁盘路径、数据两级目录、文件名等信息。
- 组名:文件上传后所在的 Storage 组名称。
- 虚拟磁盘路径:Storage 配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
- 数据两级目录:Storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
- 文件名:由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
2 FastDFS安装(mac)
笔者先尝试了使用docker安装FastDFS,但在创建storage容器时无法映射出data中的多个目录,为此也是尝试了很多方法且网上多数是在ubuntu系统进行的安装,前后花费了五六个小时,如果您有相关有效的解决的方法欢迎私信。这个方法我得出的结论是:
--network=host 参数只有在linux下生效, mac windows 都不能成功,所以导致安装fastdfs是失败的
因此笔者使用了如下的安装方法,亲测有效:
2.1 安装包
- libfastcommon:https://github.com/happyfish100/libfastcommon
- FastDFS:https://github.com/happyfish100/fastdfs
注意:上两个链接都是github上成熟的项目,进入页面后点击“Clone or download” ---> “Download ZIP”
2.2 安装libfastcommon
cd libfastcommon压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/libfastcommon-master)
./make.sh
sudo ./make.sh install
2.3 安装FastDFS
cd FastDFS压缩包解压后的文件地址,一定要自行修改如(/Users/..../Desktop/fastdfs-master)
./make.sh
sudo ./make.sh install
2.4 相关文件配置
(1)配置跟踪服务器tracker
- 拷贝tracker配置文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
-
先手动创建您想要存放目录,即收到创建文件夹(名称*,但尽量不变方便后期查找): /您方便的目录/fdfs/tracker。笔者是在创建了如下目录路径是:
/var/fdfs/tracke
-
编辑/etc/fdfs/tracker.conf配置文件
sudo vim /etc/fdfs/tracker.conf
- 修改其中base_path的部分如下:
base_path=/您方便的目录/fastdfs/tracker
(2)配置存储服务器storage
- 拷贝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- 先手动创建您想要存放目录,即收到创建文件夹(名称*,与上tracker保持在一个上级目录下): /您方便的目录/fdfs/storage。笔者是在创建了如下目录:
/var/fdfs/storage
- 编辑/etc/fdfs/storage.conf 配置文件
sudo vim /etc/fdfs/storage.conf
- 修改其中的base_path, store_path0, tracker_server
base_path=/您方便的目录/fdfs/storage
store_path0=/您方便的目录/fdfs/storage
tracker_server=Mac的IP地址:22122
(3)启动tracker和storage
sudo fdfs_trackerd /etc/fdfs/tracker.conf start
sudo fdfs_storaged /etc/fdfs/storage.conf start
(4)查看是否启动成功
ps aux|grep fdfs
如出现下面情况,则表明成功:
root 13211 98.0 0.0 4298076 800 ?? R 2:58下午 0:02.19 fdfs_storaged /etc/fdfs/storage.conf start
你的mac名 13256 0.0 0.0 4268192 464 s000 R+ 2:58下午 0:00.00 grep fdfs
root 13140 0.0 0.0 4297384 796 ?? S 2:58下午 0:00.00 fdfs_trackerd /etc/fdfs/tracker.conf start
2.5 client.conf配置文件修改
- 拷贝client配置文件
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
- 修改client配置文件
sudo vim /etc/fdfs/client.conf
- 修改其中的内容:
base_path=/您方便的目录/fdfs/tracker
tracker_server=您Mac的IP地址:22122