Distributed System: Naming Service (命名服务)

About Naming Service:


Name Space (命名空间):在一个特定空间内,某一资源(文件、网页、音乐、图像等)具有全局唯一的标识符URI(名字)。例如,目前的互联网(Internet)就是最大的一个Namespace. 


命名的分类:Flat or Hierarchy. 前面的可以用类似于:Hash Code或者C++的某个命名空间内的变量名、类名来举例,命名中不存在目录结构层次信息。后者可以用Unix/ Linux的文件系统来举例,或者Web网页(分布式系统一个最经典的应用)的URL来举例。www.example.org/pageIdentication. 就是一个Hierarchy的例子去获取资源(网页html文件)的例子。


Naming Service v.s. Directory Service:


命名服务可以理解类似于HashTable的<K,V> pair的方式去查找调用资源的。Key就是名字,Value则是资源。命名服务是利用key去get到value的。那么目录服务则是通过描述这项资源,来得到对应的名字来调用这项服务。


通常命名服务成为白页服务而目录服务成为黄页服务。利用用户需要使用电话号码:020-5559980,但是必须通过这个电话的用户名(名字)才能使用。于是他通过目录服务寻找到这个电话的用户名是Joe,接着便用命名服务调用对应的资源。


Youtube Naming Service Example (Flat): 


Youtube对于自己的系统内的视频使用Flat命名的方式命名资源。如果仔细留意Youtube视频的地址,可以发现:https://www.youtube.com/watch?v=Dkj5_7FeY5A 后面的v = "xxx". 其中"xxx"是这个视频的HashCode,是全局唯一的哈希码。所有的视频的http地址前部都是都是一致的:“https://www.youtube.com/watch?v=”。 


DNS Example (Hierarchy): 


而我们目前常使用的http网址则是一个经典的层次式命名例子。下面这幅图很好地解释了这样的层次式命名的好处:





(下面描述部分摘自:https://www.zhihu.com/question/34873227)


昨天,Chrome先生的老板给了他一个URL地址“joe.heinz.cmu.edu”,并对他说:“去吧,Chrome!”


首先,Chrome会检查URL是否合法,恩,如果是合法的话,Chrome就要想办法找出这个URL对应的IP地址了。


1)查找本地的host文件


一般的浏览器记录之前访问过的URL的IP地址,以便之后重复访问时加快转换速度。如果在这里找不到,转到第二步。


2)访问Local Name Server


把URL发送给Local Name Server,看看Local Name Server是否知道,如果Local Name Server也不知道的话,剩下的工作便是Local Name Server去完成的了。总之Local Name Server负责帮Chrome需要的具体的IP地址找到。那怎么找呢?


这时候,Hierarchy的优点就体现出来了。它能使其它的Name Server能“各司其职”。


3)Local Name Server访问Root Name Server


Root Name Server,顾名思义,记录Root Name,也就是最高级的域名。高级的域名越是靠后。于是Root Name Server找到了cmu.edu对应的域名服务器的IP地址。但它肯定不可能知道joe.heinz这个低级一点的域名的具体IP的,所以Local Name Server还要去查询cmu.edu的域名服务器。


4)Local Name Server访问对应的域名服务器直到直到整个URL对应的IP地址,再返回给Chrome. 


正是由于层次的地址结构,使得每一个域名服务器不必存过多的映射数据。使得统一的、最大的命名空间(www,万维网)成为了可能。


常见的命名/ 目录服务: 


LDAP (Directory),File System (Naming), DNS (Naming)等等... 我们最常见的是File System和DNS.


什么是JDNI(Java Naming and Directory Interface): 


这是Java对各种命名/ 目录服务的抽象接口。用Java的代码使用各种命名/ 目录服务的时候,可以统一用这个接口的方法(operations)去调用各个服务提供商所提供的实现代码。


常见的operations有:











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值