FastDFS的安装及部署(实战篇)

这篇具有很好参考价值的文章主要介绍了FastDFS的安装及部署(实战篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

天猫、淘宝等购物网站,海量的商品图片和视频,是如何存储的?当用户访问量大时,又如何保证下载速度?分布式文件系统就是用来解决这些问题的。

那么分布式文件系统该如何使用呢?别急,今天就学习这些非常实用的技能:

  • 分布式文件系统概述
  • 主流的分布式文件系统的介绍
  • 重点介绍FastDFS架构
  • 掌握FastDFS的安装和配置

FastDFS概述

1.分布式文件系统

分布式文件系统(Distributed File System)是一个软件/软件服务器,此软件可以用来管理在多个服务器节点中的文件(这些服务器节点通过网络相连并构成一个庞大的文件存储服务器集群,即这些服务器节点都是用来存储文件资源的,且用DFS来管理这些文件)。而传统文件系统与分布式文件系统的对比,有如下区别:

FastDFS的安装及部署(实战篇)

经过对比,我们会发现传统文件系统存在如下缺点:

若用户数量多,则IO操作会很频繁 则对磁盘的访问压力会较大;

若磁盘故障,则可能会造成数据的丢失;

一个磁盘的存储容量有限。

2.主流的分布式文件系统

2.1 HDFS

Hadoop Distributed File System,Hadoop分布式文件系统。这是一个高容错的系统,适合部署到廉价的机器上,能提供高吞吐量的数据访问,非常适合大规模数据应用。HDFS采用主从结构,一个HDFS是由一个name节点和N个data节点组成。name节点储存元数据,一个文件分割成N份存储在不同的data节点上。

2.2 GFS

Google File System,可扩展的分布式文件系统,用于大型的,分布式的,对大量数据进行访问的应用。GFS可以运行于廉价的普通硬件上,可以提供容错功能,它可以给大量的用户提供总体性能较高的服务。GFS采用主从结构,一个GFS集群由一个master和大量的chunkserver(分块服务器)组成,一个文件被分割若干块,分散储存到多个分块server中。

2.3 FastDFS

FastDFS由淘宝资深架构师余庆编写并开源,使用C语言编写而成。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。使用FastDFS能够很容易搭建出一套高性能的文件服务器集群,实现文件上传、下载等服务。


HDFS和GFS都是通用的文件系统,他们的优点是开发体验好,但是系统的复杂度较高,性能也一般。相比之下,专用的分布式文件系统体验差,但是复杂度低,性能也高。尤其是FastDFS,特别适合图片、小视频等小文件。因为FastDFS对文件是不分割的,所以没有文件合并的开销。并且FastDFS网络通信使用Socket,速度也较快。

基于FastDFS的诸多优点,所以接下来我们就重点给大家介绍FastDFS的使用。

FastDFS架构

FastDFS架构包括Tracker Server和Storage Server。客户端请求Tracker Server进行文件上传、下载,通过Tracker Server调度最终由Storage Server完成文件上传和下载。

FastDFS的安装及部署(实战篇)

Tracker Server作用是负载均衡和调度,通过Tracker Server在文件上传时可以根据一些策略找到Storage Server提供文件上传服务。可以将Tracker称为追踪服务器或调度服务器。

Storage Server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage Server没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将Storage称为存储服务器。

1. Tracker集群

FastDFS集群中的Tracker Server可以有多台,Tracker Server之间是相互平等关系同时提供服务,Tracker Server不存在单点故障。客户端请求Tracker Server采用轮询方式,如果请求的Tracker无法提供服务则换另一个Tracker。

2. Storage集群

Storage集群采用了分组存储方式。Storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage Server之间是平等关系,不同组的Storage Server之间不会相互通信,同组内的Storage Server之间会相互连接进行文件同步,从而保证同组内每个Storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。

采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由Tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

3. Storage状态收集

Storage Server会连接集群中所有的Tracker Server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

4. 文件上传流程

FastDFS的安装及部署(实战篇)

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

FastDFS的安装及部署(实战篇)

组名

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

虚拟磁盘路径

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

数据两级目录

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

文件名

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

5. 文件下载流程

FastDFS的安装及部署(实战篇)

Tracker根据请求的文件路径即文件ID来快速定义文件,比如请求下边的文件:

FastDFS的安装及部署(实战篇)

以上请求处理过程如下:

  • 通过组名Tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
  • 存储服务器根据文件存储“虚拟磁盘路径”和“数据两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

了解了FastDFS的运行原理之后,接下来我们就来开始进行FastDFS的安装及配置过程吧。

FastDFS安装及配置

1.FastDFS安装

1.1 安装gcc

使用yum命令安装gcc和gcc-c++,编译时需要使用。

[root@user ~]# yum install -y gcc gcc-c++

说明:Linux系统下使用gcc编译C语言的代码,使用g++编译C++的代码。

1.2 安装libevent

使用yum安装libevent,运行时需求。

[root@user ~]# yum -y install libevent

1.3 安装libfastcommon

libfastcommon是由FastDFS官方提供的,在GitHub开源的一个C基础库,包含了FastDFS运行所需要的一些基础库。它提供了ini文件解析、logger、64位唯一整数生成器、字符串处理、socket封装、对象池、skiplist、定时任务调度器、时间轮等等。在这一步的安装过程中,要经历如下几个小的安装步骤。

(1)访问libfastcommon包下载地址:

https://github.com/happyfish100/libfastcommon。

(2)将libfastcommon-1.0.39.zip安装包上传到CentOS的/opt目录下。

# 1.Windows系统使用Xftp工具或者lrzsz工具将libfastcommon-1.0.39.zip安装包上传至CentOS系统  
  
# 2.Mac系统使用scp命令将libfastcommon-master.zip安装包上传至CentOS系统  
scp /Users/yuanxin/Downloads/libfastcommon-1.0.39.zip root@192.168.230.131:/opt

(3)在CentOS系统中安装解压zip包的命令。

[root@user ~]# yum install -y unzip

(4)通过unzip命令解压libfastcommon-1.0.39.zip压缩包,获取libfastcommon-1.0.39目录。

[root@user ~]# unzip libfastcommon-1.0.39.zip

(5)进入libfastcommon-1.0.39目录,执行make.sh脚本文件。

[root@user ~]# cd libfastcommon-1.0.39  
[root@user libfastcommon-1.0.39]# ./make.sh

(6)如果执行make.sh脚本时,提示“权限不够”,则需要对make.sh文件进行授权。然后再重新执行make.sh脚本文件。

[root@user libfastcommon-1.0.39]# ./make.sh  
-bash: ./make.sh: 权限不够  
[root@user libfastcommon-1.0.39]# chmod 777 make.sh  
[root@user libfastcommon-1.0.39]# ./make.sh

(7)然后执行安装命令。

[root@user libfastcommon-1.0.39]# ./make.sh install  
mkdir -p /usr/lib64  
mkdir -p /usr/lib  
mkdir -p /usr/include/fastcommon  
install -m 755 libfastcommon.so /usr/lib64  
install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h common_blocked_queue.h multi_socket_client.h skiplist_set.h fc_list.h json_parser.h /usr/include/fastcommon  
if [ ! -e /usr/lib/libfastcommon.so ]; then ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so; fi

说明:libfastcommon安装好后会在/usr/lib64目录下生成libfastcommon.so库文件。

(8)将/usr/lib64目录下的libfastcommon.so库文件拷贝到/usr/lib目录下。

[root@user libfastcommon-1.0.39]# cd /usr/lib64  
[root@user lib64]# cp libfastcommon.so /usr/lib

1.4 安装Tracker

在这一步的安装过程中,也要经历如下几个安装步骤。

(1)将fastdfs-5.11.tar.gz安装包上传到CentOS的/opt目录下。

# 1.Windows系统使用Xftp工具或者lrzsz工具将fastdfs-5.11.tar.gz安装包上传至CentOS系统  
  
# 2.Mac系统使用scp命令将fastdfs-5.11.tar.gz安装包上传至CentOS系统  
scp /Users/yuanxin/Downloads/fastdfs-5.11.tar.gz root@192.168.230.131:/opt

(2)解压fastdfs-5.11.tar.gz安装包。

[root@user opt]# tar -zxvf fastdfs-5.11.tar.gz

(3)进入fastdfs-5.11目录,执行make.sh脚本文件。

[root@user opt]# cd fastdfs-5.11
[root@user fastdfs-5.11]# ./make.sh
[root@user fastdfs-5.11]# ./make.sh install

(4)安装成功将fastdfs-5.11安装目录下的conf目录下的所有文件拷贝到/etc/fdfs/下。

[root@user fastdfs-5.11]# cp /opt/fastdfs-5.11/conf/* /etc/fdfs/

2.FastDFS配置

2.1 Tracker配置

在这一步的安装过程中,要经历如下几个安装步骤。

(1)打开/etc/fdfs/目录下的tracker.conf配置文件。

[root@user]# vim /etc/fdfs/tracker.conf

(2)修改base_path属性的值,将base_path属性的取值设置成/home/fastdfs。

# tracker追踪者服务器端口
port=22122
# 存储数据和日志文件的基础目录(Tracker运行时会向此目录存储storage的管理数据)
# base_path=/home/yuqing/fastdfs
base_path=/home/fastdfs

(3)基础目录/home/fastdfs是不存在的,需要自行进行创建。

[root@user]# mkdir /home/fastdfs

2.2 Storage配置

在这一步的安装过程中,要经历如下几个安装步骤。

(1)打开/etc/fdfs/目录下的storage.conf配置文件。

[root@user]# vim /etc/fdfs/storage.conf

(2)修改base_path属性、store_path0属性和tracker_server属性的取值。

# 配置组名
# 此存储服务器所属的组的名称。
# 注释或删除从tracker服务器获取的该项,此时在tracker.conf中必须将use_storage_id设置为true,并且必须正确配置storage_ids.conf
group_name=group1
# storage存储服务器端口
port=23000
# 向tracker心跳间隔(秒)
heart_beat_interval=30
# storage基础目录(目录不存在,需要自行创建)
# base_path=/home/yuqing/fastdfs
base_path=/home/fastdfs
# store存放文件的位置(store_path)。可以理解一个磁盘一个store_path,多个磁盘多个store_path
# store_path0=/home/yuqing/fastdfs
store_path0=/home/fastdfs/fdfs_storage
# 如果有多个挂载磁盘,则定义多个store_path*属性,如下:
# store_path1=...
# store_path2=...
# 配置tracker服务器IP
tracker_server=192.168.230.131:22122
# 如果有多个则配置多个tracker
# tracker_server=192.168.230.xxx:22122

(3)创建store存放文件的目录,需要自行创建。

[root@user]# mkdir /home/fastdfs/fdfs_storage

(4) 启动服务
启动服务时要经历如下几个小的步骤。

启动tracker。

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

启动storage。

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

查看所有运行的端口。

netstat -ntlp

结语

关于FastDFS安装和配置的教程就介绍到这里了,请大家赶紧去试一试能不能徒手搭建起一个FastDFS的开发环境吧。

如果你还想继续进行FastDFS后续内容的学习,接下来我们还会给大家继续更新FastDFS的文件存储、文件同步、文件访问(文件上传、文件下载)等相关知识的内容,以及如何使用FastDFS解决大容量存储和负载均衡的问题。文章来源地址https://www.toymoban.com/news/detail-470769.html

到了这里,关于FastDFS的安装及部署(实战篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 淘宝/天猫获取商品销量详情 API 返回值说明

    taobao.item_get_sales 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secret String 是 调用密钥 api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] cache String 否 [yes,no]默认yes,将调用缓存的数据,速度比较快 result_type St

    2024年02月09日
    浏览(38)
  • 使用python脚本抢购天猫和淘宝商品,0秒下单

    最近想抢购一下淘宝和天猫的秒杀商品,md,老是抢不过别人,所以去github上找了一份抢购的代码。根据自己的需要,修改了一下。 最终的效果如下所示: 使用python脚本抢购天猫和淘宝商品,0秒下单 主要的实现思路 1. 使用selenium的debuggerAddress模式创建一个新的chrome浏览器,

    2024年02月11日
    浏览(31)
  • 【Docker安装部署FastDFS详细过程】

    🚀 AI破局先行者 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🌲 恭喜你发现一

    2024年01月16日
    浏览(32)
  • 淘宝-天猫商品API:实时数据获取与安全隐私保护的指南

    随着电子商务的快速发展,淘宝/天猫等电商平台已成为商家和消费者的重要交易场所。对于电商企业而言,实时掌握店铺商品的销售情况、库存状态等信息至关重要。然而,手动管理和更新商品信息既费时又费力。因此,淘宝/天猫提供的商品API成为商家实时获取商品数据的

    2024年04月24日
    浏览(26)
  • 淘宝/天猫商品API:实时数据获取与安全隐私保护的指南

    随着电子商务的快速发展,淘宝/天猫等电商平台已成为商家和消费者的重要交易场所。对于电商企业而言,实时掌握店铺商品的销售情况、库存状态等信息至关重要。然而,手动管理和更新商品信息既费时又费力。因此,淘宝/天猫提供的商品API成为商家实时获取商品数据的

    2024年02月04日
    浏览(30)
  • 淘宝 天猫商品API:实时数据获取与安全隐私保护的指南_淘宝奇门接口获取未加密的收件人信息

    然后编写代码: import requests import json url = ‘https://api.taobao.com/router1.do’ params = { ‘app_key’: ‘your_app_key’, # 替换为你的应用key ‘method’: ‘taobao.item.get’, # 调用商品查询接口 ‘fields’: ‘num_iid,title,price,seller_nick,item_img,item_desc’, # 指定需要获取的字段 ‘num_iid’: ‘4153617

    2024年04月17日
    浏览(40)
  • (淘宝/天猫/1688等)电商数据采集的方式有多种。以下是一些常见的方式♀

    电商数据采集的方式有多种。以下是一些常见的方式: ✔1. 爬虫技术:使用编程语言(如Python)编写网络爬虫程序,通过模拟浏览器行为访问电商网站,并从网页中提取所需的数据。这种方式需要具备一定的编程和网络知识。 ✔2. API接口 :很多电商平台都提供了开放API接口

    2024年03月14日
    浏览(39)
  • 从API到界面:如何将淘宝/天猫商品详情返回值转化为用户友好的展示

    在当今数字化时代,API(应用程序编程接口)已经成为连接不同服务和数据的桥梁。对于电商平台来说,API更是不可或缺的一部分。本文将以淘宝/天猫为例,探讨如何将API返回的商品详情数据转化为用户友好的展示形式。我们将通过代码示例来揭示这一过程。 1. API获取商品

    2024年02月19日
    浏览(31)
  • 淘宝/天猫获取卖出的商品订单列表 API(taobao.seller_order_list)

    淘宝和天猫平台提供了一个API接口(taobao.seller_order_list),用于获取卖家出售的商品订单列表。以下是使用该API的基本步骤: 获取API密钥:首先,您需要在淘宝开放平台(Open Platform)上注册账号并创建一个应用,以获取API密钥。API密钥是用于验证您的身份和授权的凭证。 调

    2024年01月21日
    浏览(34)
  • 【k8s完整实战教程0】前言

    系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语: 再小的帆,也能远航! 【k8s完整实战教程0】前言 【k8s完整实战教程1】源码管理-Coding 【k8s完整实战教程2】腾讯云搭建k8s托管集群 【k8s完整实战教程3】k8s集群部署kubesphere 【k8s完整实战教程4】使用

    2023年04月24日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包