美文网首页
分布式系统:原理与范型——阅读笔记(绪论)

分布式系统:原理与范型——阅读笔记(绪论)

作者: Jaling | 来源:发表于2022-03-24 09:54 被阅读0次

0 前言

本书由荷兰Vrije大学计算机科学教授Andrew Tanenbaum著作,由杨剑峰、常晓波、李敏译等人译作,总结了分布式系统的原理,并列出了大量的范型,是分布式系统的权威教材。全书结构分为两部分:原理和范型。第一部分(第1~8章)详细讨论了分布式系统的原理、概念和技术,包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分(第9~12章)给出了一些实际的分布式系统,包括基于对象的分布式系统、分布式文件系统、基于文档的分布式系统以及基于协作的分布式系统,介绍了一些实际系统的设计思想和实现技术。本文将对全书主要内容进行梳理,系统地罗列出笔者认为的重点知识。

目录:绪论通信进程,命名,同步,一致性和复制,容错性,安全性


第1章 绪论

1.1 分布式系统的定义

1. 分布式系统是若干独立计算机的集合,这些计算机对于用户来说像是单个系统。

2. 重要特性包括:①各种计算机之间的差别以及计算机之间的通信方式的差别对用户是隐藏的;②用户和应用程序无论在何时何地都能够以一种一致和统一的方式与分布式系统进行交互。

3. 在计算机系统中所处位置:高层的用户应用程序与低层的操作系统之间的软件层,又称为中间件(middleware)。

1.2 目标

1. 用户方便地与资源连接

使用户能够方便地访问远程资源,并且以一种受控的方式与其他用户共享这些资源。

在连接能力和共享功能不断加强的同时,安全性是关键问题。系统需要具备防范通信窃听和入侵的能力,对特定用户隐私权的保护等。

2. 透明性:隐藏资源在一个网络上分布的事实

将它的进程和资源实际上在多台计算机上分布的事实隐藏起来。

透明性分类:访问透明性、位置透明性、迁移透明性、重定位透明性、复制透明性、并发透明性、故障透明性、持久性透明性。

关于透明度的讨论:①把所有分布情况对用户屏蔽不一定便于用户的使用;②传输速度的差异导致无法完全透明;③必须在高度的透明性和系统性能之间进行权衡,得出折中方案。

3. 开放性

①根据一系列的准则来提供服务,这些准则描述了所提供的服务的语法和语义。

在分布式系统中,服务通常是通过接口指定的,而接口一般是通过IDL(interface definition language, 接口定义语言)来描述的。

接口规范说明的完整性和中立性对于实现互操作性和可移植性很重要。

②能够方便灵活地把由不同开发人员开发的不同组件组合成整个系统,又能方便的添加、替换组件而不会对其他组件造成影响。

关键是把系统组织成规模相对较小而且容易替换或修改的组件的集合。将策略和机制分离,通过接口交互。

4. 可扩展性

包括规模上的扩展、地域上的扩展、跨越多个独立的管理机构。

现存问题:①规模上的扩展受到集中式服务(机密信息管理)、集中式数据(单表)、集中式算法(全网路由)的限制;②基于同步通信的局域网难以扩展为广域网,现有广域网的通信不可靠,从而难以实现地域可扩展性;③由于在资源使用、管理和安全问题上策略的冲突,难以实现跨越多个管理领域的分布式系统扩展。

扩展技术:①隐藏通信等待时间,异步通信或减少通信量;②分布技术,将一个组件分割成多个部分分散到系统中,例如DNS域名管理;③通过复制应对系统扩展后性能的下降。

*缓存是复制的一种特殊形式,缓存由访问资源的客户决定,复制由资源拥有者决定。

*复制方式可能导致一致性问题,高度一致性的关键是对某个拷贝的更新必须立即传播到其他所有拷贝上。

1.3 分布式系统的硬件

将多个独立计算机构建的系统分为两类:共享存储计算机系统和不共享存储器的计算机系统。共享存储计算机系统又称多处理器系统(multiprocessors),不共享存储器计算机系统又称多计算机系统(multicomputers)。

根据网络互联体系结构还可以分为:总线型(bus)和交换型(switched)。

针对多计算机系统,分布式计算机系统还可以进一步分为:同构的(homogeneous)和异构的(heterogeneous)。异构式多计算机系统中可能包含有许多不同的独立计算机,它们通过不同的网络相联。

1. 多处理器系统

关键属性:系统中所有CPU都能够直接访问共享的存储器。能够读写共享的存储器称为相关的。

接入的CPU数量过多时,性能将急剧下降,可以通过在CPU和总线之间加装高速缓冲存储器来缓解,然而会导致存储器非相关性的问题。

2. 同构式多计算机系统

每个CPU都与自己的本地存储器直接相连,CPU之间相互通信。

在基于总线的多计算机系统中,处理器通过快速以太网这样的共享多重访问网络彼此相连,消息通过广播发送;在基于交换的多计算机系统中,处理器之间的消息通过互联网络进行路由。

基于交换的多计算机系统规模各异。规模最大的是大规模并行处理器(massively parallel processors,MPP)系统,特别使用高性能的专用互联网络,网络设计的目的是尽量缩短等待时间并且达到高带宽,规模较小的一种流行形式称为工作站群集(clusters of workstations, COW)。COW和MPP之间的区别在于互联网络的不同,在COW中没有专门的措施来保证高速I/O带宽和故障防护措施。

3. 异构式多计算机系统

目前使用的多数分布式系统是在异构式多计算机系统的基础上组建起来的,系统各部分的计算机有着巨大的差异。

1.4 分布式系统的软件

分布式系统的软件决定其外在特征。分布式系统很像传统的操作系统,行为上像底层硬件的资源管理器,实现在多个用户和应用程序间的资源共享,同时实现了对底层硬件复杂异构本质的隐藏。

供分布式系统使用的操作系统可以粗略地分为:紧耦合系统与松耦合系统。

紧耦合系统又称为分布式操作系统(distributed operating system,DOS)用于管理多处理器系统和同构式多计算机系统。主要目标是隐藏底层硬件管理的复杂性。

松耦合系统又称网络操作系统(network operating system,NOS)用于管理异构式多计算机系统。允许远程客户使用本地服务。在网络操作系统之上增加“中间件”,以使其真正符合分布式系统的要求。

1. 分布式操作系统:单处理器OS,多处理器OS、多计算机OS、分布式共享存储器系统

对于单处理器OS,资源共享意味着不同的应用程序可以用一种彼此隔离的方式访问同一个硬件,对于其中某个应用程序来说,就好像这个资源是属于它自己的一样。根据对资源的访问度分为两种操作模式:内核模式(kernel mode,允许所有访问所有存储器和寄存器指令的执行)和用户模式(user mode,对存储器和寄存器的访问受到限制)。从用户模式切换到内核模式的唯一途径是通过由操作系统实现的系统调用。(方案)全部代码均以内核模式运行----(缺点)难以修改OS----(改进)硬件管理模块@用户模式+微内核(microkernel)@内核模式

对于多处理器OS,数据可以由多个处理器访问,必须避免发生并发访问,以确保数据的一致性。所有的通信是通过操纵位于共享存储器地址中的数据来进行的,只需要保护数据不在同一时刻受到多个访问。

对于多计算机OS,数据无法放置在物理上共享的存储器中,唯一通信方法是消息传递。解决方案是在每个本地内核上建立一个公共软件层,称为分布式操作系统服务层,提供共享存储器的软件实现,具备一般操作系统应该具有的所有功能。需要注意是否需要确保通信的可靠性,可靠通信的关键特征是发送者发送消息后,可以从接收者获得消息已收到的确认反馈。

为了解决多计算OS中更为复杂的问题,例如缓冲、阻塞、可靠通信等,研究人员力图在多计算机系统上模拟共享存储器,目标在于提供一个运行在多计算机系统上的共享存储器虚拟机,这样就可以根据共享存储器模型来编写应用程序。

方法之一是,利用每个结点的虚拟存储器容量来实现对一个巨大的虚拟地址空间的支持,即基于分页的分布式共享存储器(distributed shared memory,DSM)。原理是,将地址空间划分为页,分配给系统中的各个处理器,当某个处理器引用非本地页的某个地址时,引发一个软中断,待系统取来包含该地址的存储页时,指令重新执行。可通过复制页的方式提高性能。(在写操作进行之前,除了要写的拷贝外的所有拷贝都会被系统标记为无效。)如何决定页的大小以设计更加高效的DSM系统?通过网络传输某一页的代价主要取决于建立传输的代价,而不是所传输的数据量,如果页面较大,在经常需要访问大量连续数据的情况下可以减小传输的总次数,但如果某页含有不同处理器上的两个独立进程使用的数据,操作系统可能会不断地在这两个处理器间传输该页(伪共享),导致性能低下。

2. 网络操作系统

网络操作系统大都构建在一组单处理器系统的基础上,其中每个系统都拥有自己的操作系统。

网络操作系统中的通信方式:一种是显式的文件复制移动,要求用户完全掌握文件所在位置以及命令执行位置;一种是提供一个共享的可供所有工作站访问的全局文件系统,该文件系统由一台或数台称为文件服务器的机器支持。

网络操作系统比分布式操作系统更原始,分布式操作系统做了很大的努力实现完全的透明性。

3. 中间件

为了使分布式系统既能够具有网络操作系统的可扩展性和开放性,又能够具有分布式操作系统的透明性和与之相关的易用性,可以通过在网络操作系统中使用附加软件层,来实现对网络操作系统底层平台异构性的隐藏,提高分布透明性,该附加层称为中间件。

中间件系统的一个重要目标是对应用程序隐藏底层平台的异构性,因此许多中间件系统都提供一组完整程度不同的服务集。这些服务集必须使用系统提供的接口来访问,禁止跳过中间件层直接调用底层操作系统的服务。

中间件基于某种模型来描述分布及通信。①基于文件的中间件模型。所有资源都作为文件来处理,通过访问同一个文件实现通信。②基于RPC(remote procedure call,远程过程调用)的中间件模型。允许进程调用位于远程机器上的过程实现来隐藏网络通信。③基于分布式对象的中间件模型。以一种透明的方式调用驻留在远程机器上的对象。分布式对象本质上是实现了一种特殊接口的对象,这种接口向对象的用户隐藏了对象的所有内部细节,接口仅包含由对象实现的方法,进程只能看到对象的接口。

中间件系统可提供多种通用的服务。①访问透明性。通过提供高层通信功能以隐藏通过计算机网络进行的低层消息传递来达到。②命名服务。允许实体被共享和查询。在大规模系统中,如果要高效地进行名字查询,就必须假设命名的实体所在的地址是固定的。③存储方面的持久性。④分布式事务处理。分布式事务用于对分散在多台机器上的数据进行操作,分布在多个本地机器上的事务难于进行扩展。⑤安全功能。中间件层不能依赖底层的本地操作系统来提供对整个网络安全的支持,安全性是分布式系统中最难实现的服务之一。

中间件在开放性方面的问题是:由于接口定义的不完整性使得应用程序对特定中间件具有强依赖性,难以实现应用程序再不同系统间的移植。

1.5 客户-服务器模型

客户-服务器模型是用来理解分布式系统的组织问题的。

服务器(server)是实现某个特定服务的进程,客户(client)是向服务器请求服务的进程,它向服务器发送一个请求,随后等待服务器的应答。

客户与服务器之间的通信可以利用简单的非连接协议来实现,效率高。但为了使协议能够处理偶然的传输故障,需要采用可靠的面向连接的协议,当客户请求服务时,它首先与服务器之间建立一个连接,然后再发送请求,服务器一般使用同一个连接把应答消息送回给客户,然后断开该连接。

客户-服务器应用程序可以分成:①用户界面层。由客户实现用户界面层,由允许最终用户与应用程序之间进行交互的程序组成;②处理层。一部分与用户交互,另一部分操作数据库或文件系统,中间部分包含应用程序的核心功能;③数据层。保证数据的持久性存储,维护不同应用程序之间的数据一致性。

客户服务器体系结构:①简单的客户机器包含界面层和服务器机器包含其余程序,并非真正分布式,所有任务都由服务器处理;②多层体系结构。部分处理层和数据层的程序也由客户机器实现。③现代体系结构。称用户界面、处理层和数据层的应用程序划分方式为纵向分布。将客户或者服务器在物理上分割成几个部分,这几个部分在逻辑上拥有同等地位,每个部分都处理自己拥有的完整的数据集,使负载平衡,称为横向分布。简单的协作式应用程序中,不存在服务器,客户机器之间直接联系,称为对等分布

相关文章

网友评论

      本文标题:分布式系统:原理与范型——阅读笔记(绪论)

      本文链接:https://www.haomeiwen.com/subject/iorkjrtx.html