精华内容
下载资源
问答
  • 马上到期末了,对分布式系统这门专业进行全面复习,一方面是为了通过考试,一方面是对这学期学习的知识进行归纳整理。 目录前言第一章:分布式系统的特征分布式系统是什么为什么要构建分布式系统?Gogle web搜索技术...

    参考书目封面:
    在这里插入图片描述

    前言

    本书主要分为以下几个章节
    第1章分布式系统的特征
    第2章系统模型
    第3章网络和网际互连
    第4章进程间通信
    第5章 远程调用
    第6章间接通信
    第7章操作系统支持
    第8章分布式对象和组件·
    第9章Web服务
    第10章对等系统
    第11章安全性
    第12章分布式文件系统
    第13章名字服务
    第14章时间和全局状态
    第15章 协调和协定
    第16章事务和并发控制
    第17章分布式事务
    第18章复制.
    第19章移动和无处不在计算
    第20章分布式多媒体系统
    第21章分布式系统设计:Google

    可以看到内容还是很多的,打算一天学习三章左右的内容,可以7天左右看完
    学习形式是重要知识点复习加以理解,然后每一章都做一个知识点图谱

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

    分布式系统是什么

    →个其硬件或软件组件分布在连网的计算机上,组件之间通过传递消息
    进行通信和动作协调的系统
    通过计算机连接的计算机因为空间位置的不同分布式系统有如下特性

    • 并发
    • 缺乏全局时钟
    • 故障独立性

    为什么要构建分布式系统?

    大数据时代的来临,说明资源共享已经达到顶峰,对共享资源的使用的不同要求亟需我们使用分布式系统。

    Gogle web搜索技术

    • 由全世界多个数据中心的物联网计算机组成
    • 支持超大文件,根据搜索和其他google应用的使用方式进行了深度优化
    • 提供诸如分布式加锁和协定等分布式系统功能
    • 支持对底层物理措施上的超大并行和分布式计算的管理

    分布式系统的例子

    1)大型多人在线游戏
    2)金融交易
    随着数据开放性,现在分布式系统的使用趋势呈现增长
    可以从以下几个方面来看
    1)泛在网络技术
    2)出现了无处不在计算、伴随着分布式系统中支持用户移动性的意愿
    3)对多媒体设备的需求增加
    4)把分布式系统作为一个设施
    这也是我们要学习分布式系统的原因

    展开全文
  • 分布式系统概念与设计》读书笔记(第零章) [0] 引言 本文是关于《分布式系统概念与设计》一书的读书笔记,共分为含引言在内的22章。 具体目录如下: [0] 引言 [1] 分布式系统的特征 [2] 系统模型 [3] 网络和网际...

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

    [0] 引言

    本文是关于《分布式系统概念与设计》第五版一书的读书笔记,共分为含引言在内的22章。

    具体目录如下:

    • [0] 引言
    • [1] 分布式系统的特征《分布式系统概念与设计》读书笔记(第一章)
    • [2] 系统模型
    • [3] 网络和网际互连
    • [4]进程间通信
    • [5]远程调用
    • [6]间接通信
    • [7]操作系统支持
    • [8]分布式对象和组件
    • [9]Web服务
    • [10]对等系统
    • [11]安全性
    • [12]分布式文件系统
    • [13]名字服务
    • [14]时间和全局状态
    • [15]协调和协定
    • [16]事务和并发状态
    • [17]分布式事务
    • [18]复制
    • [19]移动和无处不在的计算
    • [20]分布式多媒体系统
    • [21]分布式系统设计:Google实例研究

    各章内容会逐步更新。

    展开全文
  • 分布式系统的特征

    2021-10-25 04:02:18
    分布式系统概念与设计》读书笔记(第一章) [1] [0] 简介 分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的系统。该定义引出了分布式系统的下列重要特征:组建的并发性、缺乏...

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

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

    [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] 小结

    分布式系统无处不在。

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

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

    • 异构性
    • 开放性
    • 安全性
    • 可伸缩性
    • 故障处理
    • 透明性
    • 服务质量
    展开全文
  • 在《分布式系统概念与设计》注’一书中,对分布式系统做了如下定义: 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 上面这个简单的定义涵盖了几乎...

    分布式的特点

    在《分布式系统概念与设计》注’一书中,对分布式系统做了如下定义:

    • 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

    上面这个简单的定义涵盖了几乎所有有效地部署了网络化计算机的系统。严格地讲,同 一个分布式系统中的计算机在空间部署上是可以随意分布的,这些计算机可能被放在不同的机柜上,也可能在不同的机房中,甚至分布在不同的城市。无论如何,一个标准的 分布式系统在没有任何特定业务逻辑约束的情况下,都会有如下几个特征。

    分布性
    分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随 时变动。

    对等性
    分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。副本 (Replica) 是分布 式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。 在常见的分布式系统中,为了对外提供高可用的服务,我们往往会对数据和服务进 行副本处理。数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存 储的数据丢失时,可以从副本上读取到该数据,这是解决分布式系统数据丢失问题 最为有效的手段。另一类副本是服务副本,指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。

    并发性
    在“问题的提出”部分,我们已经提到过与“更新的并发性”相关的内容。在一个 计算机网络中,程序运行过程中的并发性操作是非常常见的行为,例如同一个分布 式系统中的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存 储等,如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最 大的挑战之一。

    缺乏全局时钟
    在上面的讲解中,我们已经了解到,一个典型的分布式系统是由一系列在空间上随 意分布的多个进程组成的,具有明显的分布性,这些进程之间通过交换消息来进行 相互通信。因此,在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是因 为分布式系统缺乏一个全局的时钟序列控制。关于分布式系统的时钟和事件顺序, 在 Leslie Lamport ffi2 的经典论文 Time, Clocks, and theOrdering of Events in a Distributed System "'中已经做了非常深刻的讲解。

    故障总是会发生
    组成分布式系统的所有计算机,都有可能发生任何形式的故障。一个被大量工程实 践所检验过的黄金定理是:任何在设计阶段考虑到的异常情况,一定会在系统实际 运行中发生,并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异 常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。

    分布式环境的各种问题

    分布式系统体系结构从其出现之初就伴随着诸多的难题和挑战,本节将向读者简要的介 绍分布式环境中一些典型的问题。

    通信异常
    从集中式向分布式演变的过程中,必然引入了网络因素,而由于网络本身的不可靠性, 因此也引入了额外的
    问题。分布式系统需要在各个节点之间进行网络通信,因此每次网 络通信都会伴随着网络不可用的风险,网
    络光纤、路由器或是 DNS 等硬件设备或是系 统不可用都会导致最终分布式系统无法顺利完成一次网络通信。
    另外,即使分布式系统 各节点之间的网络通信能够正常进行,其延时也会远大于单机操作。通常我们认为在
    现 代计算机体系结构中,单机内存访问的延时在纳秒数量级(通常是 10ns 左右),而正常 的一次网络通信
    的延迟在 0.1~lms 左右(相当于内存访问延时的 105~106 倍),如此巨 大的延时差别,也会影响消息的收发
    的过程,因此消息丢失和消息延迟变得非常普遍。

    网络分区
    当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终 导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节 点则不能——我们将这个现象称为网络分区,就是俗称的“脑裂”。当网络分区出现时, 分布式系统会出现局部小集群,在极端情况下,这些局部小集群会独立完成原本需要整 个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。

    三态
    从上面的介绍中,我们已经了解到了在分布式环境下,网络可能会出现各式各样的问题, 因此分布式系统的每一次请求与响应,存在特有的"三态”概念,即成功、失败与超时。

    在传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的响应: 成功或失败。而在分布式系统中,由于网络是不可靠的,虽然在绝大部分情况下,网络 通信也能够接收到成功或失败的响应,但是当网络出现异常的情况下,就可能会出现超 时现象,通常有以下两种情况:

    • 由于网络原因,该请求(消息)并没有被成功地发送到接收方,而是在发送过程 就发生了消息丢失现象。
      该请求(消息)成功的被接收方接收后,并进行了处理,但是在将响应反馈给发 送方的过程中,发生了消息丢失现象。

    当出现这样的超时现象时,网络通信的发起方是无法确定当前请求是否被成功处理的。

    节点故障
    节点故障则是分布式环境下另一个比较常见的问题,指的是组成分布式系统的服务器节 点出现的宕机或“僵死”现象。通常根据经验来说,每个节点都有可能会出现故障,并且每天都在发生。

    展开全文
  • 什么是分布式系统

    2021-04-23 15:47:15
    什么是分布式系统分布式系统有多个含义:1)表示计算机科学的一个研究领域,研究方向。这个层面的分布式系统比较学术,不是本文讨论的对象。2)工程领域的实际使用的分布式系统分布式系统是互联网应用的基石,是...
  • 2021电子科技大学分布式系统期末考试回忆版,包含2021, 2020, 2017和其他几个年份的考试题回忆版。李玉军、侯孟书等几个老师出的题。
  • 通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同 构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些 服务器可能放在不同的...
  • 一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)这三个基本需求,最多只能满足其中的两项,不可能三者兼顾。 一致性:在分布式系统中的所有数据...
  • 先来看一个问题,假如现在我们要做一个商城项目,作为架构师的你应该怎样设计系统的架构?你心里肯定在想:这还不容易直接照搬淘宝的架构不就行了。但在现实的创业环境中一个项目可能是九死一生,如果一开始投入巨大...
  • php分布式是什么

    2021-03-23 08:13:26
    分布式计算是计算机科学中一个研究方向,它研究...分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务器的瓶颈问...
  • 将不同的业务分部在不同的地方,就构成了一个分布式的系统,现在问题来了,系统A是整个分布式系统的脸面,用户直接访问,用户访问量大的时候要么是速度巨慢,要么直接挂掉,怎么办? 由于系统A只有一份,所以会引起...
  • 本文主要简单介绍了分布式系统概念分布式系统的特点、常用的分布式方案以及分布式和集群的区别等。在学习分布式之前,先了解一下之对应的集中式系统是什么样的。 集中式系统用一句话概括就是:一个主机带多个...
  • 分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统...
  • 有意思的是,在“组合/结构设计”一书中描述的复杂度平衡不仅与分布式系统有关,其也提供了如何设计微服务的见解。 翻译待续 ... 本文来自祝坤荣(时序)的微信公众号「麦芽面包,id「darkjune_think」 开发者/科幻...
  • 本文来重点说下分布式系统原理与设计 文章目录概述 概述
  • 随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、...本文主要简单介绍了分布式系统概念分布式系统的特点、常用的分布式方案以及分布式和集群的区别等。 文章目录 ...
  • 一. 概述 我们将"业务系统"为协调者,数据库以及其他业务系统为"参与者"。当协调者在整个事务过程中,将参与者 A 提交了事务,然而参与者 B 提交事务失败。...这时就提出了这么分布式系统这个概念,在
  • 接下来将描述其中的三种分布式系统模,前一节中的模式一样,这些模式也需要对 Pod 这个逻辑概念的支持。 领导选举模式 分布式系统中最常见的问题就是领导选举(Leader election)问题,副本被普遍使用在一个组件的...
  • 分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统...
  • 本文来说下如何从Elasticsearch来看分布式系统架构设计 文章目录概述 概述 分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据...
  • 分布式系统的挑战

    2021-04-26 11:38:09
    分布式系统的挑战   尽管之前已经聊了很多分布式系统的问题和处理方式,例如节点失效,主从复制滞后,以及事务并发控制。实际上分布式系统带来的问题和挑战远远不止之前讨论的一些,本书的作者一直在极力的描述...
  • 摘要:随着计算机网络,特别是Internet的迅猛发展,传统的信息系统概念发生了巨大的变化,基于网络的分布式信息系统在各个领域得到了广泛的应用,在整个社会生活中正发挥着日益突出的作用。Internet已经越来越多地成为...
  • 分布式计算系统中,对应用程序进行程序设计的层面有四:减少单个计算的周转时间、增加可靠性和可用性、使系统某些部分提供特殊功能、固有的分布式应用。 分布式应用程序分类: 并行、高性能应用程序: 粒度是...
  • 微服务是一种服务间松耦合的、每个服务之间高度自治并且使用轻量级协议进行通信的可持续集成部署的分布式架构体系。这一句包含了微服务的特点,微服务架构和其他架构有什么区别?以下对比一些常见的架构。 单体架构...
  • 导读:随着互联网的不断发展,企业积累的数据越来越多。当单台数据库难以存储海量数据时,人们便开始探索如何将这些数据分散地存储到多台服务器的多台数据库中,逐渐形成了分布式数据库。如果将数据分散...
  • 资料来源《分布式系统原理范型》第2版,极客时间《分布式技术原理算法解析》 基本概念 部分失效 分布式系统区别于单机系统的一个特性是它可以容许部分失效。当分布式系统中的一个组件发生故障时就可能产生部分...
  • 3.1为什么要走分布式系统架构 3.2系统如何进行拆分 3.3 分布式通常使用的架构类型有哪些 3.3.1 客户端服务器 3.3.2 三层架构 3.3.3 多层架构 3.3.4 点对点架构 3.3.5 以数据库为中心 3.4 性能的优缺点 3.4....
  • 分布式官方给的名词解释是 “分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件...
  • 本文期望用浅显易懂的大白话来就什么是分布式系统分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。 什么是分布式系统 关于"分布式系统"的定义,我们先看下老外是怎么说...
  • 这些问题,无一不拷打者分布式系统设计者。 下面,我们将看一下主流的几个存储服务,是如何解决数据同步问题的。 MySQL如何做主从同步? mysql的主服务器叫做master,从服务器叫做slave。 主服务器将变更记录...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 202,692
精华内容 81,076
关键字:

分布式系统概念与设计