分布式期末复习题

概述题

1.分布式系统的定义?如何从硬件和软件的角度理解分布式系统的内容?
  答:分布式系统是若干独立计算机的集合,但对用户来说是一个统一的系统。

2.分布式系统的设计的四个关键目标?
  答:资源可用性、分布式透明性、开放性、可伸缩性

3.事务处理具有的四个特性?
  答:1.原子性:事务在逻辑上是不可分割的操作单元;2.一致性:事务处理不会违反系统的不变性;3.隔离性:事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的;4.持久性:对于任意已提交的事务,必须保证该事务对系统的改变不被丢失,即使系统出现故障。

体系结构

1.分布式系统的体系结构有哪几种?简要解释。
  答:1.集中式;2.非集中式;3.混合式。 集中式体系结构有C/S架构、服务器兼职客户端架构、多客户端/单服务器架构、多客户端/多服务器架构。C/S架构分为客户端和服务端,服务端实现特定的存储或计算的服务进程,客户端遵循请求和回复的方式来向服务端请求服务;服务端兼职客户端架构就是一台服务器既会担任客户端的角色又会担任服务端的角色;多客户端/单服务器架构是指多台客户端向单台服务器请求服务;多客户端/多服务器架构是指服务会有多台服务器来提供,根据服务方式又有,多台服务器协作提供一个服务和多台服务器各自提供相同的服务。集中式体系结构一般分为:用户结构层、处理层和数据层。
  非集中式体系结构中没有单一的划分客户端和服务器角色,每个节点作为客户的同时又会向其他节点提供服务。比如P2P和超级对等体,P2P又可以分为结构化、非结构化和混合式。
  混合式体系结构是C/S架构和P2P架构的融合,有经常用于内容分发网络的边界服务器系统,以及BitTorrent等。

进程

1.什么是进程?进程、程序的区别?
  答:进程是计算机程序关于某数据集合上的一次运行活动,是系统进行资源分配的最小单位,是操作系统结构的基础。
  计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,是由某种程序设计语言编写的一串静态代码以及相应的数据。
  一个进程可以执行多个程序,一个程序可以产生多个进程。

2.为什么要引入线程,分布式系统中进程和线程的联系与区别?
  答:对于分布式系统而言,使用进程就意味着有可能需要频繁的发生上下文切换,并且系统对于进程的创建、管理和维护要承担较大的负担,此时引入的线程可以有效解决这个问题,另外,线程提供了一种便捷的方式允许导致阻塞的系统调用而不阻塞该线程所属的进程,这样可以方便地将通信表示为维护多个逻辑连接的形式。
  一个线程只能属于一个进程,而一个进程可以创建多个线程;线程本身不拥有资源,资源分配给进程,该进程所属的所有线程共享该进程的所有资源;对于多处理器系统而言,一个进程只能在一个处理器上执行,但可以将一个进程中的多个线程分配到多个处理器上进行并行执行;线程是进程的一个可执行实体,是CPU调度和分派的基本单位;在创建、管理、撤销方面,进程由于作为拥有资源的基本单位会导致其系统开销远远大于线程的系统的开销,不恰当地说,线程是轻量版的进程。

3.用户级线程的主要优势和缺陷?如何解决它的缺陷?
  答:用户级线程是指不需要内核支持,而用户程序可以自行创建的线程,不依赖于操作系统核心。用户级线程有创建、管理、撤销的开销很小,而且可以通过简单地几条指令来实现上下文切换,可以在不支持线程的操作系统中实现,允许每个进程定制自己调度算法、管理灵活,线程能够利用的表空间和堆栈空间比内核级线程多;但是对引起阻塞的系统调用的调用会阻塞该线程所属的整个进程,也即,该进程所属的其他线程也随之阻塞。
  系统将多个轻型进程(LWP)分给进程,LWP可以通过系统调用来获得内核提供的服务,而进程中的用户级线程可通过复用来关联到LWP,从而获取内核服务,这样当某个用户级线程阻塞时,可切换到其他LWP,就不会导致整个进程被阻塞挂起。

4.有状态服务器、无状态服务器?对于状态无关的服务器使之维持状态的方法?
  答:有状态服务器是一直保存客户端的信息直到显式的删除;无状态服务器是不保存其客户对方状态信息,而且不将自身的状态变化告知任何客户;对于状态无关服务器来说,运用软状态的信息维护方式,这种情况下服务器会维护客户状态,但是仅仅维持一小段时间。

5.迁移代码时,根据本地资源方式的不同,如何采用不同的做法?
  答:在分布式系统中,代码迁移以进程迁移的形式展现,整个进程从一台机器迁移到另一台机器上去。迁移代码时,需要在不影响进程对资源绑定的条件下改变指向资源的引用,即资源对机器绑定方式需要考虑如下几点:(1)未连接资源:可以方便在机器之间移动,一般要迁移 的是与程序相关的数据文件;(2)附着链接资源:可以进行复制移动,但是开销比较大;(3)紧固链接资源:资源紧密地绑定到特定的机器,无法进行移动。

通信

1.电子邮件系统采用什么样的通信服务?持久通信、瞬时通信、异步通信、同步通信之间的组合方式,以及每种组合之间的区别?
  答:电子邮件系统采用持久通信服务。组合方式有:持久通信加异步通信、持久通信加同步通信、瞬时通信加异步通信、瞬时通信加同步通信。
  持久异步通信是指发送方发送消息后就转向处理其他事务,消息存储在本地主机缓冲区或者通信服务器的缓冲区中,当接收方上线运行后通过中间件获取消息。
  持久同步通信是指发送方发送消息并等待, 直到接收方的accepted反馈后转向处理其他事务,接收方将消息存储在接收主机上等待上线运行时received。
  瞬时异步通信是指当发送端应用程序提交消息进行传输时,消息暂时存储在发送发送主机的本地缓冲区中,随后发送者立即继续执行其他程序。与此同时,通信系统将消息继续向接收方传送。如果在消息送达接收方时,接收方不在执行中,那么传输将失败。
  瞬时同步通信有多种不同形式。最弱的是基于消息接收的,即消息送达接收主机并且存储在那里的本地缓冲区后就解除发送者的阻塞,此时发送者会接收到一个确认消息,转向处理其他事务。基于角度的瞬时同步通信中,在消息送达接收者进行进一步处理之前,发送者一直处于阻塞状态。最强的是在发送者收到接收者发来的回应消息之前一直阻塞。

2.为什么要引入远程过程调用,远程过程调用包含哪些步骤?
  答:许多分布式系统是基于进程间的显示消息交换的,然而,消息的发送和接收过程是无法隐藏通信的存在,而通信的隐藏对于分布式系统中实现访问透明性是极其重要的。
  远程过程调用包含如下几步:(1)客户过程以正常的方式调用客户存根;(2)客户存根生成一个消息,然后调用本地操作系统;(3)客户端的操作将消息发送给远程调用系统;(4)客户操作系统将消息交给服务器存根;(5)服务器存根将参数提取出来。然后调用服务器;(6)服务器执行要求的操作,操作完成后返回给服务器存根;(7)服务器存根将结果打包成一个消息,然后调用本地操作系统;(8)服务器操作系统将含有结果的消息发送给客户端操作系统;(9)客户端操作系统将消息交给客户存根;(10)客户存根将结果从消息中提取出来,返回给调用它的客户过程。

3.在RPC中,可能发生的5种失败形式?如何处理?
  答:5种失败形式有:一、客户端无法定位服务器;二、客户端到服务器的请求消息丢失;三、服务器返回给客户端的消息丢失;四、服务器再接收到消息后阻塞;五、客户端在发送完消息后阻塞。
  失败一:可以使用特殊符号作为返回值来指明该失败;让无法返回消息的错误产生一个异常或者是信号。
  失败二:内核在发送消息时候设置一个计时器,若计时器时长内返回消息则正常处理;若消息丢失则直接重传;若重传多次依旧失败则服务器失联。
  失败三:内核在发送消息时设置一个计时器,若超时还未接收到消息则重传;若操作不是幂等的,客户的内核为请求分配序列号允许服务器的内核区分重传和原始数据。
  失败四:等服务器重启后重新操作,或者立即放弃并报告错误。
  失败五:(1)在客户端存根发送RPC之前,生成一个日志条目后重新启动,检查日志并杀死孤儿;(2)将时间划分为顺序编号的时间段,当客户端重新启动时,它会广播一条消息,声明新时间段的开始。当广播到来时,所有远程计算都被杀死,无需编写磁盘记录;(3)每个RPC都有一个标准的时间长T来完成这项工作,如果它无法完成,则必须明确申请新的时长T。

4.什么是消息队列系统?为什么需要消息队列系统?使用队列的松散耦合通信有哪几种组合方式?
  答:应用程序通过在特定队列种插入消息来进行消息通信的系统叫做消息队列系统。为了保证发送的消息在接收方未处于运行状态的时候也可以送达,接收方构造一个消息队列,发送方发送的消息存储在接收方之中。
  使用队列的松散耦合通信的组合有:发送方和接收方在整个传输过程中都在运行、发送方在运行,接收方不运行,处于一种无法进行消息交付的状态,但是发送方可以发送消息、发送方不运行,接收方运行,接收方可以读出发送给它的消息、发送方和接收方都不运行,但是消息可以由系统存储。

5.离散媒体、连续媒体的含义、区别是什么?
  答:连续媒体是指在连续媒体数据中,数据项之间存在紧密的时间联系,是理解连续媒体数据的含义基础。数据项之间的时间联系对于正确理解数据含义并不重要。

6.数据流传输中,如何确保服务质量QoS?交错传输的工作原理?
  答:在网络层面上,发送数据可以把要发送的数据包区分为哪一种类型,例如“快速转发”,快速转发要求数据包以绝对的优先级来转发数据包。在接收端,假设当前数据包在网络传输上有不同的延时,接收方先将数据包存储到缓冲区中。如果总是有足够的数据进入缓冲区,就可以把稳定的数据传给应用程序。否则会产生一定的延时。
  交错传输是要把发送的数据包中的数据块交错排序,然后按顺序传输数据块,例如数据包1(块1,块4,块7...)、数据包2(块2,块5,块8)、数据包3(块3,块6,块9),然后传输顺序为块1、块2、块3、块4...

同步化

1.分布式系统为什么需要同步?可举例说明。在分布式系统中实现同步,存在哪些困难?可从物理时钟、传输延迟等角度分析。
  答:事务的处理具有一定的先后顺序,分布式系统各种服务器事务的处理也是如此。然而由于物理特性的原因,分布式系统中各个机器的物理时间无法做到统一。假设现有一台运行编译(output.o)的机器和运行编辑(output.c)的机器,前者快后者两个时间单位,若output.o的时间为A,紧接着output.c被修改,但是由于它所在的机器时钟略慢,结果output.c的时间值被赋为A-1。那么编译程序将不调用编译器。最终的可执行二进制程序将包含由旧的源文件和新的源文件所产生的的混合目标文件,从而可能导致程序崩溃。
  各个机器由于电子物理特性的缘故,导致各个机器的物理时间不统一,从而导致同步出现困难。另外在各个机器同步的过程中,需要进行传输各自的时间,而由于传输路径的途径不同,耗时不同,也会导致同步出现困难。

2.有哪些时钟同步算法?Berkeley算法、均值同步算法的具体步骤?
  答:有Cristian算法、Berkeley算法、平均值算法和多个外部时间源。
  在Berkeley算法中,服务器是主动地,它定期询问每台机器的时间,基于这些回答,让他计算出一个平均时间,并告诉其他机器讲它们的时钟拨快、或者拨慢,直到某个指定的减少量到达为止。
  将时间划分为固定长度的间隔。在每次间隔开始处,每台机器根据自己的时钟广播当前时间(广播不同事发送),在一台机器发送了他的时间后,启动本地定时器接受在某个间隔S里收到的其他广播,所有广播到达后,执行一个算法从这些值中计算得到一个新的时间值。

3.逻辑时钟与物理时钟的区别?如何通过Lamport算法校正不同进程的时钟?
  答:物理时钟是根据物理元器件来确定时间,逻辑时钟是通过跟踪各自事件执行顺序的方式来实现操作处理上的先后顺序。
  每个进程Pi都维持一个局部时钟Ci,根据如下规则来调整这个时钟:(1)对于发生在Pi内的任意两个连续事件,Ci都会加1;(2)每当进程Pi发送一个消息m时,该消息都会收到一个时间戳ts(m)=Ci;(3)无论进程Pj什么时候收到消息,Pj都会调整它的局部时钟Cj至max{Cj, ts(m)};然后在把m传到应用程序之前执行步骤一。

4.Lamport逻辑时钟与向量时钟的联系与区别?向量时钟的工作原理(三个步骤)?
  答:lamport逻辑时钟与向量时钟都是逻辑时钟,不过lamport不能捕捉因果关系,向量时钟可以。
  向量时钟的工作原理:(1)每个进程Pi都有一个向量VCi[1,...,n],VCi[j]代表进程pi知道在进程pj发生的事件数;(2)当pi发送一个消息m,VCi[i]就加1,并发送VCi与m一起作为向量时间戳vt(m)。结果:到达后,接收方会知道Pi的时间戳;(3)当一个进程Pj从pi接收到带有向量时间戳ts(m)的消息m时,①更新每个VCi[k]至max{vcj[k], ts(m)[k]},②VCj[j]加1.

5.如何使用向量时钟,实现因果有序多播?
  
6.分布式系统中,为了访问共享资源,有哪些互斥算法?请从不同角度分析他们的区别?如进出消息数,进入前延迟,存在问题等?
  

一致性和复制

1.以数据为中心的一致性模型,有哪些类型?每一种一致性模型的工作原理?

2.以客户为中心的一致性模型,有哪些类型?每一种一致性模型的工作原理?
  答:有最终一致性、单调、单调写、读写一致性

3.基于主备份的协议的复制写协议,分别有哪些?每种协议的基本原理?
  答:主备份写协议有本地写协议和远程写协议

容错性

1.分布式系统中的故障、错误、失败三种的定义、联系与区别?
   答:故障是指造成错误的原因,错误是指系统状态的一部分,失败是指系统无法完成指定任务或目标。故障会产生错误,错误会导致失败。

2.拜占庭协定问题、拜占庭将军问题的定义、原理、过程、结论?
  答:拜占庭协定问题是在地理上隔开的n个蓝军将军想协力攻打红军,但是n个蓝军将军里有m个叛徒,那么这些忠诚的将军如何才能达到一致的协定?
  拜占庭将军问题的含义是存在消息丢失的不可靠信息途径的前提下,试图通过消息传递的方式,使得所有信息保持一致性是不可能的。
  假定通信信道良好的情况下,必须要实现下面两个充分条件:IC1. 所有忠诚的将军都遵守同一命令,即一致性;IC2. 若发令者是忠诚的,那么每一个忠诚的将军都遵守它发出的命令,即正确性。
  通过口头协定可以来一定程度上解决拜占庭将军问题,即若叛徒数少于将军数的1/3,问题可解。
  口头协议算法过程:
  OM(0)算法:(1) 发令将军将他的命令发送给其他将军;(2) 其他n-1个将军采用从发令将军发来的命令,如果没有收到命令,则默认为撤退命令。
  OM(m)算法:(1) 发令将军将他的命令发送给其他将军;(2) 对于其他n-1个将军从发令将军i那收到命令Vi,如果没有收到,则默认为撤退。i在OM(m-1)中作为发令者将自己得到的命令发送给另外n-2个将军;(3) 对于每个j,和每个k(k≠j),在第二步,j获得从k那里发送过来的命令Vk,如果没有收到该命令,则默认为撤退命令,最后j使用majority(v1, ..., vn-1)得到最终命令。
  majority()函数代表了大多数将军的命令,若不存在则默认为撤退命令。

3.为什么需要两阶段提交,两阶段提交的原理和过程?
  答:在分布式系统中,为了保证数据的高可用,通常系统会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,系统需要保证这些放置在不同物理机器上的副本是一致的。
  第一阶段:a. coordinator发送投票请求给参与者;b. 当参与者受到投票请求时,它将投票提交或者投票中止发给coordinator。如果它发送投票中止,那么它将中止其本地计算。
  第二阶段:a.coordinator收集所有的投票,如果都是投票提交,它就会发送一个全局提交给所有的参与者,否则就发送全局终止;b. 每个参与者等待全局提交或者全局终止,并进行相应的处理。

其他

1.网络文件系统的基本思想,UNIX系统中的基本NFS体系结构和工作过程?有哪些类型的分布式文件系统?
  答:网络文件系统的基本思想是每个文件服务器都提供一个标准化的视图,即并不关心本地文件系统如何实现,每个NFS服务器都支持相同的模型。NFS带有一个通信协议,从而使得允许异构进程访问网络上的文件。
  本地客户端调用VFS接口,VFS根据访问的需求,访问本地文件系统,或者进行远程服务器文件访问。如果是进行远程服务器访问,VFS便会将访问的请求传递给一个NFS客户端,然后客户端通过RPC访问远程服务器的NFS。客户端的访问消息到达服务器后会与客户端与相似的方式传递服务器的VFS,然后由VFS访问本地的文件系统,访问对应的文件。
  分布式文件系统有客户-服务器结构的文件系统、基于集群的分布式文件系统和对称式结构的文件系统。

2.Coda文件系统中的客户端缓存、服务器端复制?
  答:客户缓存:当一个客户端打开一个文件f时,f的副本会被传送到客户端,服务器会记录下客户端具有f的副本。在一个文件的起始状态,如果客户端A以写操作的方式打开某个文件,当另一个客户B也想打开文件F时,B会失败。在一个文件的起始状态,如果其先被客户端A以读的方式打开,随后客户端B试图以写的方式打开,那么B是可以打开,并且可以做修改的。此时A本地的副本是过时的,但是不影响A继续读取他本地的副本。
  服务器端复制要确保并发更新被检测到:每个客户端都有可访问卷存储组,是实际卷存储组的一个子集;版本向量CVVi(f)[j]=k=>服务器Si知道服务器Sj看到了f的版本k。

3.介绍一个典型的基于web的分布式系统,如www?

专题报告

1.大数据处理系统简介

2.Distributed Map/Reduce

猜你喜欢

转载自blog.csdn.net/ThunderF/article/details/108615991