分布式操作系统 - 5.分布式命名管理

1.基本概念

实体(entity):系统中的任何对象

  • 物理资源型:主机、文件、打印机、磁盘
  • 逻辑抽象型:进程、用户、邮箱、新闻组、主页、报文

实体的名字(Name):一个数字位串或字符串,可唯一地表示一个实体

  • 如主机名、文件名、进程名、用户名

命名(Naming):赋予名字

  • 引用(Refer):如果实体X的名字为A,我们说,名字A引用(指向)实体X。

实体访问点(access point):用于访问该实体的接口,也是一个实体

  • 可以有多个访问点
  • 实体可以改变访问点
  • 访问点可以赋值给另一个实体

地址(address):实体访问点的名字,指向(引用)访问点;例如:服务器地址:IP+端口号

位置独立性

  • 实体的名字包含有地址信息,则是位置相关的
  • 实体的名字独立于地址,则是位置独立的

标识符(Identifier):特殊类型的名字

  • 一个标识符最多引用一个实体
  • 每个实体被一个标识符所引用
  • 一个标识符总是引用同一个实体(不准重用)

机器可读的名字:数字位传,如网卡地址

用户友好的名字(human-friendly name):有意义的字符串

实体定位:通过名字,找到实体所在的位置,从而找打实体

  • 名字解析:将名字映射到地址的操作过程

名称到地址的绑定:二元关系组(名字,地址),举例:域名数据库

固定实体:固定位置,实体的位置不会改变

移动实体(mobile entiny):具有可变位置,实体的位置可以改变

位置更新问题

  • 位置改变后,需查找DNS数据库,进行地址更新
  • 地址采用硬链接,如130.37.21.5,更新效率低
  • 地址采用符号链接,ftp.is.vu.nl,查找效率低

传统方法:在名字和地址之间的直接的单级映射

适合移动实体的方法

  • 采用标识符的两级映射
  • 将命名服务与定位服务分离开

在这里插入图片描述

2.非结构化命名管理

名称中不包含任何访问点的信息。例:72550(工作证号)

2.1 简单的实体定位方法:广播和多播方法

(1)广播方法(broadcast)

例: 地址解析协议(ARP ) : 由IP地址找到它的链路地址

在大规模网络环境中, 效率低

(2)多播方法(multicast)

多播组、 多播地址

定位点到点网络中的实体

定位多个实体: 同一组织

定位实体的副本: 最近的副本

(3)问题:可伸缩性

只适用于小规模网络,如局域网络

2.2 转发指针方法

当实体从A移动到B之后,在A上设置一个指向B的引用

优点:客户可利用传统的命名服务

缺点:间址链可能会很长、链的中间节点需要维护转发信息、链容易断

目标:限制链的长度,保证链的鲁棒性

在这里插入图片描述

(1)分布式对象迁移原理

SSP链:(stub存根,scion后代) p a i r s = ( p r o x y , s k e l e t o n ) pairs=(proxy, skeleton) pairs=(proxy,skeleton)

  • proxy:客户存根
  • skeleton:服务器存根

举例:当O从A移动B后,在A上保留原来的proxy,并设立一个代表O的skeleton

在这里插入图片描述

(2)转发指针的优化策略

例:通过在proxy中存储一个捷径(shortcut),重定向转发指针

调整策略:

  • 单独:仅有请求发起人,即初始proxy建立proxy短路
  • 全部:转发链上的所有proxy建立短路

在这里插入图片描述

2.3 基于原籍的方法

可用于大规模网络

原籍(Home)位置:

  • 实体的创建位置
  • 用于跟踪实体的当前位置

举例:移动IP原理

  • 每一个主机有一个固定IP地址
  • 固定IP地址对应一个Home代理
  • 主机移动后的临时地址(care-of转交地址)在它的Home代理上登记
  • 当Home代理收到packet后,转发到转交地址

缺点:

  • 可能会舍近求远;当前位置比原籍近,增加通信开销
  • 固定的原籍位置;无法根据需要改变,如主机已永远移动后

解决方案:将原籍位置记录在传统的名字服务器中

2.4 分布式哈希表(DHT)

(1)概念

散列表(Hash table,也叫哈希表):根据关键码值(key value)而直接进行访问的数据结构

分布式哈希表(DHT)

  • 广域范围中的巨大哈希表,有若干个分布式结点共同维护
  • 散列表被划分成很多块,每个结点被分配一个标识符(id),并称为与id对应的散列块的管理者。

散列表入口项

  • 一个实体的名字或关键字,通过散列(hash)函数,被映射为128位或160位散列值k
  • 键值为k的实体位于大于k的最小标识符(k≤ id)的节点内

Chord系统

  • 结点:具有标识符id
  • 实体:具有键值k
  • k的存储节点 s u c c ( k ) succ(k) succ(k) m i n   { i d ∣ i d ≥ k } min~\{id|id≥k\} min { ididk}

在这里插入图片描述

实体k的查找(线性)

  • 为结点p建立的链表
  • $succ(p+1) $:p的后继节点
  • p r e d ( p ) pred(p) pred(p):p的前驱结点
  • 如果 p r e d ( p ) < k ≤ p pred(p) < k ≤ p pred(p)<kp,则为结点p把自己地址返回给键值为k的进程;否则,只需将该请求转发给两个邻接点。
  • 时间复杂度: O ( N ) O(N) O(N)

(2)指示表:

一种路由表

F T p [ i ] = s u c c ( p + 2 i − 1 ) FT_p[i] = succ(p+2^{i-1}) FTp[i]=succ(p+2i1),第i各实体,指向p后 2 i − 1 2^{i-1} 2i1个结点。

查找键值k,结点p立即把该请求发给p的指示标中索引为j的结点q: q = F T p [ j ] ≤ k ≤ F T p [ j + 1 ] q = FT_p[j] ≤ k ≤ FT_p[j+1] q=FTp[j]kFTp[j+1],j即为下一跳

时间复杂度: O ( l o g ( N ) ) O(log(N)) O(log(N))

新结点p到来:找到 s u c c ( p + 1 ) succ(p+1) succ(p+1)

指示表的更新

  • 检查 F T p [ 1 ] FT_p[1] FTp[1](即 s u c c ( q + 1 ) succ(q+1) succ(q+1))的一致性
  • 确定后继节点的前驱节点是否是自己
  • 后台进程完成

在这里插入图片描述

(3)利用网络邻近的优化策略

跨网路由问题:在解析一个键值时,如通过路径a-b-c。 而a-b, b-c 之间是广域通信。 即, 在因特网中产生多次广域消 息传输。

DHT系统的优化设计:减少因特网中的广域消息传输

考虑底层物理网络的三种设计:

1、基于拓扑的结点表示符赋值

  • 两个邻近结点所赋给的标识符是靠近的
  • 但不适合Chord系统:到因特网映射繁琐、关联失效导致标识符空当

2、邻近路由(proximity routing)

  • 每个结点维护一个转发请求的可选列表。例如,每个结点有r个后继者
  • 当转发请求时,选择离它最近的后继者,减少广域通信
  • 单个结点失效时,可使用其他结点

3、邻近邻居结点选择(proximity neighbor selection)

  • 优化路由表,选择距离最近的结点为邻居结点
  • 对于Chord,Finger表中的每个表项包含r个后继者时,相当于该方法

2.5 层次方法

将一个定位服务分层组织成域(domain)

  • 每个域拥有相关的目录节点
  • 根节点:最顶层的目录结点

叶子域对应于局域网(LAN)

在这里插入图片描述

定位记录:

  • 叶子域目录结点: < 实 体 I D , 当 前 地 址 > <实体ID,当前地址> <ID>
  • 上层域目录结点: < 实 体 I D , 下 层 目 录 结 点 地 址 > <实体ID,下层目录结点地址> <ID>

根节点:

  • 包含域中所有的实体的定位记录

一个实体E可以拥有n个地址A1,A2

  • 每个地址,保存在一个叶子域上,共有n个叶子域
  • 在n个叶子域的最小共同祖先域上,保留n个子域指针

定位记录举例:具有两个地址的实体E的目录信息

  • D1,D2叶子域
  • M最小公共祖先

在这里插入图片描述

查找操作举例:在层次型定位服务中,查找实体E的位置

  • 局部性原则:从最小的域开始,自底向上查找

在这里插入图片描述

插入操纵举例:自下而上的插入方法

在这里插入图片描述

3.结构化命名管理

简单的、可读的名称。例如:ftp.neu.edu.cn(URL地址)

3.1 名字空间

分布式系统中名字集合的组织形式

例:文件目录系统(目录名,文件名)

一个名字空间可表示为带标号的有向图:

  • 叶子节点:命名实体的信息(地址、状态)
  • 目录结点: < 边 标 号 , 结 点 标 识 符 > <边标号,结点标识符> <>,目录表
  • 根节点:只有出边,没有入边。通常只有一个

在这里插入图片描述

路径名:对应于边的标号序列

  • N:<标号1,标号2,…,标号n>
  • 绝对路径名:从根节点开始
  • 相对路径名:从非根节点开始

路径的表示:/home/steen/mbox

名字的种类:

  • 全局名(global),绝对名,适用于整个系统
  • 局部名(local),相对名,与具体目录有关

名字解析(Resolution)

  • 找到名字所对应实体, 进而可访问关于实体的信息

闭合机制(Closure)

  • 知道如何以及从何处开始名字解析
  • 从名字空间中选择开始名字解析的初始节点
  • 例: 02483683113

命名系统

  • 实现命名和名字解析

3.2链接 & 挂接

(1)链接

别名(alias):同一个实体的其他名字

别名的实现方法:链接(link)

  • 硬链接(hard):存储结点标识。用目录结点标识

在这里插入图片描述

  • 符号链接(symbolic):存储路径别名。用叶子节点表示

在这里插入图片描述

(2)挂接

挂接(mount) : 合并两个不同的名字空间

外地名字空间(foreign name space)

在这里插入图片描述

挂载托(mount point):存储外地节点标识符的本地目录节点

挂载件(mounting point):需安装的外地名字空间的目录节点

(3)挂接方法

分布式系统中挂接的实现

  • 访问协议的名字
  • 服务器的名字
  • 外地名字空间中挂接件的名字

名字的表示

  • 例: URL名, 如ftp://ftp.neu.edu.cn//home/pub2/yuge
  • 访问协议: ftp
  • 服务器: ftp.neu.edu.cn
  • 安装点: home/pub2/yuge

使用专门访问协议, 挂接远程名字空间

  • 例: SUN NFS系统,
  • 协议:nfs ; 服务器:flits.cs.vu.nl; 目录:/home/steen

在这里插入图片描述

例: DEC Global Name Service的结构

  • 增加一个新根节点, 形成新的名字空间
  • 建立映射表(子根节点ID, 新名字)

在这里插入图片描述

3.3 名字空间的实现

名字服务:添加、删除和查找名字

名字服务器:实现名字服务的软件系统

名字空间的分布方式:

  • 区域(zone):水平划分
  • 三层结构:垂直划分

(1)名字空间的分布

名字空间的层次:

  • 全局层(global):根节点,稳定不变
  • 行政层(administrational):目录结点,很少改变
  • 管理层(managerial):底层节点,可能会经常改变

区域(zone):

  • 不相交的子空间
  • 每个区设有一个名字服务器,负责本区的名字服务

DNS名字空间的三层划分

在这里插入图片描述

(2)名字解析的实现

名字解析器(NR):客户端执行名字解析程序

迭代式方法:名字解析器从根名字服务器开始, 逐个与名字服务器交互, 实现名字的解析

递归式方法:名字解析器委托根名字服务器, 由各个名字服务器之间交互, 实现名字的解析

在这里插入图片描述

优化:解析中的缓存作用

举例: 递归式名字解析 < n l , v u , c s , f t p > <nl, vu, cs, ftp> <nl,vu,cs,ftp>

在这里插入图片描述

3.4 DNS:英特网域名系统

DNS(domain name system) :

  • Internet中查找主机
  • 和email服务器地址

DNS名字空间

  • 一个带边标号的有向树
  • 根节点: 无入边的节点, 用dot表示
  • 节点: 入边的标识符数为1, 也可作为该节点的名称
  • 域(domain) :一个子树
  • 域名: 从根节点开始的路径名
  • 区域(zone) : 域的划分, 对应一个名字服务器
  • 资源纪录: 节点包含的内容

资源记录

在这里插入图片描述

4.基于属性的命名管理

4.1 基本概念

基于属性的命名:

  • 一个实体拥有一个相关的属性集
  • 例: 一个人, 名字, Alice
  • 用(属性, 值) 来描述实体

目录服务:

  • 基于属性的命名系统
  • 可使用实体的属性查找实体

资源描述框架(RDF) : 描述资源的统一方法

  • <资源, 属性, 属性值>或<主体, 谓语, 客体>
  • 例: <Person, name, Alice>

4.2 分层实现方法:LDAP

(1)概念

轻量级目录访问协议(LDAP)

  • OSI X.500目录服务
  • 国际电信联盟(ITU) 关于目录服务的建议标准

LDAP目录项

  • 目录项: 由多个记录(属性, 值) 组成。
  • 多值属性:用数组或链表表示

目录信息库(DIB)

  • 所有目录项的集合。
  • 相对区分名(RDN) : 命名属性
  • 每个目录项具有全局唯一的记录名: RDN值序列

(2)LDAP目录项

如: /c=NL/O=Vrije University/OU=Comp.Sc.=nl.vu.cs

在这里插入图片描述

(3)目录信息树(DIT)

用于描述目录项集合的层次结构, 命名图

举例: 局部的目录信息树

在这里插入图片描述

(3)使用Host_Name作为RDN

在这里插入图片描述

(4)LDAP目录服务的实现

目录服务代理(DSA) :管理子DIB的服务器

目录用户代理(DUA) :代表用户访问目录

目录访问协议(DAP) :DSA与DUA之间通信

目录系统协议(DSP) :DSA之间通信

应用: .Net, Novel, Oracle

在这里插入图片描述

(5)LDAP目录服务的扩展功能

例: 搜索main server

Answer=search(“&(C=NL)(O=Vrije University)(Ou= * ) (CN=Main server)”)

LDAP森林

  • 允许多个目录树共存并相互链接
  • 全局索引服务器

LDAP分层结构

  • 根节点采用DNS命名系统管理

UDDI:

  • Web 服务中的目录服务

4.3 非集中式实现方法

猜你喜欢

转载自blog.csdn.net/wdnshadow/article/details/128287347