一种corba分布式应用的透明集群化的方法

文档序号:9263527阅读:444来源:国知局
一种corba分布式应用的透明集群化的方法
【技术领域】
[0001]本发明涉及软件构造技术领域,具体涉及对基于CORBA中间件的分布式应用,在服务端和客户端程序都不作任何修改的情况下,将服务端从单一实例转化成多实例集群的方法。
【背景技术】
[0002]分布计算中间件是位于系统软件和应用软件之间的一层软件,它封装了分布式应用共性问题(如数据通信、事务等)的解决方案,应用软件可直接使用,而无需自行提供这些问题的解决方案,从而可以大幅简化应用的开发过程。CORBA(Common Object RequestBroker Architecture)是目前主流、成熟的分布计算中间件规范,已经在电信、工业控制、电子商务、国防等领域得到广泛应用。与普通分布式应用类似,基于CORBA中间件所构建的分布式应用(以下简称CORBA应用)可以划分为服务端程序和客户端程序:服务端程序对外提供可被远程调用的接口,这些接口采用IDL(Interface Definit1n Language)语言定义(以下简称IDL接口),并对外暴露出惟一的地址(以下简称CORBA地址,CORBA地址由IP地址、端口号和对象名称组成);客户端程序通过服务端程序的CORBA地址进行定位,并远程调用服务端程序的接口。
[0003]集群化是数据中心等环境下应对高用户负载的基本手段之一:当运行于单台机器上的软件服务无法有效应对海量用户请求时,将很多服务器集中起来部署同一种软件服务,并且通过负载均衡等手段使得在客户端看来就像是只有一个服务器,从而有效提高服务的负载能力。透明集群化是指在不对服务端和客户端程序进行任何修改的情况下,将服务端从单一服务器转化成多服务器集群;集群的可扩展是指在部署以后,集群中的服务器个数可以在线进行修改,从而适应用户负载的变化。
[0004]虽然在分布计算领域已经存在Glassfish(由SUN公司开发的应用服务器)等应用服务器可以实现服务端的透明可扩展集群化,但是它们针对的是遵循Java EE规范的应用,无法支持CORBA应用。当前,CORBA应用的服务端程序要么是单一实例,要么在集群化时必须对服务端程序进行修改。如何在不修改CORBA服务端和客户端程序的情况下,将服务端从单一服务器转化成多服务器集群,并且使得集群中服务器个数可以在线扩展,是软件构造技术领域需要解决的技术问题。目前尚无公开的技术资料涉及CORBA应用透明可扩展集群化的成果或成熟技术方案。

【发明内容】

[0005]本发明要解决的技术问题是对采用CORBA中间件的分布式应用,如何在服务端和客户端程序都不作任何修改的情况下,将服务端从单一服务器转化成多服务器集群。该多服务器集群能够像单一服务端程序一样对外提供服务,表现为一个统一的逻辑实体,并且集群中服务器的个数可以动态增加,从而显著提高软件服务的负载能力。
[0006]本发明的技术方案是首先构建一个客户端/集群化服务端环境,然后服务入口节点执行集群实例管理程序和请求拦截转发程序,最后客户机使用请求拦截转发程序的地址,执行CORBA客户端程序,完成请求调用。
[0007]本发明包括以下步骤:
[0008]第一步,构建一个客户端/集群化服务端环境,它由多个客户机和一个服务入口节点、多个服务节点构成。客户机、服务入口节点和服务节点是可独立运行的计算机,可以是普通PC机或者服务器。客户机、服务入口节点和服务节点通过网络设备互连。
[0009]除安装有操作系统(例如windows、Linux)之外,客户机还安装了 CORBA客户端程序,CORBA客户端程序向CORBA服务端程序发送请求,多个客户机可以并发执行请求。
[0010]除安装有操作系统(例如windows、Linux)之外,服务节点还安装了 CORBA服务端程序,多个服务节点构成了一个服务集群。CORBA服务程序实例指服务端程序在某台服务节点上的运行实例。服务端程序可以有多个服务实例。
[0011]服务入口节点提供客户请求的分发功能。除安装有操作系统(例如windows、Linux)之外,服务入口节点上还安装有集群实例管理程序和请求拦截转发程序。集群实例管理程序对集群中的多个服务节点进行管理,由初始配置文件、服务状态表、状态更新部件和实例管理接口四个部分组成。初始配置文件是一个XML(extensible Markup Language)文件,描述了所有服务节点中CORBA服务程序实例的地址。服务状态表是一个二维表,描述了 CORBA服务程序运行时地址和CORBA服务程序的当前运行状态(包括已启动、未启动两种状态)。服务状态表共有Idi (k为CORBA服务程序实例的个数,(k多I))。状态更新部件更新服务状态表中的CORBA服务程序实例的当前运行状态。实例管理接口提供增加CORBA服务程序实例功能。实例管理接口接受外部请求,动态对服务状态表中的CORBA服务程序实例的地址进行维护,从而实现集群的动态扩展。
[0012]请求拦截转发程序与CORBA服务程序具有相同的IDL接口,请求拦截转发程序拦截所有来自CORBA客户端程序的请求,并将CORBA服务程序实例的地址返回给客户端。
[0013]第二步,多个服务节点运行CORBA服务端程序,获得CORBA服务程序实例。
[0014]第三步,服务入口节点执行集群实例管理程序,将CORBA服务程序实例加入到服务状态表中;并执行请求拦截转发程序生成请求拦截转发程序的地址。具体步骤如下:
[0015]3.1系统管理员编写初始配置文件,写入所有CORBA服务程序实例的地址;
[0016]3.2服务入口节点执行集群实例管理程序,集群实例管理程序的状态更新部件从初始配置文件中读入所有CORBA服务程序实例的地址;
[0017]3.3状态更新部件为每一个CORBA服务程序实例在服务状态表中新增一行,设置CORBA服务程序实例的当前运行状态为未启动;
[0018]3.4服务入口节点执行请求拦截转发程序;
[0019]3.5 请求拦截转发程序使用 CORBA 中间件的 DSI (Dynamic Skeleton Interface)机制生成请求拦截转发程序的地址,将请求拦截转发程序的地址发送给客户机。
[0020]第四步,客户机从服务入口节点获得请求拦截转发程序的地址,客户机的CORBA客户端程序、服务入口节点的请求拦截转发程序、服务节点上CORBA服务程序实例相互配合完成请求调用。具体步骤如下:
[0021]4.1客户机获得服务入口节点上的请求拦截转发程序的地址;
[0022]4.2客户机执行CORBA客户端程序;
[0023]4.3 CORBA客户端程序向服务入口节点上的请求拦截转发程序发送请求;
[0024]4.4请求拦截转发程序使用DSI机制拦截客户请求;
[0025]4.5请求拦截转发程序从服务状态表中当前运行状态为“已启动”的CORBA服务程序实例中随机选择一行,获得CORBA服务程序实例的地址;
[0026]4.6请求拦截转发程序使用CORBA的Locat1nForward消息将CORBA服务程序实例的地址返回给CORBA客户端程序;
[0027]4.7 CORBA客户端程序使用CORBA服务程序实例的地址,向CORBA服务程序实例发送请求;
[0028]4.8服务节点
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1