分布式重点文档格式.docx
- 文档编号:1457831
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:11
- 大小:1.02MB
分布式重点文档格式.docx
《分布式重点文档格式.docx》由会员分享,可在线阅读,更多相关《分布式重点文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
用户接口层,用户输入关键字字符串,然后显示出Web网页的列表;
数据层:
后端是由一个巨大的Web网页数据库组成,这些Web网页是预取的,且已加索引;
处理层:
搜索引擎的核心,把用户的关键字字符串转换成一个或多个数据库查询程序,经数据库查询返回结果的排名列表,并把该列表转换成HTML页面列表。
数据层的数据往往是持久的,也就是说即使应用程序没有运行,数据也会保存在某个地方以供日后使用,数据层往往在服务器端实现。
在很多基于商业的环境中,数据层组织成一个关系数据库,这里,数据的独立性很关键。
数据组装成与应用程序无关的,数据组织结构的改变不会影响应用程序,应用程序也不会影响数据组织结构。
6.瘦客户、胖客户各自的好处
瘦客户:
客户端软件不放在终端用户机上,而是让大多数的处理操作和数据存储在服务器端完成。
相反就是胖客户。
瘦客户是近来的一种趋势,尽管胖客户客户机可以做不上工作,但他们问题也更多,难以管理;
把太多的功能放在客户机上,使得客户机更容易出错,且更依赖于客户端的底层平台(如操作系统和资源)。
而瘦客户配置更容易,可以使得用户接口不那么复杂,获得客户可察觉的性能。
7.垂直分布性、水平分布性概念、主要优点
垂直分布性指的是按逻辑把不同组件放在不同的机器上。
(例如客户-服务器)
垂直分布性有助于:
功能可以从逻辑上和物理上分割在多台机器上,每台机器按特定的功能组进行定制。
横向分布则处理多台机器上的一个层的分布,例如一个数据库的分布。
水平分布性的分布式系统中,客户或服务器可能在物理上被分割成逻辑上相等的几个部分,但每个部分都操作在整个数据集中自己共享的部分,从而实现负载的平衡。
(例如点对点系统)
8.Chord系统(结合第五章p136)
9.非结构化的点对点体系结构的基本思想
非结构化的点对点系统主要依靠随机化的算法来构造覆盖网络。
其主要思想是,每个结点维护一个邻结点列表,但这个列表是以一种或多或少为随机的方法来构造的。
同样,数据项也是假定随机地放在结点中的。
因此,当结点要定位某个特定的数据项时,它所能有效地做的唯一事情就是用一个查找查询来泛洪该网络。
10.超级对等体,为什么引入超级对等体,点对点的缺点。
在非结构化的点对点系统中,随着网络的增大,相关数据项的定位会变得越来越困难。
因为不存在一种确定的方法把查找请求路由到特定的数据项,结点只能泛洪该请求。
泛洪的危害很多,从而可以使用能收集一些结点信息(资源使用情况)的代理程序,就可以快速地查找到自己需要的结点。
这些能维护一个索引或充当一个代理程序的结点通常称为超级对等体
超级对等体通常也是组织在点对点系统网络中,形成一个分层组织结构。
11.图2.14,BitTorrent的工作原理
BitTorrent是一种点对点的文件下载系统,基本思想:
当一个终端用户要查找某个文件时,他可以从其他用户那里下载文件块,直到所下载的文件块能够组装成完整的文件为止。
要下载一个文件,用户需要访问一个全局目录(一些知名Web站点中的一个)目录中含有指向名为.torrent文件的引用得到F的.torrent文件,它含有要下载特定文件的信息,指向一个跟踪器tracker(通常每个文件只有一个tracker),这是一个服务器,它保持有活动结点的精确记录,而这些结点具有所请求的文件块。
一个活动结点就是当前正在下载另一个文件的结点。
一旦结点F确定了从哪里下载文件块,下载结点就变成了活动的,此时它就会被强制为其他结点服务。
12.中断器(拦截器)图2.15原理,能画出。
中断器只不过是一种软件结构,它能中断正常的控制流,从而允许其他(应用程序特定的)代码运行。
客户应用程序
应用程序存根
无中断调用
对象中间件
本地操作系统
消息级中断器
请求级中断器
被中断调用
13.进程和线程的区别与联系
进程一般定义为执行中的程序,也就是当前在操作系统的某个虚拟处理器上运行的一个程序,多个进程并发共享一个CPU及其他硬件资源这样一个事实是透明的。
操作系统需要硬件支持来实现这种隔离。
进程不能太多,进程的切换也不可太频繁。
如果操作系统支持同时运行的进程数目超出主存容纳能力,则必须在切换进程之前先在主存和磁盘之间进行交换。
每创建一个进程,操作系统都要分配一个完整独立的内存空间地址空间。
两个进程的切换,CPU开销很大,要保存CPU环境,修改内存管理单元的寄存器,将位于转换后备缓冲器(TLB)中的地址转换缓存内容标记为无效。
进程是进行资源分配和调度的一个独立单位
线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)
线程可与同属同一进程的线程共享进程所拥有的全部资源
线程的切换开销很小
14.论述客户端服务器与客户端浏览器采用多线程带来的好处,如果在浏览器上不采用多线程,哪些功能实现不了,采用多线程,能实现哪些功能。
多线程客户,用户不必等浏览器取得整个页面的所有组件就能够查看页面。
以多线程客户的模式来开发浏览器,只要取得了主HTML文件,就可以激活多个独立的线程,他们分别负责取得页面的各个部分,每个线程都与服务器建立一个独立连接以获得数据,只要导致阻塞的调用不会将整个进程挂起,则与服务器建立的连接和读取数据的过程就可以使用标准系统调用来编制。
在浏览页面期间,用户只会注意到图像等内容显示上的延迟,但是可以对文档进行浏览。
还可以把WEB页面复制到多台服务器上,这样多线程客户就可以与不同的服务器副本建立连接,这样就可以并行地进行数据传输了。
15.以文件服务器为例说明,服务器采用多线程会带来什么样的好处。
多线程技术能显著简化服务器代码,还能够运行并行技术来开发高性能服务器。
单线程文件服务器中,服务器获得请求,检验该请求,执行请求至完成,再接受另一个请求。
在执行过程中,服务器空闲,CPU资源浪费。
多线程服务器中,。
。
16.什么是虚拟化,概念。
虚拟化本质上是扩展或替换一个现存界面来模仿另一个系统的行为
17.虚拟化技术产生和发展的动因,带来的好处,意义。
20世纪70年代,提出虚拟化的重要原因是让老的软件可以在新的昂贵的大型机上运行(这些老的软件包括应用软件以及运行这些软件的操作系统)。
但是随着硬件变得便宜,计算机功能更强大,并且操作系统种类变少,虚拟化变得不再那么重要。
然后从20世纪90年代以来,虚拟化技术又出现一次新的变化
1)尽管硬件和底层系统软件变化得比较快,高层软件(比如中间件和应用软件)却稳定得多。
虚拟化技术可以通过移植旧有软件的底层接口到新平台,使得旧有软件能运行在新平台上,另外也是的一大类的现有软件可以立刻在新平台上使用
2)互联网的发展,网络无处不在。
存在很多网络互连的不同的服务器,每个服务器运行不同的应用程序。
虚拟化可以通过让每个应用程序运行在自己的虚拟机上,平台和机器的种类可以减少。
3)虚拟化提供了高度的移植性和灵活性。
这些移植性的好处是的虚拟化成为分布式系统的重要机制。
18.虚拟化采用的两种方式:
1)进程虚拟机:
构建一个运行时系统,实际上提供一套抽象指令集来执行程序。
指令可以被翻译执行(像JRE),也可以仿真执行(像Unix平台上运行Windows程序)。
2)虚拟机监视器:
提供一种系统,把它做成一层完全屏蔽硬件但提供同样指令集的界面,这个界面可以同时提供给不同的程序。
结果,可以有多个不同的操作系统独立并发地运行在同一平台。
(VMware)
19.迭代服务器、并发服务器
迭代服务器:
自己处理请求,并且在必要的情况下将响应返回给发出请求的客户
并发服务器:
并不自己处理请求,而是将请求传递给某个独立线程或者其他进程来处理,自身立即返回并等待下一个输入的请求。
(多线程服务器属于并发服务器的一个特例;
并发服务器的另一种实现形式:
每收到一个请求都派生一个新进程去处理,由处理请求的进程或者线程负责向发出该请求的客户返回响应(例如许多UNIX系统中))
客户机
服务器
20.图3.11,利用守护程序进行客户-服务器绑定、使用超级服务器进行客户-服务器绑定的区别。
2.请求服务
图a
1.请求端点
注册端点
客户
守护程序
端点表
2.连续服务
实际的服务器
图b
1.请求服务
为请求服务创建服务器
超级服务器
图a利用守护程序进行客户-服务器绑定:
在每台服务器机器上运行一个特殊的守护程序,该程序负责跟踪该服务器上每项服务所使用的当前端口,另外还监听一个已知的端口。
用户通过这个已知端口与守护程序进行联系,请求得到指定服务器的端口号,然后再与该服务器进行联系。
图b使用超级服务器进行客户-服务器绑定
在服务器系统中,一般同时运行多个服务器(如果每一项服务都由单独的服务器来实现,会造成对资源的浪费),这些服务器大多被动地等待客户端的请求。
与其对这么多被动进程进行跟踪,不如由一个超级服务器来负责监听所有与这些服务关联的端点。
当收到请求的时候,它派生一个进程以对该请求进行处理,这个派生出的进程在处理完毕后将会自动退出运行。
21.状态无关的服务器、状态相关的服务器
状态无关服务器:
不保存其客户的状态信息,也不将自身的状态变化告知任何客户(例如WEB服务器),特别,在很多状态无关设计中,服务器实际是维护客户信息的,但是即使这些信息丢失,也不会打断所提供的服务。
(有一种特别的状态无关设计:
服务器维护一种叫软状态的信息,服务器会维持客户状态,但仅持续一小段时间,时间到期后就删除相关客户信息,恢复到无状态行为。
)
状态相关服务器:
一直保存客户端的信息知道显式的删除。
典型例子:
文件服务器:
:
客户保留文件的本地副本,服务器维护一张<
客户,文件>
表,利用该表来跟踪目前哪些客户拥有对哪些文件的更新许可,并且跟踪哪里的文件的版本是最新的。
比较:
状态相关设计一个重要的好处是性能提升。
例如上例对于客户端可以提升读写操作的性能。
状态相关缺陷:
如果服务器崩溃,必须将自身的整个状态恢复到崩溃之前;
而状态无关服务器则只要简单地重新启动运行服务器,然后继续等待客户请求就行了。
22.服务器集群三层架构,每一层的所起的作用,图3.12
客户请求
逻辑交换机(可能多个)
应用/计算服务器
分布的请求
第二层
第一层
分布式文件/数据库系统
第三层
第一层:
一个逻辑上的交换机,由它分配客户请求给服务器。
(交换机区分请求的服务,转发给正确的服务器,实现服务器集群的透明性)
第二层:
应用处理服务器
第三层:
由数据处理服务器组成,也就是文件和数据库服务器
23.举例说明分布式服务器实现的基本思想、、图3.14说明分布式服务器
认为服务器地址为HA
认为已连接到X
认为X的地址为CA1
客户1知道它是X
地址为CA1的访问点
地址为CA2的访问点
客户2知道它是X
认为X的地址为CA2
基本思想:
客户可以使用一个可靠的、高性能的、稳定的服务器。
通过透明地组合简单的机器成为一个集群并且不依赖单台机器的可用性,有可能达到比单个组件更好的稳定性。
在这种系统中如何实现稳定的访问点。
利用MIPV6的思想:
一个移动结点处于一个宿主网络中,并有稳定的地址,称为宿主地址。
当移动节点不在宿主网络中,宿主代理会处理发送给该移动节点的网络包。
移动结点在其他的网络时,注册一个临时地址并通知宿主代理。
宿主代理就会将网络包转发给这个临时地址。
(与移动结点通信的应用程序只会看到宿主地址,而看不到那个临时地址)
在分布式服务器中,给服务器集群分配一个唯一的联系地址(与外界通信的地址),分布式服务器中有一个结点作为联系地址的访问点,访问点在宿主代理注册自己的地址为临时地址,这样所有的网络包都会导向访问点,若访问点失效,另一个访问点会代替并注册一个新的临时地址。
所有的网络流量都会通过宿主代理和访问点,这样就需要路径优化。
假设一个移动结点的宿主地址为HA,当前的临时地址为CA,宿主代理将CA转发给客户,客户将<
HA,CA>
存储在本地。
这样会直接与CA进行通信。
客户端的应用程序APP依然使用宿主地址HA连接,而MIPV6的底层软件会将这个地址翻译为CA,实际的通信也为CA。
路劲优化可以用来使不同的客户认为它们在和同一个服务器通信,如图中所示,不同的客户将会直接和分布式服务器的不同成员通信,而每个客户的应用程序却觉得服务器地址是HA。
24.为什么要代码迁移?
1)提升性能:
传统上,进程迁移,把进程由负载较重的机器上转移到负载较轻的机器上,可以提升系统的总体性能现代分布式系统中,减少通信量相比计算能力的优化更为重要,可以通过将客户应用程序的一部分迁移到服务器上运行,或者将服务器的一本分迁移到客户端上。
例如:
客户服务器系统中,如果客户应用程序需要大量数据的数据库操作,则先将应用程序的一部分搬到服务器上运行,而只将结果通过网络传送,避免大量的数据传输。
另一种是交互式数据库应用程序中,先在客户端处理客户填写的表单,再将处理好的表单发送给服务器,避免传输大量的较小信息。
代码迁移能带来灵活性:
传统的构建分布式系统的方法是将应用程序分为不同部分,预先确定每一个部分应用在何处执行。
如果代码可以在不同的机器之间移动,就可以动态的配置分布式系统。
2)
25.进程迁移,进程分成哪几个部分
代码段、资源段、执行段
代码段:
包含构成正在运行的程序的所有指令
资源段:
包含指向进程需要的外部资源的指针
执行段:
用来存储进程当前执行状态量,包括私有数据、栈、程序计数器等。
26.强可移动性、弱可移动性的区别
弱可移动性:
可以只传输代码段以及某些初始化数据。
特征:
传输过来的程序总是从预先定义的几个位置之一开始运行。
强可移动性:
除了代码段之外,还可以传输执行段。
中断运行中的进程,然后将它转移到另一台机器上去,可以再从中断的位置继续执行。
强可移动性比弱可移动性强大,但是更加难以实现。
27.进程对资源的绑定方式,资源对机器的绑定方式。
进程对资源的依赖程度、资源对机器的依赖程度
进程对资源的绑定方式:
按标识符绑定(最强的绑定方式),进程使用资源的标识符来引用资源(例如URL、FTP等)
按值绑定(较弱的绑定方式),进程只使用资源的值(例如C程序、Java程序,依赖标准库)
按类型绑定(最弱的绑定方式),进程只指明它需要哪一种类型的资源(例如打印机、监视器等本地设备)
28.对文件服务器中的线程数目进行限制有意义吗?
有。
原因有两个:
(1)线程需要内存来设置他们的私有堆栈。
因此,线程太多可能导致消耗过多的存储器。
(2)更严重的情况是,对于一个操作系统,独立的线程是以无序的方式在运行。
在虚拟存储器系统中,
构建一个相对稳定的工作环境可能比较困难,从而导致许多的页错误和过多的I/O操作,结果可能
导致系统性能的下降。
29.分布式系统中的进程通信与单机中的有何区别。
单机进程:
进程都有独立的内存空间,进程之间的通信是由本级操作系统内核来控制的。
通信的方式有管道机制、消息队列、信号、共享存储、套接字。
分布式进程通信:
是基于底层网络提供的底层消息传递机制的,如果进程A要和B通信,A首先在自己的地址空间中生成消息,再执行一个系统调用,通知操作系统将该消息通过网络发给B。
为避免混乱,则必有有传输的协议。
30.同步通信和异步通信的区别
同步通信:
发送消息时,发送方将被阻塞,知道知道其请求被接受。
发送方被阻塞,直到中间件通知它请求传输已完成发送方为同步化,直到其请求被传送给接收方发送方一直等待其请求被完全处理,直到接收方返回一个响应,实现同步化。
异步通信:
发送方在提交要传输的消息后立即往下进行,也就是说消息在提交后立即在中间件(临时)存储起来。
31.瞬时通信和持久通信的区别
持久通信:
提交传输的消息一直在通信中间件中存储,直到该消息被传送给接收方为止。
(例如电子邮件系统)
瞬时通信:
通信系统只有在发送和接收应用程序正在运行时才存储消息。
(也就是说,如果传输中断或者接收方当前不在活动状态,中间件就选择丢弃消息),通常传输层通信服务只提供瞬时通信。
32.什么是子程序调用,什么是普通的过程调用,什么是传值,什么是传地址、复制还原调用。
子程序调用:
能被其他程序调用,在实现某种功能后能自动返回到调用程序中去的程序。
其最后一条指令一定是返回指令,故能保证重新返回到调用它的程序中去。
也可调用其他子程序,甚至可自身调用(如递归)。
常规过程调用:
调用方将参数压入堆栈,然后被调用方进行操作,完成操作后将返回值放在某个寄存器,移出返回地址,然后将控制权交回给调用方,随后调用方将参数从堆栈中取出。
传值调用:
使用的是参数的一份拷贝,调用过程中修改参数值的拷贝不影响该参数原来的值
传地址(引用调用):
参数是指向某个变量的指针,而不是该变量的值,调用过程会修改原变量的值。
复制-还原调用:
调用方将变量复制到堆栈中(同传值调用),在调用完毕之后将堆栈中的变量复制回去,覆盖该变量原先的值。
(结果与引用调用相同,但是如果同一个参数在参数列表中出现了多次就会造成不同)。
33.远程过程调用的关键步骤
1)客户过程以正常的方式调用客户存根
2)客户存根生成一个消息,然后调用本地OS
3)客户端OS将消息发送给远程OS
4)远程OS将消息交给服务器存根
5)服务器存根将参数提取出来,然后调用服务器
6)服务器执行要求的操作,操作完成后将结果返回给服务器存根
7)服务器存根将结果打包成一个消息,然后调用本地OS
8)服务器操作系统将含有结果的消息发送回客户端OS
9)客户端OS将消息交给客户存根
10)客户存根将结果从消息中提取出来,返回给调用它的客户过程
34.在远程过程调用中传递指针、传地址有哪些方法
1)如果指针指向的是一个字符数组,假设还知道该数组大小,则可以将数组复制到消息中,发送给服务器,服务器操作完之后,通过服务器存根将原先的消息传回给客户存根,客户存根再将它复制回客户进程。
(实际上是利用复制-还原调用代替引用调用)。
2)如果数组对服务器来说是输入参数,就不需要将数组复制回客户存根,如果是输出参数,那么客户存根发送消息时就不用加进数组。
3)目前,还无法处理一般意义上的指针。
(即指向任意数据结构,例如复杂图像的指针)
35.举例说明为什么引入引入RPC、异步RPC与同步RPC的区别.
分布式系统中进程间采用显式消息交换,消息的发送和接收过程无法隐藏通信的存在。
分布式系统中实现访问透明性需要隐藏通信的存在,远程过程调用可以很好的解决这个问题。
常规的RPC过程中(即同步RPC),客户调用远程过程,客户调用远程过程时,将会阻塞,直到服务器端返回过程调用的结果为止。
异步RPC,服务器在接收到RPC请求后立即向客户应答,之后再调用客户请求的过程。
客户只需要接收到服务器已经接收的确认消息后,就可以继续向下执行。
(图4.10)
36.如何实现RPC图4.12
37.图4.13客户-服务器的绑定过程。
38.什么是幂等操作,在实际应用中的背景P26.
如果某个操作可以重复多次而无害处,则称为幂等的。
例如读取文件中某个块;
如果服务器崩溃导致一个幂等的RPC失败,那么客户可以等待服务器重启完毕后再次进行尝试。
39.面向消息的通信相对于RPC有什么好处
RPC和远程对象调用(RMI)有助于隐藏分布式系统中的通信,增加了访问的透明性。
但它们不能保证发出消息时接收端一定正在执行,而且RPC和RMI同步的特性也会造成客户在发出的请求得到处理之前被阻塞。
而消息传递机制可以解决以上这些问题,不需要客户和服务器协同工作。
面向消息的中间件模型一般提供持久异步通信,用在RPC不适用的场合。
(主要用来协助将高度分散的数据库集成进大规模信息系统中,其他还有电子邮件系统等)
40.地址、标识符、名字的概念、区别。
名称:
由位或字符组成的字符串,用来指向一个实体。
名称和实体当前的位置无关,好记但可能不唯一
地址:
对实体进行操作就需要访问实体,就需要访问点,访问点的名称就是地址。
一个实体可以有多个访问点,例如一个人有多个电话号码,电话号码相当于地址。
(用访问点的地址作为相关实体的常规名称很方便,但不灵活与用户不友好)
标识符:
唯一标识实体的名称。
1)一个标识符最多引用一个实体2)每个实体最多由一个标识符引用3)一个标识符引用同一个实体。
标识符可以用来引用实体。
41.什么是非结构化的名称,有哪些方法能解析这些名称。
非结构化的名称(无层次的名称):
不包含任何有关如何定位其相关实体的访问点的信息。
(标识符)
解析非结构化的名称:
也就是说当只给实体的标识符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 重点