分布式文件存储系统FastDFS[1]-介绍以及安装

news2024/11/15 9:21:41

一、分布式文件存储

1.分布式文件存储的由来

  在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一个服务器中。

  后面随着文件越来越多,服务器的资源会被文件资源大量占据,从而影响到服务器的稳定,这时我们可以单独的把文件服务器拆出来。

  拆解出来后,文件服务的使用不会影响到我们的系统服务的稳定,但是当用户量越来越大,存储的文件就会越来越多,这时如果还是单台的文件服务,比如100T的文件,这时是存储不下去的,这时就产生了我们将的分布式文件存储,

  也就是我们解决如何将这100T的文件分散的存储到各个节点上,然后当我们需要读取文件的时候又能非常快的帮我们把文件找到。这个就是分布式文件系统帮我们解决的问题了。

2.常见的分布式存储框架

  接下来我们看看在国内常用的分布式存储的框架选择有哪些

cc03a44bb788be46309d455a305753e0.png

  好了就介绍这么几个,其他的我们也用不到了。

二、FastDFS介绍

  FastDFS是余庆国人开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

  FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

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

架构解读:

  • 只有两个角色,tracker server和storage server,不需要存储文件索引信息。

  • 所有服务器都是对等的,不存在Master-Slave关系。

  • 存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)。

  • 不同组的storage server之间不会相互通信。

  • 由storage server主动向tracker server报告状态信息,tracker server之间不会相互通信。

三、FastDFS安装

  FastDFS的安装我们还是通过Docker来安装实现吧,直接在Linux上还装还是比较繁琐的,但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦,不清楚的可以看看我的Docker专题的内容。https://blog.csdn.net/qq_38526573/category_9619681.html

1.拉取镜像文件

  首先我们可以通过 docker search fastdfs 来查询下有哪些镜像文件。

  我们看到搜索到的镜像还是蛮多的,这里我们使用 delron/fastdfs 你也可以尝试使用其他的镜像来安装,你也可以制作自己的镜像来给别人使用哦,只是不同的镜像在使用的时候配置会有一些不一样,有些镜像没有提供Nginx的相关配置,使用的时候会繁琐一点。接下来通过 docker pull delron/fastdfs命令把镜像拉取下来。

2.构建Tracker服务

  首先我们需要通过Docker命令来创建Tracker服务。命令为

docker run -d --name tracker --network=host -v /mydata/fastdfs/tracker:/var/fdfs delron/fastdfs tracker

  tracker服务默认的端口为22122,-v 实现了容器和本地目录的挂载操作。

3.构建Storage服务

  接下来创建Storage服务,具体的执行命令如下

docker run -d --name storage --network=host  -e TRACKER_SERVER=192.168.56.100:22122 -v /mydata/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

  在执行上面命令的时候要注意对应的修改下,其中TRACKER_SERVER中的ip要修改为你的Tracker服务所在的服务IP地址。

  默认情况下在Storage服务中是帮我们安装了Nginx服务的,相关的端口为

服务默认端口
tracker22122
storage23000
Nginx8888

  当然如果你发现这些相关的端口被占用了,或者想要对应的修改端口信息也可以的。要修改你可以先进入容器中查看下相关的配置文件信息。

  然后查看storage.conf文件

  这个是storage监听的Nginx的端口8888,如果要修改那么我们还需要修改Nginx中的服务配置,这块的配置在 /usr/local/nginx/conf目录下

  查看下文件

所以要修改端口号的话,这两个位置都得修改了。当然本文我们就使用默认的端口号来使用了。

4.测试图片上传

  好了,安装我们已经完成了,那么到底是否可以使用呢?我们来测试下。首先在虚拟机的/mydata/fastdfs/storage下保存一张图片。

  然后我们再进入到storage容器中。并且进入到 /var/fdfs目录下,可以看到我们挂载的文件了

  然后执行如下命令即可完成图片的上传操作

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.jpg

  通过上面的提示我们看到文件上传成功了,而且返回了文件在storage中存储的信息。这时我们就可以通过这个信息来拼接访问的地址在浏览器中访问了:http://192.168.56.100:8888/group1/M00/00/00/wKg4ZGHcKLSAXibaAAezMuUrlS8235.jpg

  好了到这儿FastDFS的服务安装成功了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STAAD.Pro CONNECT Edition

STAAD.Pro CONNECT Edition Bentley STAAD或STAAD Pro软件是分析和设计世界第三世界的第一款最佳工程软件,对于金属、混凝土、木材、铝和冷金属的专业选择,设计几乎所有类型的塑料、石化、隧道、桥梁、蜡烛等结构专业的功能和软件中任何数据大小的使用。…

Java课程案例学习(3)

2.1 学生管理系统实现步骤 案例需求 针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删…

Jcmd 虚拟机诊断利器

Jcmd 虚拟机诊断利器 Java虚拟机(JVM)是运行Java程序的抽象化的计算器。今天,来学习下如何轻松诊断正在运行的JVM。 JDK本身中提供了许多可用的工具,可以用于各种开发、监视和故障排除活动。推荐使用jcmd,简单易懂&a…

[附源码]计算机毕业设计南通大学福利发放管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ThinkPHP6综合业务管理系统

有需要请私信或看评论链接哦 可远程调试 ThinkPHP6综合业务管理系统一 介绍 综合业务管理系统基于ThinkPHP6开发,数据库mysql,前端Layui,后台模板ok-admin。管理员登录系统后可对场所,分类,用户,运营商&am…

图片扫描仪第一弹,我实现了一个办公位简笔画

来一波对比 其实我工位还有点手办,一个植物,实在不会画,于是画了个基础版的。 办公位简笔画 虽然,这个工位上没有一个动画,但是图形和实物神似,所以可以用另一个动总结这个简笔画,那就是生动…

量子计算(十一):常见逻辑门以及含义

文章目录 常见逻辑门以及含义 一、Hadamard(H)门 二、Pauli-X 门 三、Pauli-Y 门 四、Pauli-Z 门 五、旋转门(rotation operators) 1、RX(θ)门 2、RY(θ)门 3、RZ&#xf…

深入理解计算机系统

hi,大家好,我是大师兄,让我们一起复习了一遍计算机系统核心知识,希望大家早日掌握这些核心知识,打造自己坚实的基础,为自己目标慢慢积累,等到自己春天的到来。详细点击查看-> 极客星球。计算…

PDF解除密码怎么操作?教你一键解除密码

我们在处理工作文件时,经常会有一些文件是加密状态的,这种文件必须要输入密码才可以打开,这时候就造成了很多不便,如果文件需要打印,我们就必须先输入密码,而且在每次查看文件前,都必须输入密码…

记录一次 在linux 搭建的mysql迁移到docker容器中

上篇文章写道,我腾讯云被攻击了,然后我各种删除木马文件,但在这个过程中,有些系统文件没认到,以为是木马文件,就删除了,各种处理无果,打开腾讯云的救援模式,备份了些重要…

【数据库】mysql索引

DB索引: 如果表创建了索引,那么DB会维护一张关于索引和主键关系的表 好处:快速查找数据 缺点:要额外维护一张表,会额外占用空间,对于表数据的更新操作都涉及更新索引 索引的操作 创建索引:…

LeetCode 74. 搜索二维矩阵

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 74. 搜索二维矩阵,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 74.…

[Android] [ROOT] Magisk(魔术师/面具) 设置以及必装模块的安装

🍁简介 当我们给手机刷入Magisk(面具)后,等于获得了安卓系统的最高管理员权限,也就是root权限。获取root权限后的设备相对于未root的设备,安全性会有一定的降低。也许是基于这个原因,现在大部分应用都会检测你的设备是…

xcode常用功能与操作

查看target是静态还是动态库 选中target,点击Build Settings tag,然后再右上角搜索框输入 mach,查看Mach-O type的值即可 mach-o文件类型分为: Executable:应用的主要二进制 Dylib Library:动态链接库&am…

栈与队列5:逆波兰表达式求值

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:150. 逆波兰表达式求值 题目: 根据 逆波兰表示法,求表达式的值。 有效的算符包括 、-、*、…

安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】

💕💕💕💕💕💕💕💕💕💕💕提取手机分区方法列举💕💕💕💕💕💕💕&a…

mybatis-plus,sgg,杨bochao,p49完成

MyBatis-Plus (baomidou.com) 一 MyBatis-Plus简介 增强工具。只做增强不做改。 可以直接在mybatis的基础上整合mybatis-plus。此时并不会影响mybatis的功能,即mybatis原来的功能都在,该怎么用还怎么用。锦上添花的是还能使用mybatis-plus提供的&#…

修改node_modules中安装的依赖(如第三方ui组件样式)并在下次安装时保留

场景:需要修改安装的某个ui库的样式或者其他依赖,直接去node_modules中修改后,重新安装,或者其他小伙伴的电脑上并不能同时修改 方案:用patch-package 可以保留修改 步骤一 安装 patch-package —> npm i patch-…

jQuery - 获取内容和属性

jQuery 拥有可操作 HTML 元素和属性的强大方法。 jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力。 jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。 DOM Document Object Model(文档对象模型&a…

OpenGL 图像白平衡色温

目录 一.OpenGL 图像白平衡色温 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像白平衡色温 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenG…