基于 Docker 来安装 FastDFS

2023-11-07

百度百科

参考百度百科

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

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

FastDFS 简介

FastDFS服务端有两个角色:跟踪器(tracker)存储节点(storage)跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

FastDFS 存储策略

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

上传交互过程

  • FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

  • Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

  • 当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
    在这里插入图片描述

下载交互过程

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。
在这里插入图片描述
跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

FastDFS的文件同步

写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

FastDFS 为什么要结合 Nginx

我们在使用 FastDFS 部署一个分布式文件系统的时候,通过 FastDFS 的客户端 API 来进行文件的上传、下载、删除等操作。同时通过 FastDFS 的 HTTP 服务器来提供 HTTP 服务。但是 FastDFS 的 HTTP 服务较为简单,无法提供负载均衡等高性能的服务,我们使用 FastDFS 的 Nginx 模块来弥补这一缺陷。

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设 Tracker 服务器将文件上传到了 192.168.1.80,文件ID已经返回客户端,这时,后台

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 Docker 来安装 FastDFS 的相关文章

  • kubernetes 集群中 django 应用程序的 Nginx 配置

    我在为部署在 kubernetes 中的 django 应用程序创建 nginx 配置文件时遇到困难 Nginx 和 app 是同一集群中的两个独立容器 据我了解 容器可以通过 127 0 0 1 XX 和主机名相互通信 我为此使用 min
  • 使用 FastCGI 运行 Lua 脚本

    我目前正在尝试找出使用 FastCGI 与 lighttpd 或 Nginx 一起运行 Lua 脚本的方法 我唯一能挖到的是WSAPI http keplerproject github com wsapi 开普勒计划的一部分 但我想知道是
  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • nginx 反向代理 websocket

    nginx 现在支持代理 websockets 但我无法找到任何有关如何在没有单独的情况下执行此操作的信息location应用于使用 websocket 的 URI 的块 我见过一些人推荐这种方法的一些变体 location proxy h
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • nginx server_name 在流块内可能吗?

    目前设置如下 stream server listen 9987 udp server name subdomain EXAMPLE com this line is resulting in an error proxy pass loc
  • 为什么 opcache 没有刷新?

    我用guzzlehttp guzzle封装在拉拉维尔 8 升级到后PHP 8 I get Symfony Component ErrorHandler Error FatalError Invalid opcode 117 2 0 in f
  • Nginx - Heroku Docker - 是否可以在 Heroku 上运行 Nginx 作为反向代理

    我试图弄清楚如何使用 Nginx 在 Heroku 应用程序上构建反向代理 问题是 Heroku 似乎每个应用程序只接受一个容器 但我的应用程序系统至少会使用三个容器 一个用于 Nginx 一个用于我的应用程序前端 一个用于我的业务逻辑服务
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • NGinx $proxy_add_x_forwarded_for 和 real_ip_header

    我在 NGinx 下有一个 web 应用程序和另一个前端负载均衡器 如下所示 x x x x IP 地址 客户端 a a a a gt LB b b b b gt NGX c c c c gt WEBAPP d d d d 这是我的 NGi
  • 使用查询参数值进行 NGINX 301 重定向

    我想重定向example com lang en to example com en 我正在使用 Python Django 我的服务器运行 Plesk Nginx 我尝试像这样在我的网页上重定向 但这是行不通的 rewrite lang
  • 如何避免 nginx“上游发送太大的标头”错误?

    我正在运行 nginx Phusion Passenger 和 Rails 我遇到了以下错误 upstream sent too big header while reading response header from upstream
  • 警告:请求的映像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 docker 来自守护程序的错误响应 无法选择具有功能的设备驱动程序 gpu 我在 mac 上尝试运行此命令时遇到此
  • 使用代理协议的 kubernetes nginx 入口最终出现损坏的标头

    我尝试使用代理协议在 google 容器上设置 nginx 入口 nodeport 以便可以将真实 IP 转发到后端服务 但最终导致标头损坏 2017 02 05 13 48 52 error 18 18 2 broken header H
  • uWSGI 皇帝权限被拒绝,除非 root

    我尝试使用二进制文件本身的标志 uid www data gid www data 并将其设置在我的配置中 uid www data gid www data 但套接字总是由我正在使用的帐户生成 因此我从 nginx 收到权限被拒绝的错误
  • nginx 解析器——dns

    请原谅一个非常初学者的问题 我无法理解 nginx 的 解析器 参数及其工作原理 我已阅读文档 搜索教程和帖子 使用解析器 nginx 和 dns 等关键字 但我仍然不确定如何应用解析器 http nginx org en docs htt
  • 连接到上游时 Django Gunicorn nginx(111:连接被拒绝)

    一个Django应用程序在AWS实例上运行 通过gunicorn和nginx配置 它运行良好一年多了 但是突然 我收到了502 bad gateway错误 然后我在nginx错误日志中看到了下面提到的消息 2017 05 17 16 18

随机推荐

  • [Err] 1054 - Unknown column ‘xxx‘ in ‘where clause‘ 异常报错

    Err 1054 Unknown column xxx in where clause 异常报错 1 第一种情况 2 第二种情况 3 第三种情况 在mysql查询语句时运行时 控制台经常会出现 Err 1054 Unknown column
  • CelebA人脸数据集

    CeleA是香港中文大学的开放数据 包含10177个名人身份的202599张图片 并且都做好了特征标记 这对人脸相关的训练是非常好用的数据集 官网链接 网盘链接 别看只是一堆人脸 他们很贴心地做好了特征标记 也就是说 你可以找到类似下面这些
  • python(1): subprocess子进程交互

    个人总结 有错欢迎指出 1 单纯使用popen调用外部程序 stdin write stdout read写入 读取 这两个方法都会等到子进程结束 原因 产生这种现象的原因也非常简单 就是标准输出和标准错误有一个缓存的概念 它不会立即将程序
  • OpenCV——彩色图像添加高斯噪声

    目录 一 高斯噪声 二 C 代码 三 python代码 四 结果展示 1 原始图像 2 添加高斯噪声 一 高斯噪声 高斯分布 也称正态分布 又称常态分布 记为 N 2
  • 尝试进行输出

    今天心看到的概念 学习 认知 我对这个观念有点疑问 不如说 学习和认知有很大练习 可以说我认为 学习是认知的一部分 因此 想要提高学习能力 就可以从提高认知能力入手 所以我去查了一下认知方面的书 把 认知天性 加入到了我的kindle里 费
  • 基于 OpenVINO™ 的 AI 视觉应用基础课学习笔记(一)人工智能发展

    第一讲是概述性的内容 人工智能发展 人工智能概述 人工智能 让机器的行为看起来就像是人所表现出的智能行为一样 图灵测试 一个人在不接触对方的情况下 通过一种特殊的方式 和对方进行一系列的问答 如果在相当长的时间里 他无法根据这些问题判断对方
  • R语言和医学统计学(10):正态性和方差齐性检验

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 医学和生信笔记 专注R语言在临床医学中的使用 R语言数据分析和可视化 文章目录 前言 正态性检验 shapiro wilk检验 kolmogorov smimov检验 方差齐
  • 使用kali破解win7密码

    虚拟机密码忘了 修改启动顺序为CD 设置虚拟机光盘镜像为kali ISO 这里用的是kali 2017 2 开启按f2进入kali live 模式 fdisk l 查看磁盘分区 找到win7虚拟机所使用的磁盘 mount dev sda1
  • 以前的windows安装文件可以删除吗_C盘里的文件夹都有何用?可以删除吗?哪些可以删除?...

    众所周知 C盘里的文件不能随意动 特别重要 那么打开C盘 我们可以在根目录下看到一些特定的文件夹 这些文件夹是干嘛用的呢 里面放着什么东西 哪些可以删除呢 今天蝈蝈就来给大家谈谈这个问题 以下是文件夹名及其介绍 不同系统 不同用户C盘里的文
  • 初识冯诺依曼体系结构

    目录 1 冯诺依曼体系结构 2 冯诺依曼体系的原理 3 数据流向 4 冯诺依曼体系的意义 1 冯诺依曼体系结构 我们常见的计算机 如笔记本 我们不常见的计算机 如服务器 大部分都遵守冯诺依曼体系 1 输入单元 包括键盘 鼠标 扫描仪 写板等
  • .NET混淆器Dotfuscator怎样利用切除和水印保护应用程序?

    Dotfuscator是一个 NET的Obfuscator 它提供企业级的应用程序保护 大大降低了盗版 知识产权盗窃和篡改的风险 Dotfuscator的分层混淆 加密 水印 自动失效 防调试 防篡改 报警和防御技术 为世界各地成千上万的应
  • Html小知识点和sublime部分用法

    主要的开发工具 chrome sublime photoshop 二 web标准有三个标准组成 1 结构标准 结构用于对网页元素进行整理和分类 我们主要学的是HTML 2 表现标准 表现用于设置网页的版式 颜色 大小等外观样式 主要指的是c
  • metaq/rocketmq入门学习

    MetaQ是一款分布式 队列模型的消息中间件 基于发布订阅模式 有Push和Pull两种消费方式 支持严格的消息顺序 亿级别的堆积能力 支持消息回溯和多个维度的消息查询 metaq是rocketmq的开源版本 rocketmq的一些文档 h
  • 创建QT项目

    经过了令人苦恼的版本选择 然后又经历了IDE熟悉以及纯C 应用的创建 接下来终于进入了激动人心的时刻 开启第一个QT项目 使用创建向导创建QT项目 文件 gt 新建文件或项目 选择应用 窗口应用 根据自己的实际情况 配置项目名称和项目保存的
  • 画流程图都可以用哪些工具?

    在日常生活中 我相信我们很多人都看到过流程图 对于设计师来说 它还需要涉及流程图来反映用户的旅程和交互方式 那么你知道哪些流行的流程图设计软件呢 作为高级设计师 我今天推荐10款流程图设计软件 你可以和我一起读这篇文章 即时设计 即时设计是
  • uni-app 从零开始第三章:底部 tabBar

    pages json 页面路由 uni app官网 一 新建 home页面 找到pages目录 新增一个home的页面 勾选上同时新建文件夹 新建完成后 pages json 中 会自动添加上刚刚新建的文件信息 二 新增tabBar数据 在
  • Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图

    数据可视化系列汇总 Matplotlib可视化 二维图表绘制 折线图 直方图 散点图 条形图 箱形图 Matplotlib可视化 3D绘制散点图 曲面图 折线图 等高线图 Excel数据分析高级技巧 动态图表制作 offset vlooku
  • 26_Java判断String是否以某个字符串开头或结尾

    Java判断String是否以某个字符串开头 String mobile 8618730600000 System out println mobile startsWith 86 输出true System out println mob
  • VSCode+PHPstudy配置PHP开发环境

    第一步 下载安装VSCode编辑器 第二步 下载安装PHPstudy集成环境 第三步 打开PHPstudy 选择界面左侧中的环境 第四步 点击右侧PHP运行环境下面的更多 选择适合的PHP版本 第五步 点击PHPstudy左侧环境 再点击右
  • 基于 Docker 来安装 FastDFS

    文章目录 百度百科 FastDFS 简介 FastDFS 存储策略 上传交互过程 下载交互过程 FastDFS的文件同步 FastDFS 为什么要结合 Nginx 其他资源 FastDFS 安装 环境准备 创建工作目录 docker com