第1章 概述
1. 分布式系统的另一个定义,它是各自独立的计算机的集合,这些计算机看起来像是一个单的系统,就是说,它对用户是完全隐藏的,即使他有多个计算机也是如此。请给出一个实例。
答:并行计算。一个程序在一个分布式的系统中运行,但看起来是在单个系统中运行的。
2.中间件在分布式系统中扮演什么角色?
答:中间件主要是为了增强分布式系统的透明性(这正是网络操作系统所缺乏的),换言之,中间件的目标是分布式系统的单系统视图,即使种类各异的计算机和网络都呈现为单个系统。
3. 很多网络系统组织成后端办公系统和前端办公系统。这种组织方式是如何满足分布式系统要求的?
答:一个比较容易犯错的地方就是假设运行在一个组织下的分布式系统,应该运行在系统的整个组织框架下。实际上,分布式系统被安装在一个分离的组织中。从这层意义上讲,我们的分布式系统可以支持独立的后端处理和前端处理。当然,这两部分可能是耦合的,并不需要要求这个耦合的部分完全透明。
4. 解释(分布)透明性的含义,并且给出各种类型透明性的例子。 答:分布透明性是一种现象,即一个系统的分布情况对于用户和应用来说是隐藏的。 包括:
访问透明:分布式系统中的多个计算机系统运行可能是不同的操作系统,这些操作系统的文件命名方式不同,命名方式的差异以及由此引发的文件操作方式的差异应该对用户和应用程序隐藏起来。
位置透明:从这个url看不出parentice hall的主web服务器所在的位置,同时也看不出index.html的位置情况。 移植透明:分布式系统中的资源移动不会影响该资源的访问方式。
重定位透明:资源可以在接受访问的同时进行重新定位,而不引起用户和应用系统的注意。移动通信用户从一个点到另一个点,可以一直使用移动设备,而无中断连接。
复制透明:对同一个资源存在多个副本这样一个事实的隐藏。所有的副本同名。
并发透明:访问位于同一个共享数据库中的一批表。
故障透明:用户不会注意到某个资源无法正常工作,以及系统随后的恢复过程。
持久性透明:指对转位于易失性的存储器还是在磁盘上的隐藏。许多面向对象的数据库提供直接调用存储对象的方法的功能。
5. 在分布式系统中,为什么有时难以隐藏故障的发生以及故障恢复过程?
答:通常,要探测一个服务器是停止服务还是该服务器的反应变慢这些情况是不可能的。因此,一个系统可能在服务响应变慢的时候报告该服务已经停止了。例如,连接一台繁忙的web服务器,浏览器超时,报告
该web页不可用,这种情况下,用户无法判断该服务器是否真的崩溃了。
6. 为什么有时候要求最大程度地实现透明性并不好?
答:最大程度地实现透明性可能导致相当大的性能损失,从而导致用户无法接受。
例如,许多web程序会不断尝试连接某台服务器,多次失败后才放弃。这种在用户转向另一台服务器之前竭力隐藏服务器短暂故障的企图会导致整个系统变慢。
7. 什么是开放的分布式系统?开放性带来哪些好处?
答:开放的分布式系统根据明确定义的规则来提供服务。开放系统能够很容易地及其它系统协作,同时也允许应用移植到同一个系统的不同实现中。
8. 请对可扩展系统的含义做出准确描述
答:一个系统的可扩展包含下面几个方面:组件的数量、几何尺寸、管理域的数量及尺寸,前提是这个系统可以在上面几个方面进行增加而不会导致不可接受的性能损失。 系统要能在规模上可扩展,即方便的把更多的用户和资源加入到系统中。 地域上可扩展,系统中的用户和资源相隔极远,但仍可访问和使用。管理上可扩展,分布式系统跨越多个独立的管理机构,仍可方便对其进行管理。
9. 可以通过应用多种技术来取得可扩展性。请说出这些技术。