首页天道酬勤linux(dubbo实现原理)

linux(dubbo实现原理)

admin 12-21 09:17 252次浏览

本文是FastDFS的基本概念和原理。

本系列文章分享了作者刚接触Linux学习时的实际工作记录,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装导入,希望能帮助初学者,不要走弯路

注意:

在Linux中区分大小写; 可以访问Linux多用户多线程Linux下的所有文件和目录;

FastDFS概念和原理

本文是FastDFS的基本概念和原理。 #快速DFS #,#快速DFS概念#,#快速DFS原理#,#快速DFS概要#,#快速DFS特征#,#快速DFS模式#,#快速DFS文件下载过程#

1.FastDFS简介

FastDFS是开源分布式文件系统,主要功能是文件存储、文件同步、文件访问(文件上传、文件下载)等,文件的大容量存储和高性能访问FastDFS特别适用于基于文件的在线服务,如照片、视频和文档。 FastDFS作为轻量级的分布式文件系统,FastDFS用c语言实现,支持Linux、FreeBSD、MacOS等UNIX系统。 FastDFS类似于谷歌fs,是APP级文件系统,只能通过自己的API而不是通用文件系统进行访问。 目前提供了c、Java SDK和PHP扩展SDK。 FastDFS是为网络APP定制的,可解决大文件存储问题,并追求高性能和可扩展性。 FastDFS可以看作是基于文件的key value存储系统,key是文件ID,value是文件的内容,所以称为分布式文件存储服务比较合适。

2.FastDFS特点

1)组存储,简单灵活;

2 )结构对等,不存在单点

3 )文件ID由FastDFS生成,作为文件访问证书。 FastDFS不需要传统的名称服务器或元服务器;

4 )大、中、小文件都可以很好地支持,可以保存大量的小文件;

5 )一个存储器支持多个磁盘,支持单磁盘数据恢复;

6 )提供nginx扩展模块,可以与nginx无缝联系;

7 )支持以多线程方式上传和下载文件,支持断点重新分发;

8 )可以在存储服务器上保存文件的其他属性。

3.FastDFS架构说明

FastDFS系统包括跟踪器服务器、存储服务器和客户端。

(1)跟踪服务器(Tracker server)

跟踪服务器:跟踪服务器,主要进行调度工作,起到负载均衡的作用。 在内存中记录群集中所有存储组和存储服务器的状态信息是客户机和数据服务器的交互中枢。 比GFS的master更紧凑,不记录文件索引信息,消耗的内存量更少。

跟踪器是FastDFS的协调员,管理着所有存储服务器和组。 各Storage在启动后与Tracker连接,同步自己所属的group等信息,维持周期性的心率。 跟踪程序根据存储心率信息建立组=[存储]跟踪程序需要管理的元信息很少,全部存储在内存中,而且跟踪程序上的元信息都是从存储程序报告的信息中生成的因为本身不需要持久化数据,所以跟踪器可以非常容易地扩展,直接添加跟踪器机就可以扩展到跟踪器上提供服务,集群中的各个跟踪器之间完全对等,所有跟踪器都是

(2)存储服务器(Storage server)

存储服务器—主要提供容量和备份服务的存储服务器(存储节点或数据服务器)。 文件和文件属性(元数据)存储在存储服务器上。 存储服务器直接利用操作系统中的文件系统调用来管理文件。

以存储服务器(以下称为存储)卷、组或卷(组)为单位进行组织,一个组中包含多个存储计算机,数据相互备份,存储空间建议在组中使用多个存储。按组组织存储有助于隔离APP、平衡负载和定制拷贝数。 例如,将不同的APP应用程序数据存储在不同的组中,可以根据APP应用程序的访问特性将APP应用程序分配到不同的组,以平衡负载。 缺点是组的容量依赖于独立存储

容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内的其他机器,使得恢复时间会很长。group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。storage接受到写文件请求时,会根据配置好的规则(后面会介绍),选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

group:组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的Storage server之间是对等的,文件上传、删除等操作可以在任意一台Storage server上进行。

(3)客户端(Client)

client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

(4)上传流程

(5)下载流程

(6)总结

总的来说,Tracker相当于FastDFS的大脑,不论是上传还是下载都是通过Tracker来分配资源;客户端一般可以使用ngnix等静态服务器来调用或者做一部分的缓存;Storage内部分为group卷(或者叫做组),卷与卷之间是平行的关系,可以根据资源的使用情况随时增加,卷内服务器文件相互同步备份,以达到容灾的目的。

4.FastDFS的FID

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

FID格式:组名/虚拟磁盘路径/数据两级目录/文件名 如:group1/M00/01/44/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg group1(组名)/M00(虚拟磁盘路径)/01/44(数据两级目录)/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg(文件名) (1)组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。 (2)虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。 (3)数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。 (4)文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

IT魔幻的百合豆:初学者踩坑之路及过程分享,希望能够帮到一些初学者,欢迎各位IT打工人,入坑讨论-_-

基数统计功能 云内存 UMem RedisRocketMQ 消息失败重试 解析——图解汇总不同聚合级别的数据-R和tidyverse箭头函数和剩余参数怎么用winform模拟鼠标按键的具体实现以编程方式导航到SwiftUI中的新视图Java 并发编程的可见性Java0基础_day11-抽象类与接口雷士灯具管理系统
() 2022年英语高考政策最新消息(2022年中考已确定改革)
相关内容