分布式文件系统

news2024/11/27 6:14:31

0.0 分布式文件系统

一般做法:

传统的模式是我们通过tomcat或者nginx,存放静态资源文件。

存在的问题:

单个节点会出现存不下的情况,需要多个节点。

分布式文件系统

需要一个系统来管理多个计算机节点上的文件数据,这就是分布式文件系统。

分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。

DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。

单独的 DFS共享文件夹的作用是相对于通过网络上的其他共享文件夹的访问点 [1]  。

分布式文件系统的发展

第一阶段,网络文件系统

第二阶段,共享SAN文件系统

第三阶段,面向对象的并行文件系统

分布式文件系统特点

分散性: 扩展到网络上的大部分的设备,而且是有冗余部分,可以防止丢失。

安区性:是分布式文件系统最关心的内容。如果文件只限定于一个用户,那还比较容易实现,但是在网络当中,文件必须采取并发控制,实现文件的多用户访问。

架构:通常采用的事C/S的架构

分布式文件系统架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PYEMIJyL-1669780194654)(https://bkimg.cdn.bcebos.com/pic/34fae6cd7b899e51d6ca036a42a7d933c8950d03?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2U4MA==,g_7,xp_5,yp_5)]

最早是AFS,DFS是AFS的一个版本。

AFS是一种分布式的文件系统用来共享与获得在计算机网络中存放的文件。

DFS是AFS的一个版本,作为开放软件基金会(OSF)的分布式计算环境DCE中的文件系统部分 。

NFS和AFS的区别在于对并发写操作的处理方法上。

无状态系统:在这个系统中,服务器并不保存其客户机正在缓存的文件的信息。因此,客户机必须协同服务器定期检查是否有其他客户改变了自己正在缓存的文件。这种方法在大的环境中会产生额外的LAN通信开销,但对小型LAN来说,这是一种令人满意的方法。NFS就是个无状态系统 [8]  。

回呼(Callback)系统:在这种方法中,服务器记录它的那些客户机的所作所为,并保留它们正在缓存的文件信息。服务器在一个客户机改变了一个文件时使用一种叫回叫应答(callbackpromise)的技术通知其它客户机。这种方法减少了大量网络通信。AFS(及OSFDCE的DFS)就是回叫系统。客户机改变文件时,持有这些文件拷贝的其它客户机就被回叫并通知这些改变 [8]  。

网络存储的对比

30bbc3b4cc9b4df1ee6c2f5f8fea2cbf.png

7635e6ed98694ad51d0d2e0a6fd3c91e.png

1.0 FastDFS与HDFS比较

说到分布式文件存储,肯定会有人想到HDFS,他们两者主要定位和应用场景是不一样的。

Hadoop中的文件系统HDFS主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式,所以是大数据大文件存储来使用的场景。

FastDFS主要用于互联网网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快存储。FastDFS用于存储中小文件都是不错的,比如用户头像啊,一些较小的音视频文件啊等等都行。

2.0 FastDFS

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

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

架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2YZggJoc-1669780194656)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg-blog.csdnimg.cn%2F20210529171938244.png%3Fx-oss-process%3Dimage%2Fwatermark%2Ctype_ZmFuZ3poZW5naGVpdGk%2Cshadow_10%2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nlc2lyaWE%3D%2Csize_16%2Ccolor_FFFFFF%2Ct_70&refer=http%3A%2F%2Fimg-blog.csdnimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672280746&t=fa10e3b55a2b20e496ae6b9c1ea6a58f)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hy9qCxtd-1669780194656)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fs5.51cto.com%2Fwyfs02%2FM01%2F9D%2F18%2FwKioL1l5xemjkgpaAAQ4yn4UPXI031.jpg-wh_500x0-wm_3-wmp_4-s_210103532.jpg&refer=http%3A%2F%2Fs5.51cto.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672293455&t=711c3735a3243126d710c26d26679538)]

角色

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)

tracker:跟踪器节点,负责负载均衡。

storage:存储节点,负责存储,同步,提供相关的接口

文件的meta data,是文件的相关属性,以(key value)进行管理。

group:组,同组节点提供了冗余备份,不同组用于扩容。

流程

文件上传过程

在这里插入图片描述

1.Storage会定时的向Tracker发送心跳,告诉Tracker自己还还活着,这样Fastdfs就可以工作了

2.客户端发送上传请求给Tracker,Tracker会检查是否有可用Storage

3.如果有可用的,客户端就可以上传文件数据到Storage上

4.Storage将文件写入磁盘后,会返回路径信息给客户端

5.客户端就可以根据这个路径信息找到上传的文件

文件下载过程

在这里插入图片描述

1.Storage会定时的向Tracker安装发送心跳,告诉Tracker自己还还活着,这样Fastdfs就可以工作了

2.客户端发送下载请求到Tracker上,Tracker查找到存储的Storage地址后返回给客户端

3.客户端拿到Storage地址后,去Storage上找到文件

4.把文件返回给客户端

安装

Linux上安装FastDFS,一定要先启动Tracker,然后再启动Storage。

安装包

  • libfatscommon:FastDFS分离出的一些公用函数包

  • FastDFS:FastDFS本体

  • fastdfs-nginx-module:FastDFS和nginx的关联模块

  • nginx:发布访问服务

使用方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wdbTeTp-1669780194657)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg-blog.csdnimg.cn%2F20201221132446974.png%3Fx-oss-process%3Dimage%2Fwatermark%2Ctype_ZmFuZ3poZW5naGVpdGk%2Cshadow_10%2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F6OTk5Ng%3D%3D%2Csize_16%2Ccolor_FFFFFF%2Ct_70&refer=http%3A%2F%2Fimg-blog.csdnimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672293521&t=f5420de9a211c55e8928c293051e2347)]

3.0 MinIO介绍

MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。特别适合与图片服务器。

客户端支持Java,Net,Python,Javacript, Golang语言。APACH提供的支持。注意,英文文档为准,中文文档坑比较多。

基本概念

1、Object:存储到minio的基本对象,如文件,字节流,Anything。。。。

2、Bucket:用来存储Object的逻辑空间。每个Bucket之间的数据是互相隔离的。对于客户端而言,就相当于存放文件的顶层文件夹。

3、Drlve:存储数据的磁盘,在MinIO启动时,以参数的方式传入。MinIO中所有的对象数据都会存在Drive里。

4、Set:即一组 Drive的集合,分布式部署根据集群规模自动划分一个或者多个Set,每个Set中的Drive 分布在不同位置。一个对象存储在一个Set上。

4.1、一个对象存储在一个Set上。

4.2、一个集群划分为多个Set。

4.3、一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出。

4.4、一个Set中的drive 尽可能分布在不同的节点上。

5、纠删码:Minio 使用纠删码机制来保证高可靠性。

5.1、使用highwayhash来处理数据损坏(Bit Rot Protectio)。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原。

5.2、纠删码是恢复丢失和算怀数据的数学算法,minio采用reed-solomincode将对象拆分成N/2数据和N/2奇偶校验块。这就意味着如果是12块盘,一个对象会被分成6个数据快、6个奇偶校验块,你可以丢失任意6块盘(不管其存放的是数据块还是奇偶校验块),你任可以从剩下的盘中的数据进行恢复。

5.2、纠删码模式,把数据分成 DATA BLOCk:数据块、 PARITY BLOCK:校验块。一个BLOCK 10M左右,如果一个文件小于10M,就以文件大小进行分块。如果一个文件大于10m,就以10M为一个文件单位进行分块。

应用场景

1、互联网非结构化数据的存储需求

1.1 、电商网站:海量商品图片

2.1、视频网站:海量视频文件

3.1、网盘:海量文件

4.0 阿里云OSS

云市场

比如,你的公司开发一个系统,要用到人脸识别技术。一般公司是不会自己去开发一套的,那个耗时又费力。

但这些服务,这些大佬公司早就开发好了,你只需要付点费用,调用他们相关接口就可以实现了。

像这样的服务还有很多,他们集合在一起,就形成了一个云市场。华为云,阿里云,百度云等由此而来。

阿里云OSS

阿里云OSS的一个简介,简而言之,他就是一个文件存储的服务。

以前我们的做法是,自己搭建一个图片服务器或者文件服务器,然后自己在写一套相关的实现方法。

但现在我们如果用了阿里云的OSS的话,这一块儿就可以省去我们买服务器的钱和写代码实现的时间。

阿里云OSS有点

对象存储OSS是阿里云提供的海量、安全、低成本、高持久性的云存储服务。本文将OSS与传统的自建存储进行对比,让您更好地了解OSS。

下表列举了与自建存储相比,OSS在易用性、持久性、数据安全等方面的优势。

应用场景

OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beAhzMek-1669780194658)(http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/zh-CN/0219177951/p141977.png “场景1”)]

利用海量互联网带宽,OSS可以实现海量数据的互联网并发下载。OSS提供原生的传输加速功能,支持上传加速、下载加速,提升跨国、跨洋数据上传、下载的体验。同时,OSS也可以结合CDN产品,提供静态内容存储、分发到边缘节点的解决方案,利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TQ951HcL-1669780194659)(http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/zh-CN/1219177951/p141987.png “场景2”)]

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

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

相关文章

[附源码]计算机毕业设计JAVA小锅米线点餐管理系统

[附源码]计算机毕业设计JAVA小锅米线点餐管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

Python Faker库造伪数据

pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple 在生成数据时,先调用unique,上面例子中的代码则改成下面这样 from faker import Faker def faker_demo(n): f Faker(“zh-CN”) l [] for i in range(n): # 代码更改处,…

安全高效应对混合办公新趋势 腾讯四大协同办公产品亮相

11月30日下午,2022腾讯全球数字生态大会「安全高效协同办公」专场在线上召开。论坛针对混合办公变革下的安全风险进行解析,并给出便捷规范的评估工具协助各行业客户评估自身办公安全成熟度,详细解读了腾讯数据安全解决方案、腾讯零信任iOA、腾…

Docker快速入门【极速浏览版】

文章目录11.1 Docker为什么出现1.2 Docker理念1.3 容器和虚拟机比较⭐️1.4 容器为什么比虚拟机快?⭐️1.5 Docker的基本组成⭐️1.6 Docker一个基本流程⭐️1.7 Docker架构⭐️1.7.1 入门版1.7.2 架构板22.1 Centos Docker安装2.2 前提条件2.3 官网安装doc2.4 查看…

安科瑞集中监控,剩余电流监测,温度保护电气火灾监控探测器

安科瑞 王晶淼/司红霞 一、电气火灾和爆炸的原因 电气火灾和爆炸在火灾、爆炸事故中占有很大的比例。如线路、电动机、开关等电气设备都可能引起火灾。变压器等带油电气设备除了可能发生火灾,还有爆炸的危险。造成电气火灾与爆炸的原因很多。除设备缺陷、安装不当等设计和施工…

人工智能-机器学习-深度学习-概述

文章目录一:人工智能需要的基础和涉及内容二:数学基础(1)线性代数(2)概率论(3)数理统计(4)最优化方法(5)信息论三:机器学习…

【ESD专题】案例:都是集成TVS管,为什么第一眼就发现不能导入?

本案例是在TVS管导入替代料时看规格书阶段发现的。如下所示为我司常用的集成TVS管,管子是四通道单向低寄生电容的。 电路框图和Top面的PIN脚与标识如下: 要导入的替代料介绍如下:可以看出也是4路ESD保护结构,也是低电容的高速接口。 电路框图和PI…

VMware虚拟机ubuntu网络配置以及ifconfig命令

文章目录VMware虚拟机联网NAT模式配置NAT联网原理手动配置网络关于apt命令关于ifconfig命令简介命令格式命令参数使用实例显示网络设备信息(激活状态的)开启/禁用网络VMware虚拟机联网 VMware提供:桥接,Host Only和NAT三种连网方式。 本文介绍的是NAT模式的具体设置方法&…

知识产权对接服务小程序开发,实现利益高效化

知识产权是市场经济的产物,所以知识产权的所属价值最终也是由市场所决定。科技的不断进步,让国内知识产权的申请量与注册量都显著增加,国家及国内科技企业对于知识产权的重视程度也显著提升,知识产权服务行业也迎来了飞速发展。很…

JVM运行时数据 堆

JVM运行时数据 堆快速调试堆参数设置堆分类运行流程Minor GC、Major GC与Full GC分代思想内存分配策略TLAB堆空间参数设置快速调试 一个JVM实例只存在一个堆内存,对也是Java内存管理的核心区域Java 堆区在Jvm启动的时候创建,其空间大小也就确定了。是JV…

缓存同步之 RabbitMQ 和 Canal

缓存同步 大多数情况下,浏览器查询到的都是缓存数据,如果缓存数据与数据库数据存在较大差异,可能会产生比较严重的后果。所以我们必须保证数据库数据、缓存数据的一致性,这就是缓存与数据库的同步。 数据同步策略 设置有效期&a…

Postman接口Mock Server服务器设置

目录 一、适用场景 二、设置步骤 2.1.创建一个mock server 2.2.配置mock server 2.3.Mock Servers创建成功一个新的mock地址 2.4.环境变量Environments:生成一个mock server新的环境变量 2.5.项目集Collections:生成一个mock server新的项目集&am…

Vue3 - Pinia 状态管理,解构 store(Pinia storeToRefs API 详细使用教程)

目录前言ES 解构方式(错误的)storeToRefs(正确的)总结SEO前言 解构啥意思呢?大家应该对 ES 传统方式解构非常了解,相同的,解构 store 也是如此。 假设你在状态管理仓库中定义很多很多数据&#…

BGP课后

文章目录实验要求拓扑图连接表1 网络连接规划表表2 网络设备明细表表3 IP规划表各设备的IP地址配置OSPF协议配置及BGP协议配置在R1、R2和R3上配置ospf协议在R2、R3、R4和R5上配置BGP协议路由引入利用路由策略实现路由过滤某一学校拟对单位网络进行规划设计。请根据下列具体要求…

适配高DPI QWidget::move移动有错误?

适配高DPI QWidget::move移动有错误? 1、现象 在适配高DPI文章发布之后,有个小伙伴立马联系我说增加了这个特性之后,发现一个移动坐标的问题。 比如说:QWidget::move(500, 500),在实际的高DPI屏幕上移动的像素并不是…

[附源码]Python计算机毕业设计Django的汽车租赁系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Linux下使用kvm搭建虚拟机群

Linux下使用kvm搭建虚拟机群 1.安装kvm 1.检查cpu是否支持虚拟化 [rootkevin ~]# grep vmx /proc/cpuinfo 如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。 2.确保BIOS里开启虚拟化功能&…

three.js之材质

文章目录简介常用材质点材质线材质网格模型材质和模型的对应关系属性公有属性sideopacity私有属性专栏目录请点击 简介 所谓材质,就是平常我们所说的塑料材质,金属材质,纤维材质等实质上所有材质都是WebGL着色器代码的封装 常用材质 点材质…

2023年湖北监理工程师报考条件和专业要求有哪些? 甘建二告诉你

2023年湖北监理工程师报考条件和专业要求有哪些? 一、2023年湖北监理工程师报考条件详细解读: 1、大专毕业满足4年,毕业专业理工类或者工科类专业毕业,监理工程师分为3个专业,土建、交通、水利三个专业对于报考专业要…

BIM设计 | 学会CAD这5个隐藏操作,让你受益无穷

每一个CAD设计师都会有自己的设计习惯,无论是从CAD的绘图、改图、图层管理、图块管理、甚至是打印设置,都是不尽相同的。 对于还是小白的新手设计师来说,是还没有一套属于自己的操作习惯的,这个阶段大多数新手设计师都是通过参考别…