分布式系统的特征

2023-11-19

《分布式系统概念与设计》读书笔记(第一章)

第一章:分布式系统的特征

[1] [0] 简介

分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。该定义引出了分布式系统的下列重要特征:组建的并发性、缺乏全局时钟、组件故障的独立性。
我们看一下现代分布式系统的几个例子:Web搜索、多人在线游戏和金融交易系统,也考察今天推动分布式系统发展的关键趋势:现代网络的泛在特性,移动和无处不在的计算的出现,分布式多媒体系统不断增加的重要性,以及把分布式系统看作一种实用系统的趋势。接着本章强调资源共享是构造媒体系统的主要动机。资源可以被服务器管理,由客户访问,或者它们被封装成对象,由其他客户对象访问。
构造分布式系统的挑战是处理器组件的异构性、开放性(允许增加或替换组件)、安全性、可伸展性(用户的负载或数量增加时能正常运行的能力)、故障处理、组建的并发性、透明性和提供服务质量的问题。最后以Web作为一个大规模分布式系统的例子进行讨论,并介绍它的主要特征。

[1] [1] 简介

我们把分布式系统定义成一个其硬件或软件组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的系统

我们定义的分布式系统具有如下的具体特征

  • 并发:在一个计算机网络中,执行并发程序是常见的行为。用户可以在各自的计算机上工作,在必要时共享诸如Web页面或文件之类的资源。系统处理共享资源的能力会随着网络资源(例如,计算机)的增加而提高。
  • 缺乏全局时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。密切的协作通常取决于对程序动作发生的时间的共识。但是,事实证明,网络上的计算机与时钟同步所达到的准确性是有限的,即没有一个正确时间的全局概念。原因也很简单,因为基于网络的通信天然存在时延,而这个时延可能会由于网络状态等条件而不断发生变化,这么一来,就会导致各项动作没办法按照原定的时间来工作,反而会出现一些不好的影响。
  • 故障独立性:所有的计算机系统都可能会出现故障,一般由系统设计者负责为可能的故障设计结果。分布式系统可能会以新的方式出现故障。网络故障导致网上互联的计算机的隔离,但这并不意味着它们停止运行,事实上,计算机上的程序不能检测到网络是出现故障还是网络运行得比通常慢。类似的,计算机的故障或系统中程序得异常终止(崩溃),并不能让与它通信的其他组件了解。系统的每个组件会单独地出现故障,而其他组件还在运行。

构造和使用分布式系统的主要动力来源于对共享资源的期望。
“资源”一次是抽象的,但它很好地描述了能在连网计算机系统中共享的事务的范围。它涉及的范围从硬件组件(如硬盘、打印机)到软件定义的实体(如文件、数据库和所有的数据对象)。它包括来自数字摄像机的视频流和移动电话呼叫所表示的音频连接。

[1] [2] 分布式系统的例子

领域 分布式系统的例子
金融和商业 电子商务(亚马逊、淘宝)、底层支付技术(PayPal)、在线银行、用于金融市场的复杂信息分发系统 等
信息社会 Web搜索引擎(Google)、YouTube、Facebook等
创意产业和娱乐 YouTube等
医疗保健 远程医疗 等
教育 网课系统等
交通和物流 GPS、Google Earth等
科学 网格,作为eScience的基础技术,以使用复杂计算机网络对(经常是超大数量的)科学数据的存储、分析和处理提供技术等
环境管理 使用(网络化)传感器技术等

[1] [2] [1] Web搜索

Web搜索引擎的任务是为万维网的所有内容建立索引,其中包含各种信息类型,例如Web页面、多媒体资源和扫描后的书。考虑到大多数搜索引擎是分析整个Web内容,并在这个巨大的数据库上完成复杂的处理,那么这个任务自身就是对分布式系统涉及的一个巨大挑战。

Google,Web搜索技术上的市场领导者,在支持用于搜索(与其他Google应用和服务,如Google Earth)的复杂的分布式系统基础设施上做出了巨大努力。该设施最突出的两点包括

  • 一个底层物理设施:它由超大数目的位于全世界多个数据中心的连网计算机组成。
  • 一个分布式文件系统:支持超大文件,并根据搜索和其他Google应用的使用方式(特别是在文件中以快速而持久的速度读取)进行了深度优化
  • 一个相关的结构化分布式存储系统:它提供了对超大数据集的快速访问
  • 一个锁服务:它提供了诸如分布式加锁和协定等分布式系统功能。
  • 一个编程模式:它支持对底层物理基础设施上的超大并行和分布式计算的管理。

[1] [2] [2] 大型多人在线游戏

大型多人在线游戏(Massively Multiplayer Online Game,MMOG)提供了一种身临其境的体验,超大数目用户通过互联网在一一个持久的虚拟世界中交互。这类游戏的主要例子是Sony的EverQuest Ⅱ和芬兰公司CCP Games公司的EVE Online。

MMOG工程体现了分布式系统技术面临的巨大挑战,尤其是它对快速响应时间的需求。其他挑战包括事件实时传播给多个玩家和维护对共享世界的一个一致的视图。
针对大型多人在线游戏,提出了许多解决方案

  • 可能优点出乎意料,最大的在线游戏EVE Online,采用了CS体系结构,在一个集中式服务器上维护了游戏世界状态的单个拷贝,供运行在玩家终端或其他设备上的客户程序访问。为了支持大量客户,服务器自身是一个复杂的实体,拥有上百个计算机节点组成的集群结构。从虚拟世界的管理看,集中式体系结构有极大的益处,单个拷贝也简化了一致性问题。接着,目标是用过优化网络协议和快速响应到达事件来确保快速的响应。为了支持这点,对负载进行分区,把单个“星系”分配给集群中指定的计算机,这样,高负载星系会拥有自己的专用计算机,而其他星系则共享一台计算机。通过跟踪王家在i星系之间的移动,到达事件会被导向集群中正确的计算机上。
  • 其他MMOG采用更多的分布式体系结构,宇宙被划分到大量(可能是超多)服务器上,这些服务器可能地理上分散部署。接着,用户基于当前的使用模式和到服务器的网络延迟(基于地理最近)被动态地分配到一个特定的服务器。这种体系结构风格被EverQuest采用,它通过增加新的服务器,可自然地扩展。
  • 大多数商业系统采用上述两个模型中的一个,但研究者现在也在寻找更极端的体系结构,即不基于客户-服务器原理而是基于对等技术采用完全分散的方法。采用对等技术,意味着每个参与者贡献(存储和处理)资源来容纳游戏。

[1] [2] [3] 金融交易

金融行业以其需求一直处在分布式系统技术的最前沿,特别是在实时访问大范围的信息源方面(例如,当前股票价格和趋势,经济和政治发展)。金融行业采用自动监控和交易应用。

此类系统的重点是对感兴趣数据项的通信和处理。感兴趣数据项在分布式系统中称为事件,在金融行业中的需求是可靠和及时地传递事件给可能是大量对此信息有兴趣地客户。这要求底层地体系结构具有与前述风格(例如CS)完全不同的风格,这样的系统通常采用分布式基于事件的系统

下图说明了一个典型的金融交易的例子。它显示了一系列事件进入一个指定的金融机构。这样的事件输入具有下列特征。

首先,事件源通常具有多种格式,例如路透社的市场数据事件和FIX事件(符合金融信息交换协议特定格式的事件),事件源还来自不同的事件技术,这说明了在大多数分布式系统中回到异构性问题。图中使用了适配器,它把异构性格式转换成一个公共的内部格式。

其次交易系统必须处理各种各样的事件流,这些事件流高速到达,经常需要实时处理来检测表示交易机会的模式。这在过去曾今是手工处理的,但在竞争压力下变成自动处理,这就是所谓的复杂事件处理(Complex Event Processing,CEP),它提供了一种方法来将一起发生的事件组成逻辑的、时序的或空间的模式。
金融交易系统例子

[1] [3] 分布式系统的趋势

分布式系统正在经历巨大的变化,这可追溯到一系列有影响力的趋势:

  • 出现了泛在联网技术
  • 出现了无处不在计算,它伴随着分布式系统中支持用户移动性的意愿
  • 对多媒体设备的需求
  • 把分布式系统作为一个设施

[1] [3] [1] 泛在联网和现代互联网

互联网上的计算机程序通过传递消息进行交互,采用了一种公共的通信手段。互联网通信机制(互联网协议)的设计和构造是一项重大的技术成果,它使得一个在某处运行的程序能给另一个地方的程序发送消息。
互联网是一个超大的分布式系统。互联网和其支持得服务的实现,使得必须开发实用解决方案来解决分布式系统中的许多问题。

[1] [3] [2] 移动和无处不在计算

设备小型化和无线网络方面的技术进步已经逐渐使得小型和便携式计算设备集成到分布式系统中。这些设备包括:

  • 笔记本电脑
  • 手持设备(包括移动电话、智能电话、GPS设备、摄像机等)
  • 可穿戴设备
  • 嵌入式家电

这些设备大多具有可便携性,再加上它们可以在不同的地方方便地连接到网络的能力,使得移动计算成为可能。移动计算是指用户在移动或访问某个非常规环境时执行计算任务的性能。

无处不在计算是指对用户的的物理环境(包括家庭、办公室和其他自然环境)中存在的多个小型、便宜的计算设备的利用。
移动和无处不在计算是一个热门的研究领域。

[1] [3] [3] 分布式多媒体系统

另一个重要趋势是在分布式系统中支持多媒体服务的需求。多媒体支持可以定义为以集成的方式支持多种媒体类型的能力。人们可以期望分布式多媒体系统支持离散型媒体(如图片或正文消息)的存储、传输和展示。分布式多媒体系统应该能对连续类型媒体(如音频和视频)完成相同的功能,即它应该能存储和定位音频或视频文件,并通过网络传输它们(可能需要以实时的方式,因为流来自摄像机),从而能给用户展示多种媒体类型,以及在一组用户中共享多种类型的媒体。

连续媒体的重要特点时它们包括一个时间维度,媒体类型的完整性从根本上依赖于在媒体类型的元素之间保持实时关系。

分布式多媒体计算的好处时相当大的,因为能在桌面环境提供大量的新(多媒体)服务和应用,包括访问实况或预先录下的电视广播、访问提供视屏点播服务的电影资料库、访问音乐资料库、提供音频和视频会议设施、提供集成的电话功能。

网络播放(webcasting) 是分布式多媒体技术的应用。网络播放是在互联网上广播连续媒体(典型是音频和视频)的能力,现在常见以这种方式广播主要的体育或音乐事件。

分布式多媒体应用(例如网络播放)对底层的分布式基础设施提出了大量的要求,包括

  • 提供对一系列(可扩展的)编码和加密格式的支持,例如MPEG系列标准(包括如流行的MP3标准,也称MPEG-1音频第三层)和HDTV
  • 提供一系列机制来保障所需的服务质量能够得到满足
  • 提供相关的资源管理策略,包括合适的调度策略,来支持所需的服务质量
  • 提供适配策略类处理在开放系统中不可避免的场景,即服务质量不能得到满足或维持

[1] [3] [4] 把分布式计算作为一个公共设施

随着分布式下基础设施的不断成熟,不少公司在推广这样的观点:把分布式资源看作一个商品或公共设施,把分布式资源和其他公共设施进行类比。采用这种模型,资源通过合适的服务提供者提供,能被最终用户有效地租赁而不是拥有。这种模型可以应用到物理资源和更多的逻辑服务上。

  • 联网的计算机可用诸如存储和处理这样的物理资源,从而无需自己拥有这样的资源。从一个维度来看,用户可以为其文件存储需求和文件备份需求选择一个远程存储设施。类似的,利用这个方法,用户能租到一个或多个计算结点,从而满足他们的基本计算需求或者完成分布式计算。从另一个维度来看,用户现在能用像Amazon和Google之类的公司提供的服务访问复杂的数据中心或计算基础设施。操作系统虚拟化时该方法关键的使能技术,它意味着实际上可以通过一个虚拟的而不是物理的结点为用户提供服务。这从资源管理角度给服务提供者提供了更大的灵活性。
  • 用这种方法,软件服务也能跨全球互联网使用。

关于计算作为公共设施,术语云计算(cloud computi)被用来刻画其前景。云被定义成一组基于互联网的应用,并且足以满足大多数用户需求的存储和计算服务的集合,这使得用户能大部分或全部免于本地数据存储和应用软件的使用。该术语也推广“把每个事物看成一个服务”的观点。

通常,云实现在集群计算机上,从而提供每个服务所要求的必须的伸缩性和性能。**集群计算机(cluster computer)**是互联的计算机集合,它们密切协作提供单一的、集成的高性能计算能力。

关于集群与分布式的区别可见:单机、集群和分布式的区别

集群服务器的总目的时提供一系列的云服务,包括高性能计算能力、大容量存储能力(例如通过数据中心)、丰富的应用服务(如Web搜索——Google依赖大容量集群计算机体系结构来实现其搜索引擎和其他服务)

网格计算也能被看作时一种云计算。但网格计算通常被看作时云计算这种更通用模式的先驱,它只是偏重于支持科学计算。

[1] [4] 关注资源共享

从硬件资源来看,大家共享设备可以减少花费,但对用户具用更大意义的是共享与用户应用、日常工作和社会活动有关的更高层的资源。例如用户惯性以共享数据库或Web页面集方式出现的共享数据,而不是实现上述服务的硬盘和处理器。类似的,用户关心诸如搜索引擎或货币换算器之类的共享资源,而不关心提供这些服务的服务器。

实际上,资源共享的模式随着其工作范围和与用户工作的密切程度的不同而不同。一种极端是,Web上的搜索引擎是给全世界的用户提供工具,而用户之间并不需要直接接触;另一种极端是,在计算机支持协调工作(Computer Supported Working。CSCW) 中,若干直接进行合作的用户在一个小型封闭的小组中共享诸如文档之类的资源。用户在地理上的分布以及用户之间进行共享的模式决定了系统必须提供协调用户动作的机制。

我们使用属于服务表示计算机系统中管理相关资源并提供功能给用户和应用的一个单独的部分。

服务将资源访问限制为一组定义良好的操作,这在某种程度上属于标准的软件工程实践。同时它也反映出分布式系统的物理组织。分布式相同的资源是物理地封装在计算机内,其他计算机只能通过通信访问。为了实现有效的共享,每个资源必须由一个程序管理,这个程序提供通信接口使得对资源进行可靠和一致的访问和更新。

[1] [5] 挑战

随着分布式系统的应用范围和规模扩大,可能会遇到相同的和其他的挑战。

[1] [5] [1] 异构性

互联网使得用户能在大量异构计算机和网络上访问服务和运行应用程序。 下面这些均存在异构性(即存在多样性和差别):

  • 网络
  • 计算机硬件
  • 操作系统
  • 编程语言
  • 由不同开发者完成的软件实现

中间件:指一个软件层,它提供了一个编程抽象,同时屏蔽了底层网络、硬件、操作系统和编程语言的异构性。有些中间件。如Java远程方法调用(Remote Method Invocation,RMI),仅支持一种编程语言。大多数中间件在互联网协议上实现,由这些协议屏蔽了底层网路的差异,但所有的中间件要解决操作系统和硬件的不同。

处理解决异构性问题之外,中间件为服务器和分布式应用的程序员提供了一致的计算模型。这些模型包括远程方法调用、远程时间通知、远程SQL访问和分布式事务处理。

异构性和移动代码中移动代码是指能从一台计算机发送到另一台计算机发送到另一台计算机,并在目的计算机上执行的代码,Java applet是一个例子。适合在一种计算机上运行的代码未必适合在另一种计算机上运行,因为可执行程序通常依赖于计算机的指令集和操作系统。

虚拟机方法提供了一种使代码可在任何计算机上运行的方法:某种语言的编译器生成一台虚拟机的代码而不是某种硬件代码,例如,Java编译器生成Java虚拟机的代码,虚拟机通过解释的方法来执行它。为了使Java程序嫩个运行,要在每种计算机上实现一次Java虚拟机。

今天,最常使用的移动代码是将一些Web页面的JavaScript程序装载到客户端浏览器中。

[1] [5] [2] 开放性

计算机系统的开放性是决定系统能否以不同的方式被扩展和重新实现的特征。分布式系统的开放性主要取决于新的资源共享服务能被增加和供多种客户程序使用的程度。

除非软件开发者能获得系统组件的关键软件接口的规范和文档,否则无法实现开放性。一句话发布关键接口。这个过程类似接口的标准化,但它进程避开官方的标准化过程,官方的标准化过程非常繁琐且进度缓慢。

然而发布接口仅是分布式系统增加和扩展服务的起点。设计者所面临的挑战是解决由不同人构造的由许多组件组成的分布式系统的复杂性。

互联网协议的设计者引入了一系列称为“征求意见文档”(Requests For Comments,RFC)的文档,每个文档有一个编号。

按这种方式支持资源共享的系统之所以被称为开放的分布式系统,主要是强调它们是可扩展的。它们通过在网络中增加计算机实现在硬件层次上的扩展,通过引入新的服务、重新实现旧的服务实现在软件层次上的扩展,最终使得应用程序能够共享资源。开放系统常被提到的好处是它们与销售商无关。

开放的分布式系统的特征总结如下:

  • 发布系统的关键接口是开放系统的特征
  • 开放的分布式系统是基于一致的通信机制和发布接口访问共享资源的。
  • 开放的分布式系统能用不同销售商提供的异构硬件和软件构造,但如果想让系统正确工作,就要仔细测试和验证每个组件与发布的标准之间的一致性。

[1] [5] [3] 安全性

分布式系统中维护和使用的众多信息资源对用户具有很高的内在价值,因此它们的安全相当重要。信息资源的安全性包括三个部分:机密性(防止泄露给未授权的个人)、完整性(防止被改变或被破坏)、可用性(防止对访问资源的手段的干扰)。

安全性不止涉及对消息的内容保密,还涉及确切知道用户或代表用户发送消息的其他代理的身份。利用机密技术可满足这两个挑战。

然而,下面两个安全方面所面临的挑战目前还没有完美解决:

  • 拒绝服务攻击:另一个安全问题是处于某些用户可能希望中断服务。可用下面的方法实现这个目的:用大量无意义的请求攻击服务器,使得重要的用户不能使用它。这称为拒绝服务攻击。现在通过在世间发生后抓获和惩罚犯罪者来解决这种攻击,但这不是解决这种问题的通用方法。
  • 移动代码的安全性:移动代码需要小心处理。因为有些程序表面上可能一副有意思的画,但实际上却在访问本地资源,或者可能是拒绝服务攻击的一部分。

[1] [5] [4] 可伸缩性

分布式系统可在不同的规模(从小型企业内部网到互联网)下有效且高效地运转。如果资源数量和用户数量激增,系统仍能保持其有效性,那么该系统就被称为可伸缩性。

可伸缩性分布式系统的设计面临下列挑战:

  • 控制物理资源的开销
  • 控制性能损耗
  • 防止软件资源用尽:例如IP地址
  • 避免性能瓶颈:通常,算法应该是分散型,以避免性能瓶颈。例如域名系统的前身,那时名字表被保存在一个主文件中,可被任何需要它的计算机下载。当互联网中只有几百个计算机时,这是可以的,但这不久就变成了一个严重的性能和管理瓶颈。现在,域名系统将名字表分区,分散到互联网中的服务器上,并采用本地管理的方式,从而解决了这个瓶颈。

[1] [5] [5] 故障处理

计算机系统有时会出现故障。当硬件或软件发生故障时,程序可能会产生不正确的结果或者在它们完成应该进行的计算之前就停止了。

分布式系统的故障时部分的,也就是说,有些组件出了故障而有些组件运行正常。因此故障的处理相当困难。接下来我们讨论一下处理故障的技术:

  • 检测故障:有些故障能被检测到。例如,校验和可用于检测消息或文件中出现的错误。而有些故障时很难甚至不能被检测到的。面临的挑战是如何在有故障出现的情况下进行管理,这些故障不能被检测到但可以被猜到。
  • 掩盖故障:有些被检测到的故障能被隐藏起来或降低她的严重程度。下面是隐藏故障的两个例子 :
    1)消息在不能到达时重传。
    2)将文件数据写入两个磁盘,如果一个磁盘损坏,那么另一个磁盘的数据仍是正确的。
    降低故障严重程度的例子是丢掉被损坏的消息。这样,该消息可以被重传。读者可能意识到,隐藏故障的技术不能保证在最坏情况下有效。例如,第二个磁盘上的数据可能也坏了,或消息无论怎样重传都不能在合理的时间到达。
  • 容错:互联网上的大多服务确实可能发生故障,试图检测并隐藏在这样大的网络、这么多的组件中发生的所有故障是不太实际的。服务的客户能被设计成容错的,这通常也涉及用户要容忍错误。例如,当Web浏览器不能与Web服务器连接时,它不会让用户一直等待它与服务器建立连接,而是通知用户这个问题,让用户自由选择是否尝试稍后再连接。
  • 故障恢复:恢复涉及软件的设计,以便在服务器崩溃后,永久数据的状态能被恢复或“回滚”。通常再出现错误时,程序完成的计算是不完整的,被更新的永久数据(文件和其他保存在永久存储介质中的资料)可能处在不一致的状态。
  • 冗余:利用冗余组件,服务可以实现容错。考虑下面的例子:
    1)在互联网的任意两个路由器之间,至少存在两个不同的路由。
    2)在域名系统中,每个名字表至少被复制到两个不同的服务器上。
    3)数据库可以被复制到几个服务器上,以保证在任何一个服务器上有错误时,客户就被重定向到剩下的服务器上。

[1] [5] [6] 并发性

在分布式系统中,服务和应用均提供可被客户共享的资源。因此,可能有几个客户同时试图访问一个共享资源的情况。

管理共享资源的进程可以一次接受一个客户请求,但这种方法限制了吞吐量。因此,服务和应用通常被允许并发地处理多个客户请求。

在分布式系统中,代表共享资源的任何一个对象必须负责确保它在并发环境中操作正确,这不仅适用于服务器,也适用于服务器,也适用于应用中的对象。因此,持有未打算用于分布式系统的对象实现的程序员必须做一些事情,使得对象在并发环境中能安全使用。

为了使对象在并发环境中能安全使用,它的操作必须在数据一致的基础上同步。者可通过标准的技术(如大多数操作系统所采用的信号量)来实现。

[1] [5] [7] 透明性

透明性被定义成对用户和应用程序员屏蔽分布式系统的组件的分离性,使系统被认为是一个整体,而不是独立组件的集合。

ANSA参考手册和国际化标准化组织的开放分布式处理的参考模型(RM-ODP)识别出八种透明性(并用范围更广的移动透明性替换迁移透明性):

  • 访问透明性:用相同的操作访问本地资源和远程资源。
  • 位置透明性:不需要知道资源的物理或网络位置就能访问它们
  • 并发透明性:几个进程能并发地使用共享资源进行操作且互不干扰
  • 复制透明性:使用资源的多个实例提升可靠性和性能,而用户和应用程序员无需知道副本的相关信息
  • 故障透明性:屏蔽错误,不论是硬件组件故障还是软件组件故障,用户和应用程序员能够完成他们的任务
  • 移动透明性:资源和客户能够在系统内移动而不会影响用户或程序的操作
  • 性能透明性:当负载发生变化时,系统能被重新配置以提高性能
  • 伸缩透明性:系统和应用能够进行扩展而不改变系统结构或应用算法

最重要的两个透明性是访问透明性和位置透明性,它们的有无对分布式资源的利用有很大影响,又是它们被统一称为网络透明性

[1] [5] [8] 服务质量

一旦提供给用户他们要求的功能,例如在一个分布式系统中的文件服务,我们就能继续探寻所提供的服务质量。系统的主要的非功能特性,即影响客户和用户体验的服务质量是可靠性、安全性和性能。满足变化的系统配置和资源可用性的适用性已被公认为服务质量的一个重要方面。

可靠性和安全性问题再设计大多是计算机系统时时关键的。服务质量的性能源于及时性和计算吞吐量,但它已被重新定义成满足及时性保证的能力。

一些应用,包括多媒体应用,处理时间关键性数据,这些数据是要求以固定速度处理或从一个进程传送到另一个进程的数据流。例如,一个电影服务可能由一个客户程序组成,该程序从一个视频服务器中检索电影并把它呈现到用户的屏幕上。该视频的连续帧在指定时间限制内显示给用户,才算是一个满意的结果。

[1] [6] 实例研究:万维网

在1989年3月,互联网还只属于少数人。在这一互联网的黎明期,HTTP诞生了。

蒂姆·伯纳斯-李博士提出了一种让远隔两地的研究者们共享知识的设想,这一最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的WWW(World Wide Web,万维网)。

超文本(Hypertext):在互联网早期的时候,我们输入的信息只能保存在本地,无法和其他电脑交互。我们保存的信息通常都以文本即简单字符的形式存在,文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展,两台电脑之间能够进行数据的传输后,人们不再满足只能在两台电脑之间传输文字,还想要传输图片、音频、视频,甚至是超链接,那么文本的语义就被扩大了,这种语义扩大后的文本就被称为超文本(HyperText)。

而为了实现这一理念,现在已经提出了3项WWW构建技术,分别是:

  • 把SGML(Standard Generalized Markup Langrage,标准通用标记语言)作为页面的文本标记语言的HTML(HyperText Markup Language,超文本标记语言)
  • 作为文档传输协议的HTTP(HyperText Transfer Protocol,超文本传输协议)
  • 指定文档所在地址的URL(Uniform Resource Locator,统一资源定位符)

WWW这一名称,是Web浏览器当年用来浏览超文本的客户端应用程序是的名称。现在则用来表示这一系列的集合,也可简称为Web。

除了这三样技术外,还有Javascript,提供比HTML标准化窗口部件质量更好的用户交互,用于更新Web页面的部分内容而不必取得该页面的全新版本并重新显示。AJAX处理异步情况等等技术。

Web之所以取得巨大的成功,是因为许多个人或机构能比较容易地发布资源,它的超文本结构适合组织多种类型的信息,而且Web体系结构具有开放性。Web体系结构所基于的标准很简单,且早被广泛发布。它使得许多新的资源类型和服务可以集成到一起。

Web成功的背后也存在一些设计问题,首先,它的超文本模型再某些方面有所欠缺。如果删除或移动了一个资源,那么就会存在对资源所谓“悬空”链接,会使用户请求落空。此外,还存在用户“在超空间迷失”这个常见的问题。用户经常发现自己处于混乱状态下,跟随许多无关的链接打开完全不同的页面,使得有些情况下可靠性值得怀疑。

在Web上查找信息的另一种方法是使用搜索引擎,但这种方法在满足用户真正需求方面是相当不完美的。要解决这个问题,资源描述框架[www.w3.org V]中介绍过,一种方法是生成标准的表达事务元数据的词汇、语法和语义,并将元数据封装在相应的Web资源中供程序访问。除了查找Web页面中出现的词组外,从原理上讲,程序可以完成对针对元数据的搜索,然后,根据语义匹配编译相关的链接列表。总而言之,由互连的元数据资源组成的Web就是语义Web。

作为一个系统体系结构,Web面临规模的问题。常见的Web服务器会在一秒中有很多点击量,结果导致对用户的应答变慢。

[1] [7] 小结

分布式系统无处不在。

资源共享是构造分布式系统的主要因素。

分布式系统的构造面临许多挑战:

  • 异构性
  • 开放性
  • 安全性
  • 可伸缩性
  • 故障处理
  • 透明性
  • 服务质量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式系统的特征 的相关文章

随机推荐

  • JavaWeb开发中出现DataSource读取不到怎么办呢?(详细,适合初入门的程序员)

    这样的问题是怎么产生的呢 其实啊也不难 来吧 跟我走一遍 目录 前言 二 使用步骤 1 基本的JavaWeb项目的结构 1 1 创建一个JavaWeb项目 1 2 配置文件的配置 1 3 重点来了 2 DBUtil的代码内容 3 测试 总结
  • 树的广度优先遍历与深度优先遍历算法

    1 树的广度优先遍历算法 广度优先遍历算法 又叫宽度优先遍历 或横向优先遍历 是从根节点开始 沿着树的宽度遍历树的节点 如果所有节点均被访问 则算法中止 如上图所示的二叉树 A 是第一个访问的 然后顺序是 B C 然后再是 D E F G
  • 数据库实体关系图(ERD)

    数据库是软件系统中不可或缺的一个组成部分 若能在数据库工程中好好利用 ER 图 便能让您生成高质量的数据库设计 用于数据库创建 管理和维护 也为人员间的交流提供了有意义的基础 今天 我们将为你深入介绍 ER 图表 通过阅读本ERD指南 您将
  • Gikee 大数据

    据Gikee数据显示 今日13 58分 地址 1MAhRt279uYmVC1dUxKR6dWwEULBJT34Nh 向地址 1Fc4QQu6nEc4snAe4HAb4Kryd8koH89pYk 转了34010个BTC 价值约2 17亿美元
  • stm32USB之模拟U盘

    STMF0 W25Q32模拟U盘 1 第一次写博客 如有错误 请及时指正 如有表达不通顺的地方 敬请谅解 2 本篇文章主要描述如何使用STM32cube配置USB 使用的主控为STM32F072 Flash为W25Q32 使用的主控RAM只
  • scrapy爬虫错误一:无法爬到期望的数据

    最近在开始学习scrapy爬虫 遇到了一处很坑的地方 在屏幕上输出的debug信息总是没有任何结果就直接提示 scrapy statscollectors INFO Dumping Scrapy stats scrapy core engi
  • 2023算法面试题1

    1 介绍SAM模型 2 大语言模型的微调方法 3 yolov8与yolov5的区别 4 介绍LoRA和QLoRA微调技术 5 negative prompt怎么做的 6 stable diffusion的结构与原理
  • tc 流控脚本

    系统平台 RedHat AS4 root bridgenet software uname a Linux bridgenet 2 6 9 42 ELsmp 1 SMP Wed Jul 12 23 27 17 EDT 2006 i686 i
  • upf仿真例子

    原文链接 关于什么是UPF以及电源域等等概念赛宝龙在这里就不多说了 有兴趣的可以查阅IEEE1801 2013标准 先上低功耗要求 即power intent 顶层模块为TOP 而TOP中例化了一个子模块 其例化名为instA1 具体的代码
  • 危化安全生产信息化平台在煤化领域的应用

    一 背景介绍 煤化工行业是一个集煤炭 石油 化工等多种产业于一体的综合性行业 其特点是工艺流程复杂 设备繁多 安全隐患大 近年来 随着煤化工行业的快速发展 安全生产问题日益凸显 为了有效提高危化安全生产水平 某煤化工企业引入了信息化技术 搭
  • Springboot+Websocket中@Autowired注入service为null的解决方法

    使用工具类用于从Spring的上下文中去获取到类的实例 ServerEndpoint websocket userId Component 关键点1 public class WebSocket private static UserSer
  • 高效程序员的40个好习惯和行为方式

    每一个好的习惯 开头都会相应有一个唱反调的句子哦 1 做事 出了问题 第一重要的是确定元凶 找到那个人 一旦证实了是他的错误 就可以保证这样的问题永远也不会再发生了 指责不会修复bug 把矛头对准问题的解决办法 而不是人 这是真正有用处的正
  • Modbus​协议​深入​讲解_NI

    from https www ni com zh cn innovations white papers 14 the modbus protocol in depth html 已 更新 Mar 5 2019
  • hutool的json工具完成list和json转换

    将json和list相互转换 import cn hutool json JSONArray import cn hutool json JSONUtil List转Json maps是List类型的参数 String json JSONU
  • 因果系列文章(10)—— 因果关系发现

    如何从纷繁复杂的数据中发现其中隐含因果关系 就是因果关系发现 casual discovery 要做的工作 本节简要总结这方面的工作 主要材料来源于 Elements of Causal Inference Foundations and
  • 基于Fruits-360数据集构建CNN进行水果识别实验

    基于Fruits 360数据集的水果识别项目 前段时间导师要求做一个神经网络可视化的项目 要将水果数据集进行训练得到模型 用于TensorSpace可视化 前前后后捣鼓了很久 现在回过头总结一下整个项目过程 写下这篇博客记录遇到的问题 有任
  • CTF刷题

    刷题网站 bugku BUUCTF 本文记录了在刷题过程中所学到的知识点 坚持每天刷5道题 持续更新 坚持就是胜利鸭 CTF 1 bugku Simple SSLI 1 根据题目SSLI即服务端模板注入攻击 服务段接收用户输入 将其作为we
  • react数组遍历与onClick()点击事件

    import Component from react const user name Tom age 18 sex 男 name alice age 18 sex 女 name Time age 18 sex 女 class home e
  • MySQL_JDBC_jar包的下载与使用(for Windows)

    目录 1 下载 2 使用 1 下载 打开网站 MySQL Download Connector Jhttps dev mysql com downloads connector j 选择系统如下图 选择第二个下载 后缀为zip的 解压下载的
  • 分布式系统的特征

    分布式系统概念与设计 读书笔记 第一章 第一章 分布式系统的特征 1 0 简介 分布式系统是其组件分布在联网的计算机上 组件之间通过传递消息进行通信和动作协调的系统 该定义引出了分布式系统的下列重要特征 组建的并发性 缺乏全局时钟 组件故障