问答题 阅读以下关于分布式系统设计的说明,根据要求回答下面问题。
[说明]
某软件公司拟开发一套电信领域的分布式系统,该系统后台多个功能模块同时运行时的计算负载较大,且需要控制不同的特定电信硬件设备,由于硬件体积和I/O端口冲突等原因,这些设备需要分散安装在多个不同的计算机系统中。该系统上线运行后将为企业最终用户提供7×24小时的不间断服务,而用户的单次接入服务往往需要后台多个模块共同协作完成。基于上述原因,该系统后台软件模块需分布在局域网内的多台计算机上。
项目组决定基于ISO的开放分布进程(ODP)规范来进行系统架构的设计与开发,近期项目组召开了多次会议,对架构设计阶段的关键问题进行了讨论分析。
问答题 ODP从5个标准的视点组织分析系统的架构,这些视点描述了同一系统的不同重要方面,请根据图1中不同视点所关注的核心内容,将备选的架构视点填入图1中的(1)~(5)。
【正确答案】
【答案解析】(1)企业业务架构 (2)逻辑信息架构
(3)计算接口架构 (4)分布式工程架构
(5)技术选择架构 系统架构反映了功能在系统构件中的分布、基础设施相关技术、架构设计模式等,它包含了架构的原则和方法、构件关系与约束,并能支持迭加或增量开发。以软件架构为中心的开发过程是以质量和风险驱动的,最终提供一个稳定、低风险的系统架构,并满足客户的需求(包含潜在需求)。开放分布进程的参考模型(RM-ODP)是一个ISO标准,定义了分布系统的重要性质:开放性、整体性、灵活性、可塑性、联合性、可操作管理性、优质服务、安全性、透明性。
ODP从5个标准的视点组织分析了系统的架构,描述了同一系统的不同重要方面,这些视点包括企业业务架构、逻辑信息架构、计算接口架构、分布式工程架构和技术选择架构。
企业业务架构从IT的角度,对企业的业务结构、企业机构与业务的关系、企业内部的关系以及企业与外部机构的关系进行整理定义。该架构视点关注的核心内容包括:企业的业务和战略目标、近期/中期/长远目标、企业的组织结构、业务对象、业务策略(包含责任、许可、禁止三类明确的表达方式)、各类业务之间的关系、组织机构与业务的关系、企业与外部机构的关系等。
逻辑信息架构(信息视点)标识出系统必须知道什么。该架构通过一个对象模型来表达,强调定义系统状态的属性。该架构视点关注的核心内容包括:信息、对象、信息联合和信息行为等。
计算接口架构定义顶层的应用程序接口,这些是完全工程化的子系统边界的接口。这些接口的架构控制对于一个支持变化和控制复杂性的稳定的系统结构而言,是非常重要的。该架构视点关注的核心内容包括:子系统的一致性、应用程序接口和接口行为等。
分布式工程架构定义了底层结构的需求,而独立于所选择的技术,它很好地解决了包括物理位置、系统规模可变性和通信服务质量等在内的复杂系统策略。该架构视点关注的核心内容包括:软件分配、过程分配和服务质量等。
技术选择架构确定了实际的技术选择,所有其他视点都独立于这些决定。一个系统的选择过程包括初始概念机制的确认、具体机制的标识及最终实际机制的选择。该架构视点关注的核心内容包括:概念性机制、具体的机制和实际的机制等。
问答题 在技术选择架构规划时,王工认为系统应基于现有分布式基础设施(分布式中间件)来构建,因为这样可以充分利用现有基础设施提供的各种支撑,在更短时间内构造出质量更高的分布式系统;而李工则认为可基于基本的进程间通信机制自主开发系统的支撑平台,这样可以避免对特定中间件的依赖,项目组经过认真讨论,最终采用了王工的方案。请用400字以内的文字,从构件管理支持、互操作支持以及公共服务支持三个方面说明现有分布式基础设施为构建分布式系统所提供的基本支撑。
【正确答案】
【答案解析】(1)构件管理支持:现有分布式基础设施一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等
(2)互操作支持:现有分布式基础设施均提供了高层通信协议,以便屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性;基于互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码
(3)公共服务支持:现有分布式基础设施通常将针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序;其提供的常见公共服务包括命名服务、事务服务、安全服务、持久性服务等(答题时可以围绕以上内容进行具体描述, 分布式软件所运行的网络环境具有明显的分布性、开放性、演化性、异构性、并发性等特征,因此分布式软件必须解决互操作、数据交换、分布性、可行性等一系列更复杂的问题。现有的分布式基础设施典型地为三层/多层结构的分布式软件系统提供各种开发支撑,因为三层结构的分布式软件的核心为中间层,所以支撑主要集中在对中间层开发的支撑上。现有基础设施为分布式软件系统提供的基本支持与分布式软件所运行的网络环境密切相关,具体可归纳为提供构件运行环境、提供互操作机制与提供公共服务3个方面,基于分布式基础设施提供的支持,可以在更短时间内构造出质量更高的分布式系统。
(1)提供构件运行环境:现有分布式基础设施均提供构件化的基本支持,支持方便开发与使用符合特定规范的构件(分布式对象)。中间件一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。
(2)提供互操作机制:由于分布式软件跨越了多台计算机,因此跨越网络的交互是每个分布式系统必须解决的首要问题。现有分布式基础设施均集成了早期远程过程/方法调用中间件的功能,提供了很强的高层通信协议,以便屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性。基于中间件的互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。
(3)提供公共服务:除了互操作的支持外,现有分布式基础设施将早期各种中间件中针对分布式软件的通用支持集成于一身,以公共服务(或系统级服务)的形式提供给应用程序。公共服务是指由中间件(应用服务器)实现的、应用程序使用的软件系统中共性程度高的功能成分。与应用程序中开发人员开发的构件实现的功能不同,公共服务通常不实现应用系统中的具体业务逻辑,而是为具体业务逻辑的实现提供共性的支持,而开发人员开发的构件则实现具体的业务逻辑。常见的公共服务包括命名服务、事务服务、安全服务、持久性服务等。
问答题 由于系统后台模块的分布式特性,后台分布式对象之间的互操作机制是需要考虑的核心问题之一。如图所示是当前分布式基础设施中支持分布式对象互操作的基本机制,请将相应部件名称填入图中(1)、(2)处;基于图2给出的结构,用300字以内的文字说明完成一次分布式对象调用的详细步骤。
【正确答案】
【答案解析】(1)存根(或桩) (2)框架(或(1)代理, (2)存根)
一次远程调用过程如下
①客户程序将调用请求发送给客户端桩,对于客户程序而言,桩就是服务程序在客户端的代理。
②客户端桩负责将远程调用请求进行编组并发送给通信总线。
③调用请求经通信总线传送到服务端框架。
④服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
⑤服务程序完成客户端的调用请求,将结果返回给服务端框架。
⑥服务端框架将调用结果编组并发送给通信总线。
⑦调用结果经通信总线传送到客户端桩。
⑧客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果 包括RPC、IIOP、DCOM通信协议、JRMP、RMI/IIOP在内的各种互操作通信协议均可以帮助应用程序完成编组与解组等跨越网络通信的底层工作。尽管这些高层通信协议的具体实现细节不尽相同,但是在实现方式上与开发模式上均采用了RPC中相同的通信模型与类似的开发模式,它们采用的通信模型称为存根/框架(也称为桩/框架,或代N/存根)结构。
在存根/框架结构中,由客户端桩(Stub)替客户端完成与服务端程序交互的具体底层通信工作,客户程序中的远程对象引用实际上是对本地桩的引用;而服务端框架(Skeleton)负责替服务端完成与客户端交互的具体底层通信工作。由于客户端桩与服务端框架分别位于客户端与服务端程序的进程内,因此开发人员开发客户端与服务端程序时,只需分别与本进程内的桩与框架构件交互即可实现与远端的交互,而负责底层通信的客户端桩与服务端框架在开发过程中自动生成而非由开发人员编写,从而为开发人员省去底层通信相关的开发工作。图2中(1)处应填入存根(或桩);(2)处应填入框架。
在存根/框架机制的支撑下,客户程序与分布式对象之间按照以下步骤完成一次远程调用:
①客户程序将调用请求发送给客户端桩,对于客户程序而言,桩就是服务程序在客户端的代理。
②客户端桩负责将远程调用请求进行编组并发送给通信总线。
③调用请求经通信总线传送到服务端框架。
④服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
⑤服务程序完成客户端的调用请求,将结果返回给服务端框架。
⑥服务端框架将调用结果编组并发送给通信总线。
⑦调用结果经通信总线传送到客户端桩。
⑧客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果。