分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

news2024/12/22 23:33:28

分布式系统概念和设计

文件系统的特点

负责文件的组织,存储,检索,命名,共享和保护

在这里插入图片描述

文件包含数据和属性

  • 数据:包含一系列数据项——8比特的字节,读写操作可访问任何一部分数据
  • 属性:用一个记录表示,包括文件长度,时间戳,文件类型,所有者身份和访问控制表
  • 下图阴影部分是系统管理,其余则是用户操作维护
    在这里插入图片描述
  • 元数据:用于管理文件所需的存储在文件系统中的所有特殊信息,包含文件属性,目录和其他文件系统使用者的信息
  • 每一层只依赖于下一层,分布式文件服务系统可能附加模块实现客户服务器通信,分布式命名和文件的定位能力

文件系统操作

在这里插入图片描述

分布式文件系统的需求

需求:开发过程中出现性能,可伸缩性,并发控制,容错和安全的需求

透明性

文件系统服务通常是负载最重的服务,功能和性能非常关键,设计必须平衡灵活性和可伸缩性与软件的复杂性和性能。

  • 访问透明性:客户端不必了解文件的分布存储性质
  • 位置透明性:客户可以只使用一个文件命名空间,不改变路径的情况下,多个文件或文件组应该可以被重定位:同时允许客户在任意时刻执行时都使用同样的命名空间
  • 移动透明性:当文件移动,客户程序和客户节点上的系统管理表都不必改变,允许文件的移动性
  • 性能透明性:服务负载在一个特定范围内变化,可能能保持满意的性能
  • 伸缩透明性:文件可以不断地扩充,负载可以线性扩展

并发文件更新

一个客户改变文件的操作不应该影响其他客户访问或改变同一个文件的操作。

当前大多数UNIX标准,提供建议性和强制性的文件级别或记录级加锁

文件复制

在支持文件复制的文件服务中,一个文件可以表现为在不同位置文件内容的多个副本

一个允许多个服务器共享文件服务的负载,增强服务的伸缩性同时改进容错性能

当一个文件损坏,可以访问另一个具有此文件副本的服务器

硬件和操作系统异构性

文件服务的接口必须有明确的定义,这样在不同的操作系统和计算机上可以实现客户和服务器软件,开放性一个重要的需求交付实现

容错

  • 文件服务器分布式系统中的中心角色决定了它必须在客户和服务器出现故障时能继续使用
  • 容错设计可以基于至多一次调用语义,而在按幂等操作设计的服务器协议中容错设计可以使用简单的至少一次调用语义,保证重复请求不会导致对文件的不合法更新

一致性

  • UNIX文件系统提供的是单一更新语义。
  • 提供一个对文件并发访问的模型,当多进程并发访问文件时,只能看到仅有的一个副本存在
  • 当文件在不同的地点被复制或被缓存,对一个副本所做的修改要被传播到所有的副本,传输中间的时间延迟,这种情况会发生偏离单一副本语义

安全性

大多数文件系统基于访问控制列表的访问控制机制。

在分布式文件系统,客户请求需要被认证,这样在服务器上的访问控制需要基于正确的用户身份。

同时还需要使用数字签名和私密数据加密机制保护请求和应答消息的内容

效率

效率的前提是需要处理好可靠性和稳定性的前提需求

文件服务系统结构

平面文件服务

注重在文件内容上的实现操作,文件唯一标识符(UFID)

在所有平面文件服务操作的请求中用于指明文件

文件服务和目录服务的职责划分是基于UFID的的使用实现

UFID是一长串序列,每个文件的UFID在分布式系统的所有文件中是唯一的

当平面服务接收一个创建请求,会生成一个UFID,将请求UFID返回给请求者,看看OSS的使用方式

目录服务

提供文件名到UFID的映射。

客户通过向目录服务提供文件名获取文件的UFID

目录服务提供生成目录,在目录中加入新的文件名以及目录中获得的UFID所必须的功能,是平面服务的客户,其目录文件存储在平面文件服务提供的文件中

客户模块

客户模块运行在客户机,集成和扩展了平面文件服务和目录文件服务的操作,并为客户端提供用户级程序提供单一应用程序接口

平面文件服务接口

在这里插入图片描述

访问控制

UNIX系统
  • 在UNIX文件系统中,系统会将用户的访问权限和在open的请求访问权限模式比较,只有在用户拥有必要权限的时才能打开文件
  • 在访问权限检查中使用的用户标识(UID)是用户早期认证登录的结果,并且在分布式的实现中不能被修改
  • 访问权限会保持到文件关闭,并且在同一文件上进行随后操作,系统不需要进行再次检查
分布式文件系统实现
  • 在分布式的实现中,访问检查必须在服务器上进行,因为服务器RPC接口是一个访问文件的无保护的点
  • 用户标识必须在请求中传输,并且服务器容易被伪造的标识欺骗
  • 严重:如果访问权限检查的结果被保留在服务器上并在下一次访问中使用时,服务器就不再是无状态的
    • 当文件名被转化为UFID时,系统进行一次访问检查,同时其结果按权能的形式编码,它作为以后一系列请求的访问许可将被返回给客户
    • 每一次客户请求,客户都发送用户标识,并且在每一次文件操作时,服务器都进行访问检查(更加通用的方式)

目录服务接口

提供从文件名到UFID的翻译服务

实现需要保留一个包含文件名到UFID映射的目录文件

每一个目录向普通文件一样存储,也有其UFID,因此,目录服务是文件服务的一个客户

在这里插入图片描述

每一操作中,需要包含在目录文件中的文件的UFID

基本目录服务中lookup操作执行一个文件名——》ufid转换

是一个构造块,提供其他服务或客户模块已完成更复杂的翻译

改变目录的两种操作:

  • AddName:向目录中增加一个条目,并且在文件的属性记录中增加引用计数器
  • UnName:从目录中删除一个条目并将计数器减,当计数器减到零,删除文件
  • GetNames使客户可以检查目录内容,还可以实现类似UNIX shell中对文件名的模式匹配操作。返回存储在给定目录中的全部文件名或文件名的子集。此操作中系统对客户提供的正则表达式进行模式匹配进行文件名的匹配。

层次文件系统

  • 向UNIX提供的由树形结构组织目录的文件系统是一中层次文件系统
  • 每一个目录包含文件名和其他可以从此目录访问的目录名,可以使用路径名来访问任一文件或目录——路径名是代表树中一条路径的多部分名字
  • 根有一个特定的名字,并且每一个在目录中的文件或目录都有名字
  • UNIX文件命名机制不是严格的层次型的结构——一个文件可能有多个名字,可能在不同的目录中,通过link命令实现,该命令可以为指定的目录中的文件加入新的名字但是inode没有改变

文件组

  • 文件组是一个给定服务器上的文件集合
  • 一台服务器可能包含多个文件组,组不能在服务器之间移动,并且文件不能改变隶属的组
  • 类UNIX和大多数其它系统中用到的一个相似构造(文件集系统)
  • 文件组最早用于支持在计算机间移动哪些存储在可移动磁盘上的文件集合
  • 在分布式文件服务中,文件组支持将文件一更大的逻辑单位分配到服务器上同时它还支持用存储在几个服务器上的文件实现文件服务。
  • 在支持文件组的分布式文件系统中,UFID包括一个文件组标识组件,能使每个客户端上的客户模块向包含响应文件组的服务器发送请求
  • 文件组标识必须唯一,文件组可以移动的是因为需要唯一的标识文件系统。

Sun网络文件系统

NFS(Network File System)是一种分布式文件系统协议,用于在计算机网络中共享文件和目录。它允许不同的计算机通过网络透明地访问和共享文件系统资源,就像这些资源本地存储在计算机上一样。NFS协议最初由Sun Microsystems开发,并成为UNIX和Linux操作系统中使用广泛的标准协议之一。其工作原理是客户端向服务器请求文件系统操作,服务器则将所需的数据进行处理并返回给客户端。

在这里插入图片描述

用Kerberos实现NFS的安全性

Kerberos可以实现NFS的安全性,其过程如下:

  1. 客户端向Kerberos服务器请求TGT(Ticket Granting Ticket)。
  2. Kerberos服务器用客户端提供的密码对其进行验证,如果验证通过,则向客户端发送TGT。
  3. 客户端使用TGT向Kerberos服务器请求服务票据(Service Ticket)。
  4. Kerberos服务器返回服务票据,其中包含着加密的会话密钥(Session Key)。
  5. 客户端向NFS服务器发送服务票据和会话密钥。
  6. NFS服务器使用会话密钥解密服务票据,并验证其有效性。如果验证通过,则允许客户端访问文件系统。

这样,Kerberos可以确保客户端与NFS服务器之间的通信是安全的,并且只有经过身份验证的用户才能访问文件系统。

Kerberos目的是减少需要信任假设的组件范围,当在Kerberos化,只接受哪些通过kerberos身份认证的客户发出的请求

HDFS的访问控制

HDFS(Hadoop Distributed File System)中的访问控制可以通过以下两个机制来实现:

权限控制列表(ACLs):针对文件或目录的每个对象,可以设置读、写和执行权限,也可以添加更高级别的访问控制,例如修改、删除等。这些权限可以授予特定用户和组。

POSIX 权限模型:类似于 UNIX/Linux 系统中的 chmod 和 chown 命令,可以为文件或目录设置基本的读、写和执行权限,以及所有者和组。不同之处在于 HDFS 中的 POSIX 权限控制是基于 Kerberos 认证和授权机制实现的。

在 HDFS 中,访问控制权限是由 NameNode 管理和维护的。只有拥有适当权限的用户才能够访问文件或目录。同时,HDFS 还提供了一种称为“代理用户”的机制,允许用户以其他身份执行操作。这可以在需要使用其他用户的权限时非常有用。


HDFS中的ACL(Access Control List,访问控制列表)可以用于控制文件和目录的访问权限。其实现思想是在每个文件和目录上维护一个包含授权用户和组信息的ACL,以便Hadoop系统在运行时检查用户对文件和目录的访问权限。

以下是设置HDFS ACL的步骤:

为文件或目录添加ACL:使用hdfs dfs -setfacl命令来设置文件或目录的ACL。例如,设置“user1”用户可以读取和写入文件:

hdfs dfs -setfacl -m user:user1:rwx /path/to/file
查看ACL:使用hdfs dfs -getfacl命令来查看文件或目录的ACL。例如,查看文件的ACL:

hdfs dfs -getfacl /path/to/file
修改ACL:使用hdfs dfs -setfacl命令来修改文件或目录的ACL。例如,将“user1”用户的权限更改为只读:

hdfs dfs -setfacl -m user:user1:r-- /path/to/file
删除ACL:使用hdfs dfs -setfacl命令来删除文件或目录的ACL。例如,删除文件的ACL:

hdfs dfs -setfacl -b /path/to/file

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

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

相关文章

一文详解 SCTP 协议

SCTP(Stream Control Transmission Protocol)流控制传输协议,由 RFC2960 定义。SCTP的设计目的是提供一种可靠的、面向消息的数据传输服务,以便于支持多点通信以及满足传输的可靠性需求。SCTP 目前广泛应用于VoIP、移动通信和云计算等领域。 SCTP 主要特点SCTP 消息结构SCTP …

Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…

应用层开发想转Android framework开发要从何开始

前言 现如今,由于市面上应用App的更新逐渐变少,很多Android移动应用开发者都开始转型做系统开发,这比开发应用有趣多了,因为你可以探索系统模块的运行原理,从框架层面去了解它。 在应用层,你只需要配置好…

JAVA-异常

文章目录 1.异常的体系1.3异常的分类 2.异常的处理2.2异常的抛出throw2.3异常的捕获2.3.1异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3.自定义异常类 1.异常的体系 Throwable:是异常体系的顶层类,其派生出两个重要的子类…

前端框架篇学习--选择命令式还是声明式

命令式与声明式定义 大白话:假期回家了,我想吃老妈的大盘鸡,然后老妈就去采购食材,剁鸡块,卤鸡肉,切土豆,然后爆炒起来,想方设法给我做好吃的大盘鸡。老妈上菜的餐桌,我…

SQL语句学习笔记(对库、表、字段、的操作)

查看mysql的状态 status 启动、停止 mySQL服务 图像界面方法: dos窗口执行:services.msc 控制面板–>管理工具–>服务 命令行方法: 启动: net start mysql80 停止: net stop mysql80 启动与环境变量 添加环境…

UnityShaderBook中消融dissolve详解

消融这个效果算得上游戏开发中用的比较多的一个效果,表现游戏对象消失的时候经常用到,这个效果实现也非常简单,因此在《UnityShader入门精要》中也就短短几句话讲完了,这里我想针对书中的效果详细讲解一下。 Shader源代码&#x…

(浙大陈越版)数据结构 第二章 线性结构 2.2 堆栈

目录 2.2.1 什么是堆栈 堆栈 什么是堆栈 例子:计算机如何进行表达式求值?如:56/2-3*4 后缀表达式 堆栈的抽象数据类型描述 2.2.2 堆栈的顺序存储实现 例子:用一个数组实现两个堆栈,要求能最大利用数组空间&…

路径之谜(DFS)-2016年蓝桥杯国赛

路径之谜-2016年国赛 1、题目描述2、解题思路3、代码实现1、题目描述 小明冒充 X 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 nn* 个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能…

【Java虚拟机】JVM常见诊断命令和调试工具

1.JVM常用命令行参数jps和jinfo实操 准备测试代码 /*** author lixiang* date 2023/5/4 20:53*/ public class JVMTest {public static void main(String[] args) throws InterruptedException {Thread.sleep(1000000);} }(1)命令jps:全称 …

【exgcd】牛客练习赛 D-青蛙兔子的约会

D-青蛙兔子的约会_牛客练习赛111 (nowcoder.com) 题意: 思路: 感觉和那个青蛙的约会比较像 就是列了个方程: a*xb*yn 考虑用exgcd解方程 然后看x在[L,R]有没有解 做法就是先把x的最小整数解求出来,然后考虑它的通解 xx0b/…

2023年五一数学建模 B 题过程与结果

文章目录 第一问第二问数据时序分析Auto-ARIMA第二问求解解的情况A->Q:D-> AQ-V总快递数 第三问第四问遗传算法求解 第五问SARIMA 模型拟合季节性规律 第一问 见 2023 年 五一杯 B 题过程 代码(第一问) 第二问 第二问考虑是一个时序预测问题&a…

图像生成论文阅读:Latent Diffusion算法笔记

标题:High-Resolution Image Synthesis with Latent Diffusion Models 会议:CVPR2022 论文地址:https://ieeexplore.ieee.org/document/9878449/ 官方代码:https://github.com/CompVis/latent-diffusion 作者单位:慕尼…

数字乡村建设与示范项目可行性研究报告(word可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 5.1 “三平台”:建设支撑农业发展农村治理惠民服务的三大应用平 台 5.3.1 建设智慧农业综合服务平台 夯实数字农业基础,推进重要农产品全产业链大数据…

redis服务搭建,C++实现redis客户端,redis远程可视化工具

目录 redis简介redis服务搭建redis常用命令C实现redis客户端redis远程可视化工具:Another Redis DeskTop Manager redis简介 官方网址:https://redis.io/ 开源地址:https://github.com/redis 中文文档:http://www.redis.cn/documentation.ht…

造轮子系列】面试官问:你能手写Vuex吗(一)?

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 Vuex 是 Vue.js 的状态管理模式,它主要解决了组件之间共享状态时的问题。在本文…

网络原理之传输层

网络原理,进一步了解网络是如何工作的~~ 按照网络协议这几个层次来展开分为五点: 应用层(重点介绍)传输层(重点介绍)网络层(跳过)数据链路层(跳过)物理层&a…

JavaScript,

JS-引入方式JS-基础语法 书写语法变量数据类型&#xff0c;运算符&#xff0c;控制语句 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"…

Abstract Expressionist

古董地图画集 10大最有名的抽象艺术家 抽象表现主义是现代许多不同艺术思想和表达流派中最奇特的艺术运动之一。这场运动开始从社会变革中涌现出来&#xff0c;恰逢第二次世界大战的最后几周和几个月。 这一次&#xff0c;来自世界各地的人们开始欢迎在经历了多年有史以来最致…

【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security

Token基本了解&#xff1a;【详细阐述Token的来源】公钥私钥基本了解&#xff1a;【理解公钥】 文章目录 一、Cookie 经典介绍以及使用案例二、Session 经典介绍以及拦截登录案例三、Token MySQL 的基本介绍及其基本使用四、JWT 基本介绍及其基本讲解五、SpringBoot 使用拦截器…