分布式系统原理与泛型考博整理Word文档下载推荐.docx

上传人:b****6 文档编号:17409058 上传时间:2022-12-01 格式:DOCX 页数:43 大小:1.88MB
下载 相关 举报
分布式系统原理与泛型考博整理Word文档下载推荐.docx_第1页
第1页 / 共43页
分布式系统原理与泛型考博整理Word文档下载推荐.docx_第2页
第2页 / 共43页
分布式系统原理与泛型考博整理Word文档下载推荐.docx_第3页
第3页 / 共43页
分布式系统原理与泛型考博整理Word文档下载推荐.docx_第4页
第4页 / 共43页
分布式系统原理与泛型考博整理Word文档下载推荐.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

分布式系统原理与泛型考博整理Word文档下载推荐.docx

《分布式系统原理与泛型考博整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《分布式系统原理与泛型考博整理Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。

分布式系统原理与泛型考博整理Word文档下载推荐.docx

对同一个资源存在多个副本这样一个事实的隐藏。

所有的副本同名。

并发透明:

访问位于同一个共享数据库中的一批表。

故障透明:

用户不会注意到某个资源无法正常工作,以及系统随后的恢复过程。

持久性透明:

指对转位于易失性的存储器还是在磁盘上的隐藏。

许多面向对象的数据库提供直接调用存储对象的方法的功能。

5. 

在分布式系统中,为什么有时难以隐藏故障的发生以及故障恢复过程?

通常,要探测一个服务器是停止服务还是该服务器的反应变慢这些情况是不可能的。

因此,一个系统可能在服务响应变慢的时候报告该服务已经停止了。

例如,连接一台繁忙的web服务器,浏览器超时,报告该web页不可用,这种情况下,用户无法判断该服务器是否真的崩溃了。

6. 

为什么有时候要求最大程度地实现透明性并不好?

最大程度地实现透明性可能导致相当大的性能损失,从而导致用户无法接受。

例如,许多web程序会不断尝试连接某台服务器,多次失败后才放弃。

这种在用户转向另一台服务器之前竭力隐藏服务器短暂故障的企图会导致整个系统变慢。

7. 

什么是开放的分布式系统?

开放性带来哪些好处?

开放的分布式系统根据明确定义的规则来提供服务。

开放系统能够很容易地与其它系统协作,同时也允许应用移植到同一个系统的不同实现中。

8. 

请对可扩展系统的含义做出准确描述

一个系统的可扩展包含下面几个方面:

组件的数量、几何尺寸、管理域的数量与尺寸,前提是这个系统可以在上面几个方面进行增加而不会导致不可接受的性能损失。

系统要能在规模上可扩展,即方便的把更多的用户和资源加入到系统中。

地域上可扩展,系统中的用户和资源相隔极远,但仍可访问和使用。

管理上可扩展,分布式系统跨越多个独立的管理机构,仍可方便对其进行管理。

9. 

可以通过应用多种技术来取得可扩展性。

请说出这些技术。

可扩展性可以通过隐藏通信等待时间,分布式技术、复制和缓存来获得。

10. 

请解释一下什么是虚拟组织,并给出如何实现这种组织的提示。

属于同一虚拟组织的人或应用,具有访问提供给该组织的资源的权限。

这些资源可能分布在不同的计算机、服务器、数据工具和数据库中。

虚拟组织定义了谁能访问什么。

资源应该保持一个账户用户和访问权限,这通常使用了标准的访问控制机制(类似UNIX中的rwx)。

11. 

当一个事务处理被异常中断,将会恢复到它以前的状态,就像这个事务处理从没有发生过一样。

我们这么说其实是不对的。

请给出一个无法恢复以前状态的示例。

任何情况下,物理端的I/O中断,不能重置。

例如,如果一个进程是来打印文件,文件中的墨汁不能从纸中移除。

12. 

运行嵌套式事务处理需要某种形式的协作,请解释一下协作者真正应该做什么事情?

协作者只需要保证嵌套式的事务中止后,所有的子事务都要被中止。

同样,如果事务都能够被提交,那么就应该协调他们全部都提交。

当协调者告诉嵌套的事务该提交时,事务理解进行提交操作。

13. 

我们讨论过,对普适系统来说,分布式透明性可能并不存在。

这句话并不是对所有的透明性都正确,请给出一个示例。

考虑迁移透明性。

在普适系统中,组件是可移动的,当从一个接入点移动到另一个接入点时,它可被重新连接。

这样的处理应该对用户完全透明。

同样,许多其他类型的透明性也会被支持,然后不该隐藏的是用户可能访问的资源与用户本身所处的环境是耦合的。

14. 

我们已经给出了一些分布式普适系统的示例:

家庭系统、电子健保系统和传感器网络,请再给出这样的一个示例。

考虑在城市或社区中提供大规模的无线网状网络服务的普适系统,它提供无线上网服务,当然这个也为其他服务,比如新闻系统提供了通信基础。

栖息地的监控系统、监狱中的电子监控系统、大型综合体育系统、了解员工状态的办公激励系统等。

普适计算是指在普适环境下使人们能够使用任意设备、通过任意网络、在任意时间都可以获得一定质量的网络服务的技术。

普适计算是在网络技术和移动计算的基础上发展起来的,其重点在于提供面向客户的、统一的、自适应的网络服务。

普适环境主要包括网络、设备和服务:

网络环境包括Internet、移动网络、电话网、电视网和各种无线网络等。

普适计算设备更是多种多样,包括计算机、手机、汽车、家电等能够通过任意网络上网的设备;

服务内容包括计算、管理、控制、资源浏览等。

普适计算具有以下环境特点:

在任何时间、任何地点、任何方式的方便服务,不同的网络(不同协议、不同带宽)、不同的设备(屏幕、平台、资源)、不同的个人偏好等。

第2章体系结构

如果客户和服务器相隔很远,我们可以看到,网络延时将主导整个性能。

我们如何处理这个问题?

这实际上取决于客户端是如何组织起来的。

首先,将客户端的代码切割成更小的部分,这样它们可以单独运行。

这种情况下,当一部分正在等待服务器的响应时,我们可以安排另一部分去做其他的事。

或者,我们可以重新安排客户端的处理过程,让他们在向服务器发送客户请求之后去做其他的事情。

最后有效的解决方案是用单程异步通信取代了客户端-服务器的同步通信。

2. 

什么是三层客户-服务器体系结构?

三层客户——服务器体系结构包括三个逻辑层:

用户接口层、处理层和数据层,每一层在理论上来说都在一台单独的机器上实现。

最高层包括了客户的用户界面,中间层包括实际的应用程序,最底层包含了被使用的数据。

纵向分布与横向分布有什么不同?

纵向分布指的是多台机器组成的多层架构中各个层的分布,通过按逻辑把不同组件放在不同的机器上来获得。

从理论上说,每一层都在一台不同的机器上实现。

横向分布则处理多台机器上的一个层的分布,客户或者服务器可能在物理上被分隔成逻辑上相对的几个部分,每个部分都操作在整个数据集中自己共享的部分。

例如一个数据库的分布。

考虑一个进程链,该进程链由进程P1,P2,…,Pn构成,实现了一个多层客户-服务器体系结构。

进程Pi是进程Pi+1的客户,Pi只有得到Pi+1的应答之后才能向Pi-1发出应答。

如果考虑到进程P1的请求-应答性能,这种组织结构主要存在什么问题?

如果n很大的话性能会很差。

从理论上来说,两个邻接层之间的通信应该在两台不同的机器之间发生。

因此,P1和P2之间的性能由n-2次其它层之间的请求——应答过程决定。

另一个问题是如果链中的一台机器性能很差甚至临时不可达,这会立刻使最高层的性能降低。

在结构化的覆盖网络中,消息是根据覆盖的拓扑结构来路由的,这种方法的主要缺点是什么?

问题是我们处理的是逻辑路径。

很有可能出现的情况是,在覆盖网络中的两个邻居节点A和B,在物理距离上是相距很远的。

因此,A和B之间的逻辑最短路径实际上在底层物理网络上是很长的一条路径。

图2.8中的CAN网络,如何把坐标(0.2,0.3)的节点的消息路由到坐标为(0.9,0.6)的节点?

有几种可能性。

如果我们想要根据欧几里得距离得到一条最短路径需要进过的路径是:

(0.2,0.3)----(0.6,0.7)----(0.9,0.6),距离是0.882. 

另一条路径:

(0.2,0.3)---(0.7,0.2) 

----(0.9,0.6),距离是0.957

7.假设CAN中的一个节点知道其紧邻节点的坐标,一个合理的路由策略是把消息路由给离目的地最近的节点,这样的策略的好处是什么?

从先前的问题可以看出,它不需要去寻找整体最优的路径。

如果节点(0.2,0.3)按照题目要求的策略进行,传送到(0.9,06),它先会将节点发送给(0.7,0.2)。

在非结构化的覆盖网络中,每个节点随机选择c个邻接节点。

如果P和Q都是R的邻接节点,那么P和Q互为邻接节点的概率是多少?

如果网路中有N个节点,如果每个节点随机选择c个邻居,那么P选择Q或Q选择p的概率就是2c/(N-1)。

 

(P从N-1个节点中选择到Q的概率为c/(N-1),同理Q从N-1个节点中选择到p的概率也为c/(N-1),因此总的概率为2c/(N-1))

在非结构化的覆盖网络中,每个节点随机的选择c个邻节点。

要查找一个文件,节点将泛洪一个请求给他的邻接点,这些请求又将再次泛洪,该请求将到达多少个节点?

可到达节点的上界是c*(c-1)(因为,每个节点随机选择c个邻居,只有第一个节点a可以选择c个,第二次洪泛时,每个节点只需要随机选择c-1个,因为a也是他们的邻居,但a已经在洪泛到达的范围内了,因此上限是c(c-1)),但是这我们忽略了节点p同样可以成为其他邻居节点的邻居。

P的一个邻居泛洪信息给不是P邻居节点的概率是1 

减去发送给至少P的一个邻居节点的概率。

这个情况下,泛洪策略将会到达c*q*(c-1)个节点。

例如,c=20, 

N= 

10000 

那么一次查询将会到达的节点数是365.817个节点。

基于概率论中的二项分布原理,在n重伯努利试验中,事件A恰好发生k次的概率为:

,因为p已经选择了Q,所以p最多可以选择Q的c-1个邻居节点作为洪泛的目标节点。

在点对点的网络中,并不是每个节点都能成为超级对等体。

满足超级对等体的合理要求是什么?

首先,节点是高度可用的,因为其他节点需要依赖该节点。

并且,它应该有足够的能力处理各种请求。

最重要的是依靠它能够高效快速的处理任务。

在Bitgtorren系统中,每个节点具有一个带宽为Bout的输出链接,以及一个带宽为Bin的输入链接。

这些节点(称为种子节点)中的一些可以自愿的为其他节点提供下载文件。

如果假设在某个时候,一个BitTorrent的系统最多只有一个种子节点,那么他的最大下载带宽是多少?

这里需要考虑种子节点的输出带宽需要在客户端间共享。

假设有s个种子,N个客户端,每个客户端随机的选择种子。

种子节点结合的输出带宽就是S*Bout 

, 

每个客户端有 

S*Bout/N的直接下载带宽。

另外,如果这些客户端互相协作,每个能够在下载数据块时达到Bout,假定Bin 

>

Bout。

因为tit-for-tat策略,一个BitTorrent客户端的下载带宽主要取决于他的输出带宽。

所以说,整体的下载带宽能够达到S*Bout/N 

Bout. 

(S*Bout/N是从种子节点上直接下载的带宽,Bout是从协作节点上下载的带宽,因为Bin 

Bout成立,所以S*Bout/N 

Bout是可以达到的)

请从技术的角度来解释,为什么BitTorrent中的tit-for-tat策略比因特网中的文件共享要好得多?

大多数的BitTorrent客户端是被例如ADSL或调制解调器所提供的不对称链接所处理的。

一般来说,BitTorrent会提供给客户端比较高的进入带宽,但是并不希望客户端可以提供服务。

BitTorrent不会使用这种假设,把客户端变成协作服务器。

对称连接会比tit-for-tat策略提供更好的匹配。

Bit 

Torrent的工作原理是什么?

BT首先在上传者端把一个文件分成了Z个部分,甲在伺服器随机下载了第N各部分,乙在伺服器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的N部分,这样就不但减轻了伺服器端的负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。

比如说丙要连到伺服器去下载的话可能才几K,但是要是到甲和乙的电脑上去拿就快的多了。

所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。

而且,在你下载的同时,你也在上传(别人从你的电脑上拿那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。

我们给出了在自适应中间件中使用中断器的示例,请问还有其他什么示例?

我们利用拦截器来支持移动性。

这种情况下,一个request-level拦截器在转发请求前,首先将查看它所引用的对象的当前位置。

同样,当安全出现问题时,一个拦截器可以用来透明的加密消息。

另一个例子,如果记录日志是必须的,我们可以简单的插入一个method-specic拦截器在将消息传递给引用对象前,记录该事件。

(中断器类似于struct的拦截器,只是应用在分布式系统场景中而已)

中断器与其部署所在的中间件的依赖程度如何?

一般来说,它们之间是高度依赖的。

客户端很有可能被中间件所提供的下层接口所约束,正如消息级中断器,它高度依赖中间件和本地操作系统的相互作用。

然后,这些接口也可以标准化,便于开发可移植的拦截器,虽然它作为一种特殊类型的中间件。

这些中间件需要满足CORBA的体系结构。

15. 

现代的汽车都装备有电子设备,请给出在汽车中的一些反馈控制系统的示例。

巡航控制系统。

一方面,巡航控制的子系统掌控着当前的速度,当它达到设定要求时,汽车就会加速或减速。

巡航控制系统的设置使驾驶员可以将车速设定在一个固定的速度上,车辆准确地按照所设定的速度行驶。

驾驶员可以不必踩加速踏板,从而大大减轻长途驾车的疲劳,同时匀速行驶也可以减少燃油的消耗。

防抱死制动系统(ABS),当刹车时,它是利用阀体内的一个橡胶气囊,在踩下刹车时,给予刹车油压力,充斥到ABS的阀体中,此时气囊利用中间的空气隔层将压力返回,使车轮避过锁死点。

防抱死刹车系统可以提高行车时,车辆紧急制动的安全系数。

换句话说,没有ABS的车,汽车在遇紧急情况采取紧急刹车时,容易出现轮胎暴死,也就是方向盘不能转动,这样危险系数就会随之增加,很容易造成严重后果。

车用传感器是汽车计算机系统的输入装置,它把汽车运行中各种工况信息,如车速、各种介质的温度、发动机运转工况等,转化成电讯号输给计算机,以便发动机处于最佳工作状态。

16. 

请给出自我管理系统的一个示例,其中的分析组件为完全分布式或隐藏的。

我们已经遇到很多这种类型的系统,在非结构化的点对点系统中,节点间在进行信息交换,如何生成一个拓扑结构。

其分析组件包含放弃那些不会帮助目标拓扑结构收敛的链接。

(无线传感器网络中,自动更新和寻找路由,传递数据)

17. 

请描述一个解决办法,为Globule中的预测复制自动确定最佳跟踪路径长度。

源服务器需要利用Ti到Ti+1的迹线来定期评价策略的预测。

判断该策略是否是实际访问模式所选择的在Ti-1到Ti阶段所使用的策略。

这样可以帮助服务器计算预测误差。

通过改变迹线长度,源服务器能够自动找到预测长度最小的迹线。

这样,就可以自动的确定最佳跟踪路径长度。

第3章 

进程

1. 

比较使用单线程文件服务器读取文件和使用多线程服务器读取文件有什么不同。

花费15ms来接收请求、调度该请求并且完成其它必须的处理工作,假定需要的数据存放在主存储器的缓存中。

如果需要磁盘操作,就需要额外多花75ms在磁盘操作的过程中线程处于睡眠状态。

如果服务器采用单线程的话,它每秒能处理多少个请求?

如果采用多线程呢?

答:

在单线程情况下,命中cache花了15ms,未命中cache花了90ms。

加权平均值为2/3 

15 

1/3 

90。

这意味着请求花了40ms,服务器没秒可以完成25次。

对于多线程,所有磁盘等待都是交迭的,所以每个请求花了15ms,服务器每秒可以处理66个请求。

2.对服务器进程中的线程数目进行限制有意义吗?

有。

原因有两个:

(1)线程需要内存来设置他们的私有堆栈。

因此,线程太多可能导致消耗过多 

的存储器。

(2)更严重的情况是,对于一个操作系统,独立的线程是以无序的方式在运行。

在虚拟存储器系统中,构建一个相对稳定的工作环境可能比较困难,从而导致许多的页错误和过多的I/O操作,结果可能导致系统性能的下降。

3.在文中我们描述了一个多线程的文件服务器,说明了为什么它比单线程服务器和有限状态服务器更好。

有没有这样的环境,在其中使用单线程服务器会更好?

给出这种环境的例子。

如果服务器完全是CPU绑定的,就没有必要使用多线程了。

多线程可能只是增加了不必要的复杂性。

例如,某个地区拥有1百万人口,现要建立一个数据库来保存每个人的一些信息,如(名字,电话号码),假定每个人的信息大小为64字节,则数据库的总大小为64M字节,为了快速查找,应该把这些数据保存在服务器的存储器中。

4.将轻量级进程与单个线程静态关联起来并不好,为什么?

这样的关联将在很大程度上迫使只有一个内核级的线程,这就意味着多线程的性能优势将会被损失掉。

5.如果每个进程只使用单个轻量级进程也不好,为什么?

在这种模式下,我们只能拥有用户级的线程,这意味着任何阻塞系统调用都将阻塞整个进程。

6.描述一种使用与可运行线程数目相等的轻量级进程的方法。

开始只有单个轻量级进程并让它选择一个可运行的线程。

当发现一个可运行的线程后,轻量级进程创建另一个轻量级进程来寻找下一个线程来执行。

如果没有找到可运行的线程,轻量级进程就销毁它本身。

7.X指定用户终端作为服务器,而把应用程序称为客户,这样做可以吗?

可以,尽管看起来有点混乱,思想是服务控制硬件,应用程序发送请求操作硬件。

8.协议X的可扩展性不怎么好,如何处理这个问题?

可以使用分布式技术,缓存、复制等解决此问题(详细需要站看)

9.代理可以通过调用所有副本来支持引用透明性,能否对(服务器端的)对象的副本进行调用?

可以。

假设一个副本对象A调用另一个对象副本B(非副本),如果A包含K个副本,一个B的调用将会被A的每个副本执行,然而,B应该只被调用一次。

这种复制应该采取一些特殊的措施。

10.通过生成进程来构建并发服务器与使用多线程服务器相比有有点也有缺点。

给出部分优点和缺点

一个重要的优点是每个进程都被保护。

在超级服务器处理完全独立的服务的时候是非常有必要的。

另一方面,创建进程的代价也较高,同时,如果进程需要通信,则使用线程在很多情况下将更为简单,因为它避免了用内核来实现通信。

11.粗略地设想一种多线程服务器的设计,该服务器必须使用套接字作为面对底层操作系统的传输级接口,以支持多种协议。

一个相对简单的设计是,使一个单一的线程T等待接收传输层消息(TPDU)。

如果我们假定每个TPDU的报头包含一个数字来识别更高层的协议,这个线程可以把它传递给处理特定协议的模块。

每个这样的模块都有一个专门的线程来处理消息,这些模块把消息看作是一个输入请求。

当处理完这个请求后,一个应答消息被传递给T,这时T将把这个应答封装成一个传输层消息并把它传递给适当的目的地。

12.如何防止应用程序绕过窗口管理器破坏屏幕显示。

使用微内核方法,一个包含窗口管理器的窗口系统通过这个方法运行,因此所有的窗口操作都需要通过这个微内核。

从效果上看,这正是第一章中所讲的把客户端——服务器端模式转换为单计算机的本质。

13.维护到客户的TCP/IP连接的服务器是状态相关的还是状态无关的。

假设服务器没有在客户端上保存其它消息,就可能认为服务器是状态无关的。

问题在于不是服务器,而是服务器的传输层在客户端上保存了状态。

本地操作系统所跟踪的与服务器无关。

14.想象一下,某个web服务器维护一个列表,该列表中的内容是IP地址与该地址最近访问过的web页的映射关系。

当一个客户连接到该服务器的时候,该服务器在列表中查找该客户,如果找到的话就返回注册过的页面。

这个服务器是状态相关还是状态无关的?

是状态无关的。

状态无关设计的主要问题不是服务器是否保存了客户端的任何信息,而是所保存信息的准确度。

在本例中,如果表丢失了,客户端与服务器还能正常的进行交互,就象什么事都没有发生一样。

在一个状态相关设计中,这种交互只有在服务器从错误中恢复过来以后才能进行。

15.在UNIX系统中,可以通过让进程在远程机器上派生出一个子进程来支持强可移植性。

请说明这种机制的工作机理。

UNIX中派生的意思是把父进程的完整镜像拷贝给子进程,这意味着在调用完fork后,子进程继续运行。

一个相似的方法可以用来做远端克隆,这里假定了目标平台与父进程的平台是一样的。

第一步是让目标操作系统为新建的子进程保存资源并创建相应的进程和存储器映射。

这一步完成之后,父进程的镜像可以被拷贝了,子进程也可以被激活了。

(fork:

一个进程,包括代码、数据和分配给进程的资源。

fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。

16.图3.13指出,强可移植性不能与在目标进程中已迁移代码的执行结合在一起。

请举出一个反例。

如果强可移植通过线程迁移发生的话,它就应该能使一个迁移的线程在目标进程的环境中执行。

17.考虑某个进程P,它请求访问与自己位于同一台机器上的本地文件F。

在P迁移到另一台机器上以后,它还需要访问F。

如果文件对机器的绑定是紧固的,如何实现对F的系统级引用?

一个简单的解决方案是,创建一个单独的进程Q,用Q来处理对F的远端请求。

提供给进程P与以前一样的接口。

例如以代理的形式。

从效果上讲,进程Q是作为文件服务器来工作的。

第4章 

通信

1.在许多分层协议中,每一层都有自己的报头。

如果每个消息前部都只有单个报头,其中包含了所有控制信息,无疑会比使用单独的多个报头具有更高的效率。

为什么不这么做?

协议的每一层都必须和其它层相独立。

从第k+1层传送至第k层的数据同时包含了报头和数据,但是第k层协议不能对它们进行辨别。

如果使用单个大的报头来包含所有信息的话将会破坏透明性,使得一个协议层的变动会影响到其它层,这显然不是我们所希望的。

2.为什么传输层通信服务常常不适于构建分布式应用程序?

它们通常不提供分布透明性,这意味着应用程序开发人员需要注意通信的实现,从而导致解决方案的可扩展性很差。

分布式应用程序,例如基于套接字构建的分布式应用程序,将很难移植或者和其它应用程序交互。

3.一种可靠的多播服务允许发送者向一组接收

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1