笔记: 《分布式系统:概念与设计》第一章 分布式系统的特征

1.1 简介

分布式系统概念:一个硬件或软件组件分布在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统

分布式系统的特征:

  1. 并发:用户在各自的计算机上工作,请求某一类共享资源。系统处理共享资源的能力会随着网络资源(硬件或软件)的增加而提高。
  2. 缺乏全局时钟:网络上的计算机与时钟同步所达到的准确性是有限的,即没有一个正确时间的全局概念。
  3. 故障独立性:系统的每个组件会单独出现故障,而其他组件还在运行。

构造和使用分布式系统的主要动力来源于对共享资源的期望。

1.2 分布式系统的例子

(1)Web搜索:Google
(2)大型多人在线游戏
(3)金融交易
(4)分布式多媒体系统

Google用于支持搜索的分布式系统基础设施的亮点:
(1)一个底层物理设施:由位于全世界的多个数据中心的联网计算机组成
(2)一个分布式文件系统
(3)一个相关的结构化分布式存储系统:提供对超大数据集的快速访问
(4)一个锁服务:提供分布式加锁和协定等功能
(5)一个编程模式:支持对超大并行和分布式计算的管理

复杂事件处理(Complex Event Processing, CEP):提供一种方法来将一起发生的事件组成逻辑的、时序的或空间的模式。

防火墙:保护企业内部网,防止未授权的消息进出网络。防火墙是通过过滤到达消息和外发消息来实现的,可在源或目的地进行过滤。

1.3 分布式系统的趋势

移动计算:指用户在移动或访问某个非常规环境时执行计算任务的性能。

云被定义成一组基于互联网的应用,并且足以满足大多数用户需求的存储和计算服务的集合,这使得用户能大部分或全部免除本地数据存储和应用软件的使用。

通常,云实现在集群计算机上,从而提供每个服务所要求的必要的伸缩性和性能。集群计算机(cluster computer)是互连的计算机集合,它们紧密协作提供单一的、集成的高性能计算能力。集群服务器的总目的是提供一系列的云服务,包括高性能计算能力、大容量存储,丰富的应用服务。

1.4 关注资源共享

服务:表示计算机系统中管理相关资源并提供功能给用户和应用的一个单独的部分。服务将资源访问限制为一组定义良好的操作。

客户-服务器计算:指在连网的计算机上的一个运行程序,这个程序接收来自其他计算机上正在运行的程序的请求,这执行一个服务并适当地做出响应。发出请求的称为客户,响应请求的程序服务器。

1.5 挑战

(1)异构性

异构性,即存在多样性和差别。以下几个方面均存在异构性:

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

中间件:指一个软件层,它提供一个编程抽象,同时屏蔽了底层网络、硬件、操作系统和编程语言的异构性。

移动代码:指能从一台计算机发送到另一台计算机,并在目的计算机上运行的代码。适合在一种计算机上运行的代码未必适合在另一种计算机上运行,因为可执行程序通常依赖于计算机的指令集和操作系统(例如Windows和Linux)

(2)开放性

分布式系统的开放性主要取决于新的资源共享服务能被增加和供多种客户程序使用的程度。

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

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

信息资源的安全性包括三个方面:

  1. 机密性:防止泄漏给未授权的人
  2. 完整性:防止被改变或被破坏
  3. 可用性:防止对访问资源的手段的干扰

加密技术可解决的问题:

  1. 以安全的方式在网络上通过消息发送敏感信息
  2. 正确地识别远程用户或其他代理的身份

尚未圆满解决的安全问题:

  1. 拒绝服务攻击:用大量无意义的请求攻击服务,使得重要的用户不能使用它。
  2. 移动代码的安全:运行来自网络上的可执行程序,其后果是不可预测的。
(4)可伸缩性

如果资源数量和用户数量激增,系统仍能保持其有效性,那么该系统就被称为可伸缩的。

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

  1. 控制物理资源的开销:当对资源的需求增加时,应该可以花费合理的开销扩展系统以满足要求。
  2. 控制性能损失:合理的算法设计,采用层次结构的算法其伸缩性要好于使用线性结构的算法。
  3. 防止软件资源用尽:比如IPv4地址即将用尽
  4. 避免性能瓶颈:算法应该是分散型,以避免性能瓶颈。缓存和复制可以用于提高频繁使用的资源的性能。
(5)故障处理

分布式系统的故障是部分的,即有些组件出了故障而有些组件运行正常。因此故障的处理相当困难。

故障处理技术:

  1. 检测故障:有些故障通过一定的手段是可以被检测的。

  2. 掩盖故障:有些被检测到的故障能被隐藏起来或降低它的严重程度。例如:

     (1)消息在不能到达时进行重传
     (2)将文件数据写入两个磁盘,如果一个磁盘损坏,另一个磁盘的数据仍是正确的。
    
  3. 容错:试图检测并隐藏所有的故障是不实际的,服务的客户应该能被设计成容错的。例如:浏览器不会一直等待与它的服务器建立连接,如果不能连接,则通知用户尝试稍后进行连接。

  4. 故障恢复:在服务器崩溃后,永久数据的状态能被恢复或“回滚”。

  5. 冗余:利用同于组件,服务可以实现容错。

面对硬件故障,分布式系统提供高可用性。系统的可用性是对系统可用时间的比例的一个度量指标。当分布式系统中的一个组件出现故障时,仅仅是使用受损组件的那部分工作受到影响。如果用户正在使用的计算机出现故障,用户可以转移到另一台计算机上,并且服务器进程能在另一台计算机上启动。

(6)并发性

服务和应用通常运行并发地处理多个客户请求。为了使对象在并发环境中能安全使用,它的操作必须在数据保持一致的基础上同步。这可通过标准的技术(信号量或锁等等)来实现。

(7)透明性

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

访问透明性:用相同的操作访问本地资源和远程资源。
位置透明性:不需要知道资源的物理或网络位置就能够访问它们。
并发透明性:几个进程能并发地使用共享资源进行操作而互不干扰。
故障透明性:屏蔽错误,无论是硬件还是软件故障,用户都能够完成它们的任务。
性能透明性:当负载变换,系统能被重新配置以提高性能。
伸缩透明性:系统和应用能够进行扩展而不改变系统结构或应用算法。

访问透明性:例如具有文件夹的图形界面,无论是本地资源还是远程资源,文件夹的图形用户界面都是一样的。

位置透明性:例如Web资源名或URL就是位置透明的,不需要知道资源的物理或网络位置即可进行访问。

网络透明性(访问透明性和位置透明性的统称):例如电子邮件地址的使用。给用户发送邮件不需要知道他们的物理位置或网络位置,发送邮件信息的过程也不依赖于接收者的位置。

(8)服务质量

影响客户和用户体验的服务质量是可靠性、安全性和性能。

1.6 实例研究:万维网

Web基于以下三个主要的标准技术组件:

(1)超文本标记语言(HTML) :页面在浏览器上显示时指定其内容和布局的语言。
(2)统一资源定位器(URL):用于识别文档和保存成Web一部分的其他资源。
(3)具有标准交互规则(超文本传输协议,HTTP)的客户-服务器体系结构。

HTTP URL有两项主要的工作:

  1. 识别出哪一个Web服务器维护资源
  2. 识别出该服务器上的那些资源是被请求的

HTTP的主要特征:

  1. 请求-应答交互:HTTP定义了一些能在一个资源上操作集合和方法。最常见的操作时POST和GET,它们从资源中检索数据以及提供数据给资源。
  2. 内容类型:浏览器未必能处理每一种内容类型。可使用外部插件来识别处理特定的内容,因为浏览器对指定的内容类型所采取的动作是可配置的。
  3. 一次请求一个资源:客户的每个HTTP请求只指定一个资源。通常浏览器可同时发出几个请求,以减少对用户的整体延迟。
  4. 简单的访问控制:给发出请求的客户回发一个“质询”,要求证明其权限可以访问某些资源。例如口令、密码等。

Web服务器上运行的为客户生成内容的程序通常称为公共网关接口(Common Gateway Interface, CGI)程序。一个CGI程序可以具有任何特定应用的功能,只要它分析客户提供给它的参数,产生所要求类型的内容。

可扩展标记语言(Extensible Markup Language, XML)是一种以标准的、结构化的、特定于应用的格式表示数据的方式。从原理上看,用XML表示的数据在不同的应用间是可移植的,因为它是自描述的:它包含数据元素的名字、类型和结构。

第一章完,谢谢阅读。

你可能感兴趣的:(读书笔记,分布式,网络)