分布式文件系统FastDFS

1. 什么是FastDFS

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

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

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

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

在这里插入图片描述
服务端两个角色:

Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。

Storage:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有 主从的概念。

2.文件上传流程

在这里插入图片描述客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文 件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
在这里插入图片描述
组名:文件上传后所在的 storage 组名称,在文件上传成功后由 storage 服务器返回, 需要客户端自行保存。
虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。
数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据 文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

3. 文件下载流程

在这里插入图片描述

4. 简易FastDFS架构

在这里插入图片描述

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

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

相关文章

html5 下拉刷新(pc+移动网页源码)

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId1071 本文实现在html5网页中使用下拉功能自动刷新显示更多内容, 使用jquery捕捉和处理相应的鼠标事件, 例如内容在顶部时,触发下拉事件后显示更多内容; 如内容在…

操作系统内存管理问题集锦

1. 可采用哪几种方式将程序装入内存?它们分别适用于何种场合? a. 首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的-库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存&#x…

java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...

首先我们在new 一个对象的时候,对象的id是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单的set 对象的属性,set新的属性值,而add进list中的对象还是同一个对象id&#…

python面试题总结(1)--语言特性

1. 谈谈对 Python 和其他语言的区别 答: Python 是一门强类型的可移植、可扩展、可嵌入的解释型编程语言,属于动态语言;其语法简洁优美、功能强大无比、应用领域非常广泛且具有强大完备的第三方库。 (注:语言有无类型…

视频网站盈利模式与营销策划

在与数十家视频网站进行信息网络传播权交易过程中,在研究视频网站内容和盈利模式基础上,综合自己在传统媒体和新媒体领域十几年的策划和营销经验,我发现:视频网站的盈利模式其实早就形成多种体系,但是盈利之路艰难&…

USACO 06JAN 牛的舞会 洛谷2863

题目描述 The N (2 < N < 10,000) cows are so excited: it’s prom night! They are dressed in their finest gowns, complete with corsages and new shoes. They know that tonight they will each try to perform the Round Dance. Only cows can perform the Round…

[UWP]了解模板化控件(4):TemplatePart

原文:[UWP]了解模板化控件(4)&#xff1a;TemplatePart1. TemplatePart TemplatePart&#xff08;部件&#xff09;是指ControlTemplate中的命名元素。控件逻辑预期这些部分存在于ControlTemplate中&#xff0c;并且使用protected DependencyObject GetTemplateChild(String ch…

动态重定位的增加的紧凑功能

动态重定位增加了紧凑的功能&#xff0c;在动态的分区分配时&#xff0c;可以对外部碎片进行紧凑来为没有内存空间进行存储的进程进行分配。

java 重载 equals_实现Student类的equals重载函数

[java]代码库//测试类public class StudentDemo {public static void main(String[] args) {Student s1 new Student("000","张三",18);Student s2 new Student("000","张三",18);//随便改boolean flag s1.equals(s2);System.out.p…

python面试题总结(2)--编码规范

1. 什么是 PEP8? 答&#xff1a;PEP8 --《Python Enhancement Proposal #8》&#xff08;8 号 Python 增强提案&#xff09;&#xff0c;他针对的 Python 代码格式而编订的风格指南。 2. 了解 Python 之禅么&#xff1f; 答&#xff1a;通过 import this 语句可以获取其具体…

【Unity热更新】学会AssetsBundle打包、加载、卸载

本教程详细讲解什么是AssetBundle压缩包机制!然后构建 AssetBundle、加载 AssetBundle 以及卸载 AssetBundle 的简要教程。这一个流程就是热更新! AssetBundles 简介 1.什么是AssetBundles? AssetBundles是Unity中一种用于打包和存储资源(如模型、纹理、声音等)的文件格…

Confluence 6 访问你的宏正文(body)

请查看 Writing User Macros 页面获得有关如何写用户宏的介绍。 这个页面介绍你可以在用户宏中可以使用的的代码信息。 访问你的宏正文&#xff08;body&#xff09; 在你用户宏模板中的 $body 对象可以访问访问到传递到你宏正文中的内容。 当你的宏有指定的正文的时候&#xf…

hibernate主键生成策略

1、hibernate 要求实体类里面有一个属性作为唯一值&#xff0c;对应的表字段是主键&#xff0c;主键可以不同的生成策略 2、hibernate 主键生成策略有很多的值 <generator class"native"></generator> 3、在class属性里面有很多值 &#xff08;1&#xf…

jboss mysql cluster_jboss配置mysql数据库连接池

jboss配置mysql数据库连接池下面YJBYS小编为大家整理了关于jboss配置mysql数据库连接池的文章&#xff0c;希望对你有所帮助。更多Java认证考试信息&#xff0c;尽在应届毕业生培训网!1&#xff1a;配置&#xff1a;JDK 1.5JBoss4.0.4Mysql5.0Myeclipse 4.12&#xff1a;建立数…

P2P-挑战和机遇

近年来互联网上对等连接P2P应用发展迅速&#xff0c;MP3和视频文件共享下载的P2P流已经成为宽带用户流量的主体。基于P2P的即时通信和互联网电话&#xff08;如Skype&#xff09;发展迅速&#xff0c;对等广播P2P流媒体等正在兴起。P2P协同计算和网格方兴未艾。P2P 应用支持网络…

python面试题总结(3)-- 数据类型(字符串)

1. 列举 Python 中的基本数据类型&#xff1f; 答&#xff1a; Python3 中有六个标准的数据类型&#xff1a;数字&#xff08;Number&#xff09;、字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#…

网页中JS函数自动执行常用三种方法

&#xff08;1&#xff09;最简单的调用方式&#xff0c;直接写到html的body标签里面&#xff1a; <body οnlοad"myFunction()"></body> <script type"text/javascript"> function myFunction(){ …

Jetty - Container源码分析

1. 描述 Container提供管理bean的能力。 基于Jetty-9.4.8.v20171121。 1.1 API public interface Container {// 增加一个bean&#xff0c;如果bean是一个Container.Listener则隐含调用addEventListener(Container.Listener)方法// Container.Listener只关心两个事件&#xff1…

Ubuntu中安装FastDFS

1 安装fastdfs依赖包 解压缩libfastcommon-master.zip进入到libfastcommon-master的目录中执行 ./make.sh执行 sudo ./make.sh install 2 安装fastdfs 解压缩fastdfs-master.zip进入到 fastdfs-master目录中执行 ./make.sh执行 sudo ./make.sh install 3 配置跟踪服务器tra…