分布式系统重点Word下载.docx
- 文档编号:3975725
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:9
- 大小:84.04KB
分布式系统重点Word下载.docx
《分布式系统重点Word下载.docx》由会员分享,可在线阅读,更多相关《分布式系统重点Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
7.什么是垂直分布和水平分布?
各有什么优缺点。
垂直分布是分层的客户服务器模式分布,逻辑上来说,不同的组件分布在不同的机器上。
它的优点是当功能逻辑的和物理的分布在不同的机器上时,每个机器都可以定制,以实现某些特定的功能。
缺点是服务器的负载较重。
水平分布是客户或服务器被物理的分为逻辑上平等的部分,每一部分处理自己完整的数据集,从而达到负载平衡。
每个进程即是客户端,又是服务器,进程的交互式对等的。
它可以分为有结构和无结构两种形态。
它的缺点是每台机器都要运行复杂的进程。
8.Chord系统的结构和无层次名字解析。
节点逻辑上组成一个环,关键字是K的数据项被映射到最小的标识符id-k,被称为k的后继,记为succ(k)。
在实际查找数据项的时候,运行在任意节点的应用程序会调用函数lookup(k),这个函数会返回succ(k)的地址。
然后,应用程序会连接相应的节点,得到数据的副本。
查找不是按照这个环的顺序依次查找,而是在每个节点保存有到达其他节点的捷径,这样查找可以在O(log(N))的时间复杂度内完成。
(N是参与这个覆盖网络的节点数)。
节点如何加入这个系统。
首先要生成一个随机的标示符id。
如果标示符空间足够大,并且生成的随机数足够随机,那么生成的随机数和已经存在的节点标示符相同的概率几乎为零。
然后,这个节点运行lookup(id),查找这个节点的后继,这个succ(id)的地址就会被返回。
那么,新加入的节点就会联系这个后继和它的前趋,并且插入。
当然,系统中的每个节点都保留它的前趋的信息。
最后,现在应该以id为后继的数据从原来的后继中被转移过去。
节点离开。
节点离开很简单。
节点id把离开的信息通知它的前趋和后继,然后把他的数据转移给succ(id)。
9.非结构化点对点体系结构的主要思想,为什么要引入覆盖网络。
非结构化点对点系统主要依靠构建一个覆盖网络的随机算法。
它的主要思想是每一个节点维护一个邻居列表,但是这张表或多或少是以一种随机的方式构建的。
同样,数据项也是随机分布在节点上的。
当一个节点定位某个数据项时,它只能用洪泛法查询整个网络。
很多非结构化的点对点系统的目标是构建一个很像随机图的覆盖网络。
基本的模式是每个节点维护一张邻居表,理想的状态是每个邻居节点是从现在的节点集中随机的选择“活的”节点。
节点表也被称为部分视图。
10.为什么要引入超级对等体?
引入超级对等体有什么好处?
在非结构化的对等系统中,随着网络的增大,定位数据项就成了问题。
因为一个节点只能使用洪泛法定位数据,在某些情况下洪泛还可能被切断。
因此人们考虑利用一些特殊的节点维护数据的索引或者作为代理服务器缓存一些网页供客户端访问,这些节点就成了超级对等体。
超级对等体也可以组成对等网络,这样就成了分层的结构。
普通对等体作为客户端连接到超级对等体。
它们之间的通信通过超级对等体进行。
客户端和超级对等体的关系可以是固定的,这要求超级对等体的可靠性要高,或者通过备份超级对等体实现可靠性;
它们的关系也可以是可变的,客户端可以选择更好的超级对等体。
引入超级对等体使非结构化的系统具有了某种结构,从而解决了数据定位的问题。
11.BitTorrent的原理。
BitTorrent是点对点的文件下载系统。
它的基本思想是当终端用户寻找文件下载时,他可以从其他用户下载文件的数据块,直到这些数据块能够组成完整的文件。
下载用的.torrent文件含有下载特定的文件需要的信息,通常它指向一个跟踪器。
跟踪器实际是一个服务器,上面记录有保存请求的文件的数据块的活跃节点。
一旦确定一个节点上保存有指定文件的数据块,这个节点立刻成为活跃节点,也就是说,它是被迫帮助别人。
这种强迫性是由一个简单的规则确定的:
如果P节点觉察到节点Q下载的数据多于它上传的数据,P就决定降低它向节点p发送数据的速度。
这样节点形成了交易数据的情形。
12.拦截器的定义,基本思想和工作流程。
拦截器是一种软件架构,它会中断正常的控制流,并且允许其他代码(特定的应用程序)执行。
拦截器的基本思想是对象A可以调用对象B的方法,而对象B和对象A不在同一台机器上。
工作步骤:
1)对象A有一个本地接口和对象B的本地接口一样。
对象A只要调用本地接口中的方法就可以了。
2)对象A的调用被转换成通用的对象调用,这是通过对象A所在的机器的中间件提供的通用对象调用接口实现的。
3)最后,通用对象调用被转换成消息,然后通过A的本地操作系统的传输层接口发送出去。
解释:
当客户应用程序对象A调用位于不同机器的对象B后,B.do_something(value)调用转换成诸如invoke(B,&
do_somethinig,value)之类的通用调用。
现在假如B有很多副本,请求级拦截器将要为每个副本调用invoke(B,&
do_something,value)。
只有请求级拦截器才需要知道B的副本的存在,而对象A和中间件不需要和副本打交道。
然后远程对象的调用必须在网络上发送,消息级拦截器负责将远程对象的调用封装成消息进行发送,并在发送的过程中可将消息进行分组拆分发送,在目的地在进行组装。
13.进程和线程的区别和联系。
进程是正在执行的一段程序。
操作系统维护一张进程表,包括CPU寄存器的值,内存映射,打开的文件,计数器信息,优先级等等。
一个重要问题是操作系统要确保每个进程不会有意或者无意的影响其它进程的行为。
也就是说多个进程并发共享一个CPU和其它硬件资源的事实是透明的,通常由操作系统提供这些支持。
这种并发透明的获得有相对较高的代价。
例如,每次进程创建的时候,操作系统要为它分配独立的地址空间,然后初始化内存段(包括数据段清零,拷贝相关程序到代码段,设立一个栈,用来保存临时数据)。
另外CPU在切换两个进程的时候代价也很高,要保存CPU上下文,修改内存控制单元的寄存器和使快表中的地址缓冲无效。
而且,如果内存不能容纳操作系统支持的程序,还要再内存和磁盘之间进行置换操作。
线程和进程一样,要执行独立于其它线程的一段代码。
和进程不同的是,如果分布透明会导致性能的下降的话,线程就放弃。
因此线程只拥有让CPU可以被共享的少量信息。
例如,线程只拥有CPU上下文和少量用于线程控制的信息,比如线程被阻塞的互斥信号量。
因此,保护线程的数据不被同一进程的其它线程非法访问的任务落在了程序开发者的身上。
这种方式有两个含义,一是多线程的程序性能不能比相应的单线程的程序性能差,实际上,很多情况下,多线程的程序性能更好。
二是因为线程不象进程那样受到操作系统的保护,多线程的开发需要开发者付出更多的努力。
14.客户端浏览器使用多线程的好处
一个好处是在用户不必等待浏览器下载完整个页面再浏览。
HTML的主文件下载以后,客户端浏览器可以激活多个线程来处理其它部分。
每一个线程分别建立一个连接,并下载数据。
建立连接和从服务器读取数据可以使用标准的系统调用,当然阻塞的系统调用不会阻塞整个进程。
这样用户只发现图片等元素下载延迟,而可以在等待的同时浏览文档的文字信息。
第二个好处如果Web网页有多个副本,并且分布在不同的服务器上,多线程的浏览器可以使用多个连接连接到不同的副本上,使数据并行的,高效的传输。
当然这要求客户端能处理并行下载的数据,同样需要多线程的支持。
15.从服务器的角度解释多线程。
多线程不仅会大大简化服务器端的代码,而且使得开发服务器代码更容易,使服务器代码可以并行运行,从而获得很高的性能,即使在单处理机环境下。
在现在的多处理机环境下,用多线程实现并行执行变得更加有用。
在多线程的文件服务器中,一个线程叫做调度线程,它负责接收文件操作的请求。
然后服务器选择一个空闲的工作线程(例如阻塞的)来处理这个请求。
工作线程在本地的文件系统上执行阻塞的读操作。
那么线程有可能阻塞等待数据从磁盘返回。
如果线程被阻塞,可以选择另一个线程执行。
例如,可以选择调度器接受更多的任务,或者调度一个准备好数据的工作线程。
16.什么是虚拟化
虚拟化,类似于只有单个处理器但感觉有多个处理器的机制可以扩展到其它资源,导致所谓的资源虚拟化,即只有单个资源,但感觉有多个资源的备份。
虚拟化使应用软件比底层的系统软件和硬件的生命周期更长。
17.虚拟化产生和发展的动因。
在20世纪70年代,引入虚拟化的一个重要原因是让老化的软件能继续在昂贵的大型机系统上运行,这些软件包括各种应用软件和它们开发所支持的操作系统。
在IMB370大型机上部署了一个虚拟机可以移植不同的操作系统,支持各种老化的软件。
后来,随着硬件越来越便宜,计算机越来越强大,操作系统的数量也逐渐减少,虚拟化不太受到关注。
在20世纪90年代后期,由于几个原因,情况发生了改变。
第一是由于硬件和底层的系统软件更新较快,而抽象层次更高的软件(例如,中间件和应用)相对更加稳定。
也就是,应用软件比它所依赖的平台更新更慢。
这就用到了虚拟化。
虚拟化可以把老化的软件移植到新平台上,让心平台即时运行大量的现存程序。
第二是由于网络的普及,很多计算机都联网。
管理员常常要维护大量的,而且是异构的服务器,每一个服务器都运行不同的应用程序,供客户端访问。
同时,各种资源要能够被这些应用程序很容易的访问。
虚拟化能发挥作用。
通过让每个应用程序,可能还包括相关的库函数和操作系统,运行在自己的虚拟机上,而这些虚拟机则运行在同一个平台上。
这种类型的虚拟化能提供很高程度的可移植性和灵活性。
18.虚拟化有哪两种方式。
一种方式是建立一个运行时系统,主要提供用于执行应用程序的抽象指令集。
指令可以被解释或仿真,仿真要模拟系统调用的行为。
这种类型的虚拟化被称为单进程虚拟机。
另一种方式是建立一个完全屏蔽原来硬件的系统层,它能提供和原来硬件相同或不同的完整指令集作为接口。
这个接口可以同时供不同的程序使用。
这样,就可能在同样的平台上有各种不同的操作系统独立的并发的运行。
这样的系统层通常称为虚拟机监视程序。
它在改善系统的可靠性,安全性和可移植性中越来越重要。
19.迭代服务器和并发服务器
迭代服务器中的服务器进程自己处理请求,并且如果必要的话,自己对请求做出回应。
并发服务器的服务器进程不是自己处理请求,而是启动一个线程或者让另一个进程处理请求,然后服务器进程立即等待下一个请求。
多线程的服务器就是并发的服务器。
20.守护服务器和超级服务器
为了使客户端容易的找到服务器的端口,在运行服务器的每一台机器上运行一个守护服务器进程。
守护服务器进程记录有同一台机器上的服务器进程提供的服务的当前端口。
而守护进程监听一个熟知端口。
客户端首先和守护进程连接,查询到特定服务器的端口,在和它连接。
超级服务器负责监听一些提供互联网服务的熟知端口,当请求到达的时候,它会派生出一个进程处理这个请求。
这个派生的进程在处理完毕后自动退出。
21.状态无关服务器和状态相关服务器
状态无关的服务器不保存它的客户端的状态,有可能保存软状态,也就是仅仅保留一段有限的时间。
状态相关的服务器一直保存客户端的信息,直到显示地被删除。
相对于无状态对服务器来说,它能改善性能。
22.服务器集群的三层架构
第一层是(逻辑的)交换机,它分配客户的请求给服务器。
第二层是应用/计算服务器,有高性能的硬件支持的专门用于提供计算能力的服务器。
也可能是低端的机器,因为有时计算不是瓶颈,而数据的访问是瓶颈。
第三层是数据处理服务器,也叫分布式文件/数据库系统。
为满足数据访问,这些应用通常运行在高速磁盘和大数据缓存(服务器端)的专用机上。
23.举例说明分布式服务器实现的基本思想。
分布式服务器的基本思想是客户端需要一个鲁棒性强的,高性能的,稳定的服务器。
虽然这可以通过一台大型机来实现,但是通过把更简单的机器组成服务器集群,提供透明的访问服务,可能会获得更好的稳定性。
给服务器集群分配一个唯一的连接地址,这个地址是这个服务器集群和外界连接的终生地址。
使用这个地址的节点时集群的接入点。
如果其他节点在本地代理哪儿注册了自己的地址是分布式服务器集群的转移地址。
连接到接入点的流量将被转移到这个转移地址,它就会处理对这个机群的请求。
如果它除了问题,可以很容易的把其他节点的地址注册为转移地址,从而保证系统的稳定性。
为了减轻本地代理和接入点的流量压力,本地代理可以把转移地址发送给客户端,而客户端会记录一个(本地地址,转移地址)的条目。
客户端的应用程序仍然使用原来的本地地址,而底层的支持软件会把这个地址翻译成转移地址。
这样每个客户端都认为他们和一个服务器打交道,实际上,他们在和不同的服务器打交道。
本地代理可以继续和访问这个终生地址的接入点通信,处理其他请求。
24.为什么进行代码迁移?
进程迁移分为几部分?
代码迁移的原因。
一是代码迁移可以提高性能。
早期的代码迁移通常是进程迁移,通过把进程从负载中的机器迁移到负载的轻的机器来改善性能。
把客户端操作的涉及大量数据的数据库操作部分迁移到服务器端会使减少由于操作造成的大量数据网络通信。
客户端有时需要填表,然后表要被翻译成数据库操作的语言。
如果在客户端处理表格,就会避免在网络上传输大量的短信息。
这样不仅使客户端获得更好的性能,而且服务器花更少的时间用于处理表格和通信。
代码迁移还可以通过并行来提高性能。
二是代码迁移可以实现灵活性。
它可以改变原来的分层客户服务器体系,实现动态配置分布式系统。
客户端可以在必要的时候下载连接服务器所需要的标准接口,初始化,然后调用服务器。
这要求下载和初始化代码的协议是标准化的。
这样,客户端可以不必事先安装和服务器通信的软件,而且由于接口是标准化的,可以随时改变客户服务器协议和它的实现。
进程分为代码段,正在执行的程序的指令集。
资源段,对外部资源的引用,例如文件,打印机,设备,其他进程,等等。
执行段,包括进程当前的执行的状态,例如私有数据,栈和程序计数器等。
25.弱可迁移和强可迁移的区别。
1)。
弱可迁移更简单,强可迁移更通用。
2)。
弱可迁移仅迁移代码段和一些初始化数据。
强可迁移要迁移执行段。
3)。
弱可迁移的程序常常从一个确定的开始位置开始执行。
强可迁移的特点是运行的程序可以随时停止,迁移到另一个机器,然后在断点继续执行。
26.进程对资源和资源对机器的访问方式(依赖到什么程度)
进程对资源的三种绑定:
一是通过标识符。
这是最强的绑定。
标识符是URL地址或本地的通讯终端。
二是一种较弱的绑定。
绑定值。
例如标准的库函数。
重要的不是文件名,而是文件的内容对于程序的正常执行很重要。
三是最弱的绑定。
进程仅仅声称它需要某种类型的资源。
例如显示器或打印机等。
资源对机器的绑定:
一是独立的资源。
例如文件,可以和程序一起迁移。
二是密切资源,典型的密切资源是本地数据库和完整的站点。
迁移密切资源理论上是不依赖于机器的,但是迁移它们到另一个环境是不可行的。
三是固定资源。
固定资源是固定在特定机器或环境中,不能被移动,例如本地设备或本地通信端口。
27.文件服务器对线程数量限制的意义。
28.分布式系统中的进程通信和单机中的进程通信的区别。
同步通信和异步通信。
瞬时通信和持久通信。
单机进程通信:
基于共享内存。
分布式系统的进程通信:
基于底层网络提供的通过分层协议进行的消息传递机制。
持久通信:
发送者提交的消息或由通信中间件保存,直到接收方把消息取走。
瞬时通信:
通信系统只有在发送和接收程序都正在运行的时候才可以成功传送消息。
异步通信:
发送方在提交消息以后继续执行,消息在提交后被(暂时)保存在中间件。
同步通信:
发送方在发送消息以后就阻塞,直到得知请求被接受。
有三个同步点。
一是中间件通知它中间件会继续传送请求。
二是接收方通知它已经收到消息。
三是接收方通知它请求已经被完全执行。
持久的同步通信:
例如消息队列系统。
瞬时的同步通信:
例如远程过程调用
29.什么是远程过程调用。
当机器A上的进程调用机器B上的一个程序时,A上的调用进程被暂停,B上的程序开始执行。
通过消息可以传递参数,执行的结果也可以通过消息传递。
而程序员看不看到消息的传送。
这种方法叫做远程过程调用。
30.什么是子程序调用?
传值,传地址,复制还原。
子程序调用通常把返回地址和参数压入栈中。
传值:
值被复制到栈中。
在程序调用中,形参是一个初始化的局部变量,可以被修改。
但是它不会影响调用者的实参。
传地址:
传入的是一些数据的地址,如果在子程序中修改了地址中的数据,原调用者的参数的值也被改变。
复制还原:
调用的时候被调用者拷贝到栈中,就像传值一样。
调用结束后,栈中变量的值被拷贝回去覆盖原来的值。
31.阐述远程过程调用的关键步骤。
远程过程调用的思想是使远程过程调用看起来和本地调用一样。
客户端程序用正常的方式调用客户端的桩。
客户端的桩把调用封装成消息,然后调用本地操作系统。
客户端的操作系统把消息传送给远方的服务器的操作系统。
服务器操作系统把消息给服务器的桩。
服务器的桩把参数解包,然后调用服务器程序。
服务器程序完成相应的工作,把结果返回给桩。
服务器桩把结果打包成消息,调用本地操作系统。
服务器的操作系统把消息传送给客户端的操作系统。
客户端的操作系统把消息给客户端的桩。
客户端的桩解包结果,把结果返给客户端。
32.在远程过程调用中传地址有哪些方法。
一种解决方法是禁止使用指针和引用参数。
然后实际上它们非常重要,这种方法是不可取的。
二是采用复制还原。
把指针指向的对象作为消息发送给服务器桩。
服务器的桩调用服务器进程,使用一个指针指向这个对象,当然这个指针的值和原来不同了。
在服务器处理以后,再把消息返还给客户端的桩。
客户端的桩在把它传给客户端。
如果桩知道这个指针是输入参数或者输出参数,可以优化减少拷贝的次数。
三是把指针按原样传给服务器的桩,然后在服务器的程序中生成一段特殊的使用指针代码。
例如,可能在需要的时候发送请求给客户端,让它提供数据。
33.举例说明为什么使用异步RPC
传统的系统调用中,当客户端调用远程进程以后就会阻塞,直到应答返回。
如果没有结果返回,这种请求-应答机制是不必要的,而且引起阻塞。
它完全可以继续运行,在请求调用远程的程序后做有用的工作。
例如,从一个账户向另一个账户转账,向数据库添加条目,开启远程服务,批处理等等。
34.用图4.12说明DCE对RPC的实现
写客户/服务器程序的第一步是调用uuidgen程序,让它生成含有唯一的接口标示符的IDL原型文件。
标示符的唯一性可以通过在标示符中添加代表位置和创建时间的信息,通常由128位的二进制数字组成。
第二步是编辑IDL文件,添加远端进程和参数的名字。
IDL文件完成后,IDL编译器对它进行处理,生成三个文件:
一个头文件,客户端桩,服务器桩。
头文件含有标示符,类型定义,常量定义和功能原型。
它将包含在客户和服务器的代码中。
客户端的桩含有客户程序将调用的程序。
这些程序负责收集,打包参数,封装成消息,然后调用运行时系统把它们发送出去。
它还负责解包应答,把值返给客户端。
服务器桩含有服务器机器上的运行时系统调用的程序,它能调用实际的服务器程序处理接收的消息。
第三步是应用程序编写者编写客户端和服务器的代码。
它们和两个桩被编译,然后和运行时库链接,生成可执行的二进制代码。
在运行时,启动客户端和服务器,使得应用程序被执行。
35.DCE中客户端和服务器绑定的过程。
首先服务器要注册服务的的机器的地址。
然后服务器上的服务进程要申请端口号,并且把端口号在守护进程上注册。
服务进程还要注册目录服务,提供服务所在机器的网路地址,还有服务的名字。
客户端首先访问目录服务器,目录服务器会返回运行这个服务的服务器的网络地址。
然后客户端和这个服务器的守护进程联络,查询到服务的端口号。
然后客户端直接和这个服务进程通信,开始了PRC的过程。
36.什么是幂等的操作。
幂等的操作可以被操作很多次不会带来伤害。
例如读文件的操作。
37.面向消息的通信相对RPC的好处
RPC要求通信双方必须同时工序,而面向消息则不一定。
38.分布式系统中的地址,标示符和名字的区别。
分布式系统中的名字是一串比特串或者字符串,用来指明一个实体。
实体可以是主机,打印机,磁盘或者文件。
一些实体可以被操作,例如,网络连接这个实体提供发送和接收消息的操作。
为了操作实体,需要一个访问点。
访问点的名字叫做地址。
实体的访问点的地址也叫做实体的地址。
地址通常是对人不友好的。
标示符用来唯一的标示一个实体。
它有三个特点。
一是一个标示符至多指向一个实体。
二是一个实体最多被一个标示符指向。
三是标示符总是指向同一个实体。
39.阐述一个名称用地址,名称和标示符来指定各有什么优缺点。
地址和名字可以被分配给不同的实体,因此地址不能用作标示符。
地址和标示符有不同的用处,但是它们有一个共同点,它们在计算机中都是机器可读模式,对人是不友好的。
它们通常是比特串。
名字是对人有好的,通常是一个字符串。
名字和标示符要被解析成地址。
40.什么是非结构化的命名,非结构化命名的四类解析方法。
很多情况下,标示符是随机的比特串,我们称它为非结构化的名称,或者无层次的命称。
一种是简单地解析。
广播和多播。
前向指针。
缺点:
不易扩展。
二是基于宿主的指针。
宿主保留有实体当前的地址。
三是分布式散列表。
四是分层的方法。
41.UNIX系统中如何实现按名访问
在UNIX的命名图中,目录节点是一个目录文件,而叶节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 系统 重点