基于ORBIX的分布式数据库系统的设计与实现

(整期优先)网络出版时间:2019-10-24
/ 3

要:本文给出了基于CORBA的ORBIX分布式数据库系统结构。在此基础上,就使用ORBIX实现分布式数据库系统的几个关键技术即分布式事务处理、交易服务、会话管理等进行了研究。

关键词:CORBA;ORBIX;分布式数据库;资源管理器;XA接口

ABSTRACT The ORBIX distributed database system architecture is given in this thesis. On this basis, Several key technology such as distributed transaction processing、trader service and session management etc. in the development of distributed database system are researched.

Key Words:CORBA;ORBIX;Distributed Database System ;Resource manager ;XA Interface

物理上分散而逻辑上有集中是分布式数据库系统(DDBS)的最显著的特点。DDBS的实现实际上就是将分布在不同地理位置上的集中式数据库系统通过相应的软件连接起来构成逻辑上统一的数据库系统。而对于任何节点用户来说使用DDBS就好象在使用一个集中式数据库。CORBA规范是目前最为流行的应用最广的分布式对象技术。CORBA的目的是定义一套协议,符合这个协议的对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于什么样的机器和操作系统。从而简化了简化本地与远地对象间的通信,使之以透明的方式实现互连、互通与互操作,免去繁琐易于出错的底层工作,使大型分布软件开发工作相对地提高速度并增加其可靠性[1]

2 相关技术

在分布式数据库应用的设计过程中需要解决分布存储、分布式查询处理、逻辑互联、网络信息传输等问题,其复杂性导致软件开发成本高、开发周期长。所以在开发过程中若能充分利用现有的分布式计算技术,将极大提高分布式数据库的开发效率[5]

(1)CORBA的主要内容包括:IDL接口定义语言、ORB核心、OA对象适配器、IDL桩、IDL构架、DII动态调用接口、DSI动态程序构架接口、GIOP协议[1]

(2)Orbix是IONA公司研制的基于库的CORBA规范实现,支持Windows、OS/2、各种UNIX等20余种操作平台。Orbix是建立在IONA的ART(Adaptive Runtime Technology)技术之上的。ART高效的模块化结构允许在运行过程中添加新的功能模块,只是通过改变配置的设置就可以完成。这样大大的缩减了开发时间[2]

3 基于ORBIX分布式数据库系统结构

如图1为基于Orbix的分布是系统结构。其中每个客户端Orbix对一个客户应用程序,每个服务器端Orbix对应一个服务器应用程序。使用XA接口,使全局事务的提交是由交易服务控制,应用程序只需通知交易服务提交或回滚事务,就可以控制整个事务(可能涉及多个异地的数据库)的全部提交或回滚,应用程序完全不用考虑冲正逻辑。XA协议属于X/OPEN DTP(Distributed Transaction Processing) 模型中的一部分,是中间件产品与数据库之间的标准协议。采用ADO作为数据库连接工具,从而简化了数据库访问的开发过程,数据访问更快捷,支持当前流行的各种数据库格式,有利于使用当前已有的数据资源。

915576829.gif

4 ORBIX分布式数据库系统实现

4.1 分布式事务处理

事务指一个程序或程序段,在一个或多个资源如数据库或文件上为完成某些功能的执行过程的集合。为了支持面向对象、分布式、事务处理应用,实现了(1)对象事务管理器。(2)X/Open XA接口。(3)两阶段提交(2PC)[4]协议。

4.1.1 分布事务管理器

数据库,支持本地事务。当一个应用需要两个或多个资源管理器参与同一事务时,某第三方必须提供必要的协调以保证分布式事务的ACID属性。

应用程序使用事务管理器创建事务。处理期间访问的每个资源管理器都是一个事务的参与者。因而,当应用程序完成事务时,要么一个提交请求,要么一个回滚请求,事务管理器与每个资源管理器联络。

4.1.2 OTS X/Open XA 接口

接口功能:提供管理事务划分(创建和完成)的接口,将事务信息传播给事务参与者和接口,允许应用参与事务。X/Open XA接口用于数据库的集成,以形成数据库的逻辑连接。

如图2所示为客户、应用、OTS及资源管理之间互操作获得ACID属性的过程。

915573232.gif

包括以下步骤:(1)客户与OTS链接并创建一个事务。(2)客户在事务环境中对应用作出调用并更新一些数据。(3)应用程序检测到数据正在被更新并创建一个资源对象,向事务注册资源对象。(4)客户通过与OTS实现联系,试图提交事务。(5)事务开始提交协议。选择哪种协议(1PC或2PC),依据向事务注册资源对象数量及OTS是否支持1PC优化而定。(6)假定使用了2PC协议,OTS发送一个准备信息到资源。资源存贮足够的信息以防万一失败(例如,通过将改变写入一个日志文件)。资源对象表决提交事务。(7)OTS收集所有资源对象的表决并决定事务的结果。将决定发送到所有的注册资源对象。(8)资源对象根据收到的提交或回滚消息作出必要的改变并将决定保存到日志中。(9)OTS返回结果给客户。

4.2 交易服务

交易服务提供对象的位置和发现的设施。与CORBA命名服务按名字定位对象不同,对象在交易服务中是没有名字的。服务器根据对象所提供的服务类型在交易服务中广告该对象。客户通过查问交易服务定位感兴趣的对象,以查找所有提供特殊服务的对象。客户能够进一步限制只搜索那些具有特殊特性的对象。CORBA交易服务是允许注册具有功能性描述对象的一个交易服务。该服务通过使服务更易定位极大地增加了分布式系统的可伸缩性。

一个交易包含许多描述服务的服务类型。服务器输出一个提议给交易服务,包括其中一个对象对象引用和由服务类型定义的属性值。客户就能按照这些属性使用称为约束(constraint)的过滤器查询交易服务。交易者为客户返回一个服务提议。客户就能使用提议中的对象引用在服务器上调用。

交易服务是构造有效分布式应用的工具。用属性注释服务提议和允许根据这些属性使用约束过滤提议的优点使客户可以选择提议而不会导致每个对象上调用操作的管理费用。

4.2.1服务类型

1)服务类型定义

服务类型是交易服务的一般性描述。包括:类型名:唯一地标识服务类型。②接口类型:定义IDL接口,必须与广告的对象类型相一致。接口类型描述广告的服务IDL签名。接口类型是一个字符串其格式因该是全局名或是一个如上所述服务类型名的接口仓库标示符。当输出一个新的服务时,交易器可使用接口仓库确定广告的对象与接口类型定义的接口一致。一个对象与一个接口一致如果他实现该接口,或它实现该接口的子类。③属性类型:属性类型的集合定义服务提供者的属性。属性类型的定义由名字,值类型和方式组成。值类型是CORBA::TypeCode, 模式表示属性是强制的,还是只读的。强制属性不能删除,只读属性能被删除。④超类型能够从其它服务类型继承过来,封装服务类型共有的行为和特性

2)服务提供者

服务提供者是服务类型的实例。服务提供者特性:①服务类型名使提供者和某一服务类型关联。②对象引用是一个指向为客户提供服务的对象指针。③属性集合描述该服务提供者,并且属性与服务类型定义的属性类型一致。

交易器使用指定的服务类型定义在新的提供者上执行几个确认步骤:

输出者为所有的mandatory property提供值(包括所有从其超类型继承过来的服务类型)对象必须与服务类型定义的接口类型一致。所有属性的值类型必须与服务类型定义的值类型匹配。

4)交易服务组成

交易器依据它所支持的接口具有不同的功能。其接口有Lookup、Register、Admin、Link、Proxy。

①最简单的交易器是Query trader, 只支持Lookup 接口。②简单的交易器不仅支持Lookup接口,而且支持具有Register接口的提供者的输出。③独立的交易者支持简单交易器接口,又支持使用Admin接口的交易器的配置管理。④代理交易器支持独立交易器接口也支持proxy接口。代理交易器本质上为延迟的提供者赋值输出lookup接口,可用于封装遗留系统或作为一种服务提供者工厂。⑤连接交易器支持独立交易器,使用Link接口支持交易器同盟。⑥full-service 交易器组合所有的功能接口。

4.2.2配置和运行交易服务

(1)配置

配置和运行交易服务有几个必须的预备步骤。操作的一般次序如下:

①确定在那台主机上运行主交易服务,那台主机运行从交易服务。②确定主,次端口号,复制器将侦听。③将主机和端口号信息输入到配置中。④配置交易服务以复制或非复制的方式运行。⑤在“预备”模式运行交易服务以获得使客户能够与服务交互的初始引用。⑥将第4步获得的每个引用加到配置数据库中。⑦启动主交易服务及从交易服务

2)运行交易服务

如图3 所示为典型的客户与服务器使用交易器相互交互过程:

915571697.gif

①一个提供者服务器为交易器增加一个服务类型(Printer)。Printer类型描述办公室打印机具有的属性。服务类型名与IDL接口名不同。②打印机服务器创建一个printer_if对象。它输出该对象的对象引用到交易服务作为类型Printer的一个提供者。正常情况下,等待请求到来。③客户过程为一个Printer提供者查询交易服务。④然后客户过程使用在提供者中获得的对象引用调用打印机服务器。

3)交易服务编程

与交易器交互的三个主要步骤:①使用提供者服务器增加一个服务类型。如果交易服务内相应的服务提供者类型不存在,则创建它②使用打印机服务器注册一个服务提供者:例如,创建一个对象,一个IDL接口PrintServer的实例在类型Printer的服务提供者内,向交易服务登记对象引用。服务器就可正常接受对象调用。③ 使用客户获得一个服务提供者。查询交易服务恢复一个服务提供者;使用在服务提供者中指定的对象引用调用服务器上的对象。

4.2.3交易服务实例

从图3交易器包含的提供者集合能够获得多么大量的数据。此外,交易器能够连接起来(联合)为服务提供者相互搜索。这意味着,一个查询需要控制在合理的时间内完成搜索。查询也需要控制返回的数据量。

查询以服务类型名开始。通过使用在一个或多个服务属性上使用一个约束限制搜索适当提供者。也可以指定一些限制因素,包括返回的提供者数量,优先排序,实际返回的属性值。交易服务如何使用这些因素处理一个查询,产生一序列所要的服务提供者。

当交易服务处理一个查询时,缩小在所有相关连的交易器中所有的潜在提供者集合,通过它收集一序列提供者在一起。交易服务使用查询输入确定如下:

①服务名确定一个提供者是否是适当的服务类型。②使用属性约束确定提供着是否与客户指定的标准匹配。③优先顺序确定提供者在序列中的位置。④使用所要的属性确定返回哪个提供者的属性值。

4.3 会话管理

为了清除只有那个客户使用的资源,分布式系统需要是知道客户过程何时结束。在服务器方,基于会话的应用分配资源满足客户请求。为了防止服务器膨胀,必须探测与服务器有关的客户何时完成。

1)租赁框架:租赁插件是Orbix的一个扩展特色,通过探测使用服务器的客户何时停止管理服务器端。使用租赁框架来完成。当一个客户启动时,它能获得某一个服务器的一个租约,周期性的更新。当客户结束,它自动释放租约。如果客户崩溃,服务器稍后会检测到租约过期。在这种方式中,得体的和不得体的客户过程结束都能被检测到。

2)服务器端,租赁框架操作:(1)当一个服务器启动,它自动装载租赁插件。(2)初始化期间,服务器通告租赁,在命名服务中导致一个LeaseCallback对象。(3)每当服务器输出对象引用(IORs),插件自动地以CORBA方式在IOR中增加租赁信息。

3)客户端,租赁框架操作:(1)当客户端启动时,它自动装载租赁插件。(2)插件根据包含租赁细节的IOR检测客户将要调用的对象。插件发起与目标服务器会话获得一个租赁。(3)插件自动地更新需要的租赁。(4)有关客户端关闭:如果客户端正常关闭 ,插件自动地释放租赁。如果客端崩溃,服务器端插件稍后就知道客户最近没有更新的租赁。租赁过期,允许服务器适当地清除。

4)客户端使用租赁插件

客户插件在其生命周期中定期调用命名服务。因此,在运行租赁客户之前,Orbix域应具有一个适当配置的定位器,激活程序,及命名服务准备。使用租赁框架的客户部署需要改变所要做的事情只是它的配置。特别是,插件必须在ORB插件列表中增加插件,并被配置参与绑定。

3)在服务器端使用租赁插件

服务器象租赁服务器那样与插件相互通告租赁。实现服务器 为了在服务器端使用插件,执行下列步骤:(1)实现LeaseCallback接口(2)使用IT_Leasing::Current 跟踪客户会话(3)通告租赁(4)配置服务器端插件

5结束语

本文就利用基于CORBA标准的ORBIX设计和实现分布式数据库系统进行论述。Orbix是IONA公司为实现CORBA规范技术而开发的系列软件。是世界上用于分布式应用最流行的平台。ART高效的模块化结构允许在运行过程中添加新的功能模块,只是通过改变配置的设置就可以完成。这样大大的缩减了开发时间。

参考文献

[1] OMG﹒The Common Object Request Broker: Architecture and Specification,Revision 3.0, September 2002.

[2] ION.Orbix 6.2 Documentation.Version 6.2, December 2004

[3]郑振楣等﹒分布式数据库[M]﹒北京:科技出版社,1998年7月

[4]周龙驤等﹒分布式数据库管理系统实现技术[M]﹒北京:科技出版社,1998年7月

[5]张 强等. 基于CORBA的分布式数据库系统的设计与实现.计算机工程,2004年10月