资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cnUUIDUUID 简介简介_ _光环大数据培训光环大数据培训光环大数据培训大数据培训机构了解到,自从两台甚至更多计算机可以通过网络交换信息那天起,它们就需要一种能够体现唯一性的“身份” 。第一个符合目前我们所知这种定义的“网络” ,是 1870 年代建立的全球首个电话交换网。在此之前,电话线路完全是一种点对点链路。尽管在当时这有着划时代的意义,但这种网络很昂贵,不灵活,也不可靠。甚至导致各大主要城市街头形成了电线交织而成的“蜘蛛网” 。当时哪怕电报也只能被政府和企业用于传递重要信息,电话就更是一种奢侈品了。考虑到电报的速度,专门架设昂贵的电线来更快速的“聊天” ,似乎是一种很夸张的做法。不过随后的一个重要创新:可创建交换电路的电话总机,让电话变得更实用。此时电话才真正深入寻常百姓家。而电话总机也为电话网络引入了首个具备唯一性的身份:电话号码。几十年后,计算机网络出现了。突然之间,身份的粒度有了数量级的提升。当时,通过电话线路传输数据是一种短暂执行的操作,网络只起到管道作用。现在,按需存储和获取数据的做法已变得极为普遍,整个世界已淹没在数量爆发式增长的数据海洋中。在这些新能力影响下,网络身份对应的主体已由光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn传统计算机实体变为组成数据的逻辑片段。这样的网络需要通过某种具备唯一性的方式对数据片段寻址,电话网络时代那种需要集中控制的系统已无法满足需求。从数学的角度来看,这种问题是不可避免的,毕竟网络存储和检索数据的能力以及数据的规模都在线性增长着。这样的规模在一定程度上还产生了些许混乱:各种故障和暂存的计算机也已经从牦牛剪毛(译注:牦牛剪毛,Yak shaving,是指为了间接实现一个目标而做的次要,并且与目标无关的工作)问题变得稀疏平常。数据不再只安于一地,而是会在整个网络内自由移动。计算领域迎来网络化时代很快到了 1980 年代,当时使用计算机共享数据实际上意味着要共享整个实体计算机。各大机构会使用微型计算机,以及连接了几百上千台哑终端的高性能大型机交换信息。换句话说,当时数据本身与计算工作是共存的。虽然个人计算机提供了革命性的计算能力,但由于缺乏网络功能,当时的个人计算机实际上只是一种奢侈的计算器。成立于 1980 年的 Apollo Computer,曾是步入当时新兴工作站市场的首批公司之一。工作站才是真正意义上的第一种可联网计算机,使用“工作站”这个词描述这种计算机听起来似乎有点滑稽,但别忘了,目前我们习以为常的各种网络技术在当时还处于萌芽状态。与大型机相比,数据和计算功能分散在很光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn多相互连接的计算机中,而此时“分布式计算”这个词也开始进入主流视野。与同时代的 Sun Microsystems 类似,Apollo 的产品也是全栈的。一切都需要从零开始来开发,因为当时软硬件在设计方面与他们构想的用例还有些差异。网络的异步性以及这些任务的本质需求需要功能更丰富的计算机。多任务、安全控制、网络,以及海量存储等特征对当时的个人计算机来说要么过于昂贵,要么不够现实。不过在工作站的未来构想中,这些特征已成为了“标配” 。尽管工作站市场上的各类技术经历了让人印象深刻的爆发式增长,但当时的所有供应商都面临一个共同障碍:缺乏精通网络技术的开发者。为了给自己价格昂贵的工作站塑造一个切实可行的商业案例,他们需要一种编程环境。借此,开发者才能通过某种方式,轻松构建能帮助各家产品将网络功能完全发挥出来的应用程序。对此,Apollo 提出了网络计算系统(NCS)的概念。NCS 借鉴了面向对象编程的某些思路,围绕远程过程调用(RPC)的概念构建。虽然这种方式目前已面临淘汰,但在当时至少满足了 Apollo 的需求:任何开发者都可以了解如何调用某一函数,并以面向对象的编程范式为主要特色。在 Network World 杂志 1989 年发布的一篇有关 RPC 的文章中,Burlington Coat Factory 的一位 MIS 总监提出了自己的观点:“训练有素的程序员只需要一天左右时间就能学会使用 RPC 构建分布式应用程序” 。同样是那一年,Apollo作价 4.76 亿美元卖给了 HP,考虑到通货膨胀,这一价格约等于今天的 10 亿美光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn元。NCS 术语中所谓的“物件” (对象、接口、操作方法等)也就是“实体” ,必须能在网络化的环境中通过具备唯一性的身份进行寻址。在标准的冯诺伊曼体系结构中这一点并不重要:内存或大容量存储设备的地址即可承担这一用途。但在分布式计算模型中,由于多台计算机可以分别独立运作,这就很重要了。考虑到具体用例的实际规模,跨越网络进行协调的方式并不现实,因为速度太慢,并且非常容易出错。NCS 引入了 UID(Universal IDentifier,全局标识符)的概念,并使用UID 作为实体身份主要且唯一的标识符。UID 是一种 64 位数值,结合单调(Monotonic)时钟与工作站硬件嵌入的永久性唯一主机 ID 生成。通过这种方式,每台主机每秒钟可以完成数千次标识符生成操作,并在所有时间内确保全局唯一性,在规模方面也不存在瓶颈。这种机制唯一需要进行的协调工作可以在 Apollo 的工厂中进行,只需为每台计算机嵌入一个永久 ID 即可。第一个 UUID当 Apollo 开始通过网络计算架构(NCA)践行自己标准化的 NCS 构想时,很快发现,只使用现有的 UID 还不够。Apollo 希望所有工作站供应商通过 NCA实现标准化,都在自己的工作站中嵌入主机 ID,而具体位长可由供应商自行决定。Apollo 使用了 20 位长度,很适合计算机总数约为 100 万台的情况。以今光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cn天的视角来看,这样的规模实在是很可笑,但在当时,Apollo 需要在整个体量小很多的市场中卖出总价值超过 100 亿美元的硬件才能达成这样的规模。NCA 引入了 UUID 的概念,UUID 源自 UID 的设计基础,但将地址空间扩展到128 位,这样就可以有更多供应商分别打造自己的产品。UUID 就此诞生。这个概念是如此有用,以至于在 NCA 成为历史,RPC 逐渐退流行的今天,UUID 依然维持着活力,并最终被 ISO、IETF,以及 ITU 确定为标准。对 UUID 有所了解的读者会发现,这个概念与目前广泛使用的第 4 版 UUID有些许差异。NCA UUID 包含一个 48 位时间戳,16 位预留位,一个 8 位网络地址族指示符和一个 56 位主机 ID。这些结合在一起,其实与目前成为 IETF 标准的第 1 版 UUID 概念极为类似。这些历史事件不禁让我好奇 UUID 的具体实现,并有幸在网上找到了一些Apollo NCS 源代码。如果你和我有着类似想法,不妨一起读读这些几十年前写的源代码。我在这些代码中发现的第一个奇怪之处是:这种标识也像变量和函数名那样使用了美元符号($) 。void uuid_$gen(uuid)uuid_$t *uuid;#ifdef apollo光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cnstd_$call void uid_$gen();struct uid_t uid;uid_$gen(uid);uuid_$from_uid(uid_$t *) 原来 NCS 使用了一种名为“Domain C”的语言,这种语言由 Apollo 开发,包含在他们的“Domain/OS”操作系统中。在 Bitsavers 的帮助下,我找到了一份 1988 年发布的 PDF 版参考手册。Domain C 通过多种方式对 ANSI C 进行了扩展,最重要的是可支持在任何标识符的首个字符之后使用$。在当时,美元符号主要被一些不怎么时髦的编程语言充当一种变量语法,经济领域用它代表货币单位,或者用它形容那些自我膨胀的音乐家。为了理解这个符号在现已灭绝的 Apollo Computer 世界中的实际用途,还需要继续深入挖掘更多代码和文档。在进一步展示我的发现之前,首先要说说自己发现的一个虎头蛇尾的结论:虽然并没有明说,但这似乎只是一种写代码的习惯。_$之前的任何内容实际上代表某个特定模块,_$t 代表“默认类型” ,例如上文出现的 uuid_$t。此外借此也可以很方便地判断哪些标识符隶属于符合 Apollo 编程风格的库。仅仅为了适应某种具体的编码风格就对 C 进行扩展,Apollo 的这种做法还是让人感觉有些困惑的。但我不同意。光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/hadoop.aura.cn 光环大数据光环大数据 http:/hadoop.aura.cnNCA UUID 最终成为了标准化后第 1 版 UUID 的基础。需要重申一点:其中包含了一个高精度时间戳以及基于硬件的唯一主机标识符。毫无疑问,无法仅通过系统时钟以可靠的方式生成具备唯一性的序列号,因为时钟有可能不准确,甚至可能导致生成重复的时间戳。为此 Apollo 使用了一个全局文件(位于/tmp/last_uuid)对不同进程进行协调。/* C H E C K _ U U I D* On a system wide basis, check to see if the passed UUID is the* same or older than the previously generated one. If it is, make sure* it becomes a little newer. Write the UUID back to the “last UUID“* storage in any case. In the case of systems using a file as* the storage, fall back to “per process“ checking in the event of* the inability to safely access the storage.*/该文件可被任何用户全局写入,虽然并非特别安全,但 Apollo 向最终用户销售的工作站有些也被用在某些高可信网络中,因此也可以将其理解为一种合理的决策。这种
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号