首页> 中国专利> 用于实现分布式应用程序的计算化方法和系统

用于实现分布式应用程序的计算化方法和系统

摘要

本发明公开一种用于在网络中实现分布式应用程序的计算化方法和系统,包括需要利用计算机进行处理的指令,这些指令可以在网络的不同地点运行。指令包括断言指令和/或释放指令。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-23

    专利权有效期届满 IPC(主分类):G06F9/46 授权公告日:20030723 申请日:19990729

    专利权的终止

  • 2003-07-23

    授权

    授权

  • 2000-11-29

    实质审查请求的生效

    实质审查请求的生效

  • 2000-11-22

    公开

    公开

说明书

技术领域

本发明涉及一种用于在计算机网络中实现分布式应用程序的方法和系统。通常这些应用程序可以在网络的任何地点运行。

本发明的背景

计算机和设备通过网络连接在一起,应用程序在网络中处理和运行。并且已知实现它们的操作所需的不同体系结构和编程语言。常见的编程语言,如Pascal、C或Java,不提供任何用于识别地点需求的标准方法。在经典的分布式计算机应用程序中,这种地点依赖关系由应用程序程序员确定,他们将整个应用程序分解成构成整体所需的各部分,如“客户机”和“服务器”,程序员分别编写应用程序的各部分,并且在所需的地点或装置中安装。应用程序各部分之间的通信可以通过发送消息、远程过程调用实现;或者在使用面向对象的编程语言的情况下,通过远程方法调用实现。

最近代理技术或可移动代码编程技术成为另一种实现分布式系统的方法。该方法不要求在各个不同的地方开发整个应用程序,而是使用简单的语言原语,如“GO(迁移)”指令,将应用程序完全迁移到另一个地方。自从可以用简单的控制流来编写应用程序以来,此类应用程序的编程工作就得以简化。

美国专利5,603,031描述了一种用于分布式计算的系统和方法,该系统和方法基于网络中进程迁移、进程执行和进程交互。通过使用标签以及同时向多个地方的进程发送该代理进程副本的方法,代理进程可以控制其自身由某一地方的进程迁移到另一个地方的进程之中。

用于一般系统的这种简单编程模型有许多限制。优选,虽然一个简单的控制流使设计和实现工作变得简单,但该控制流过于严格以至于不能考虑优化问题,如运行时的并行开发问题。其次,这种体系结构规定了一种固定的地点依赖关系;如果所需的地点不可用,那么应用程序必须停止运行。由于通常情况下在某地运行的程序代码绝大部分是不相关的,所以这种体系结构是不好的。再次,简单的“GO(迁移)”原语只能用于指定地点依赖关系,并且执行“GO(迁移)”原语的地方必须在编译时就确定。

本发明的目的和优点

本发明一个目的是为在网络中实现分布式应用程序提供一种方法和系统。

本发明另一个目的是为网络提供更多的地点灵活性。

本发明再一个目的是为在网络中运行分布式应用程序提供一种简单的方法。

本发明又一个目的是优化网络中的进程。

根据本发明,在网络中实现分布式应用程序的方法和系统,表现出可以得到更高效率的优点,因为只有应用程序中必要的部分才被迁移,并在相应的合适的地方运行,而且只有在必要时才进行迁移。本发明优化了传输时间,连接时间和处理时间,这也意味着成本的减少。另外该方法为处于运行状态的系统提供了足够的灵活性,使系统具有更多的活动自由,即系统可以灵活高效地运行;并且该方法是对严格的体系结构的改进,而严格的体系结构是传统代理编程或可变代码所要求的。这种高效率和灵活性是传统的分布式应用程序编程方法,如客户机/服务器或传统的代理系统,所不能达到的。因此本发明的目标之一就是克服现有技术暴露出来的问题。

在相关的权利要求中包括许多对实现分布式应用程序方法的修改和改进。

当使用地点标识符,或者通过给出用于寻找上述地点标识符的地址来指定地点时,本发明的优点就体现出来,因为本方法允许使用多种地点指定方法。地点标识符包括由地点自身定义的位置;或在该地点运行应用程序所需要的功能;或从可用参数中选择的、用来优化该地点应用程序运行的参数。因此执行应用程序的地点的地址不再局限于某一固定的位置,可供使用的地点选择更加灵活。

本发明使用了附加指令,这些指令包括一个断言指令,该指令可以在任何地方使用并且要求其后续指令在指定地点执行。在另一个地点执行应用程序不再需要任何其他指令,这样就保证了简便、统一和正确运行。“GO(迁移)”指令不再是必须的,这有利于今后的开发和应用。

当应用程序的指令集中包括不同的断言指令时,如ASSERT(声明)、INSIST(坚持)和PREFERRED(首选),该方法的优点就体现在应用程序可以得到更多的灵活性和活动自由。当没有可用的地点来运行应用程序时,第一种断言指令类型(ASSERT(声明))指示一个地点和程序将自行临时暂停运行。另外,在这种情况下,第二种断言指令类型(INSIST(坚持))可能会终止运行应用程序。所以,应用程序的进程将不会等待而直接退出运行。第三种断言指令类型(PREFERRED(优选))通过在原用地点执行后续指令的方法继续运行应用程序,该指令的优点在于即使当前的优选地点不能使用,应用程序也能继续运行。这几种断言指令类型对于分布式应用程序来讲是创造性的和有实用价值的,表现出用于网络中分布式应用程序的本发明方法所具有的灵活性和适应性。

断言指令类型可以指向不同地点中的指定地点,指定地点是可以“随意”选择的,这意味着选择指定地点可以无需任何优先权;另外,在预先设定的按照优选进行排序的序列中,指定地点是有序的可选择的,这就为迁移应用程序提供了许多空间和灵活性。因此网络中应用程序和进程的运行是可以优化和修改的。

处于运行状态的系统可以将应用程序移动到网络中指定的地点,并在指定的地点执行这些指令。对于释放指令来讲,应用程序迁移目标地点的选择,依赖于系统和(或)状态条件。这就为处于运行状态的系统提供了更多的活动自由,此时系统可以使用网络的可用资源。

本发明的技术方案

本发明为在网络中实现分布式应用程序提供了一种通用的灵活的方法和系统。

用于在网络中实现分布式应用程序的本发明描述了一种方法和系统,它允许对位置依赖、设备依赖或服务依赖进行临时声明,并且可以在应用程序中使用以便抽象地、直观地描述所需地点的行为。需要计算机处理的指令包括断言指令和(或)释放指令,这些指令可以在网络的不同地点执行。断言指令指向不同地点中指定的地点,该指令要求其后续指令在指定地点执行。释放指令要求其后续指令不一定在指定地点运行。

现有技术上暴露出来的问题是一个应用程序使用不止一个地点而被认为是合法的,因此位置、设备或服务不是固定的,而是根据分配的地址甚至交换的次数确定,也就是说一个应用程序移动到另一个地点的时间不是事先确定的。

附图描述

下面参照示意性附图详述本发明。

图1是一个根据本发明编写的应用程序的示意性框图

图2是一个具有不同地点和连接的网络示意图

为清晰起见,所有图表即没有按实际尺寸来绘制,也没有按真实比例绘制尺寸间的关系。

本发明的详细描述

下面描述了本发明的多种示例性实施例。

在此介绍两种指令原语,一种是声明地点、设备或服务的可用性或存在性,另一种是解除先前所做的声明。为清楚起见,此处这些原语被称为“ASSERT”和“RELEASE”。这些原语可以紧接地点类型“POSITION”,设备类型“DEVICE”或服务类型“SERVICE”。原语的语法总结如下:

●地点ASSERT(断言)表明紧随ASSERT调用的指令必须在所声明的地点执行。

●地点RELEASE(解除)表明紧随RELEASE调用的指令可以在任何地点执行。

另外还提供了其他原语,如:

●地点PREFERRED(首选)表明紧随PREFERRED调用的指令适合在首选地点执行;

●地点PROXIMITY(相邻)表明要求该地点与给定的地点在物理上或网络上相邻;

●地点LOAD(工作量)表明要求该地点是目前工作量最少的地点;

●地点SPEED(速度)表明要求该地点具有特殊的处理时间或速度;

●地点SECURITY(安全)表明要求以安全模式与给定地点的连接。

根据不同的需求,可以创建和提供更多的原语。因此原语的语法是可以自由选择的。

可以通过地点标识符,或通过给出用于寻找地址标识符的地址来指定地点。地点标识符由地点自身定义的位置,或在此地点运行应用程序所需的功能,或是从可用的参数中选择的,用来优化该地点应用程序运行的参数构成。服务器、设备或服务预定义的位置可以是已知的,因此很容易寻找网络中的地点或对该地点进行编址。

另外功能需求可能来自用户、系统或应用程序。功能需求可以是一特殊设备或具有某一特征的设备甚至是服务,如打印。执行应用程序可能需要能够随机播放的CD播放器或特殊的数学处理器,这些需求可以用功能进行描述,然后在网络中寻找相应的设备。

地点也可以由包含一个参数的地点标识符来指定,如上述LOAD、SPEED、SECURITY之类的参数。系统可以设计成利用参数来选择如何运行应用程序,参数可以是用于优化程序运行的值或值域,这样系统就按预先确定的规定运行,也就是说描述一个预计能实现所需功能的动作。例如,当要求某一地点的工作量要减少的时候,选择参数LOAD对于运行应用程序来讲是最佳的。通常,小工作量可能是处于运行状态的系统进行优化时缺省的首选目标。另外首选目标也可以由程序员、用户或其他人给定。迅速完成工作是一个很自然的目的,所以对于应用程序和用户的需求来讲,尽可能快的速度可能是最佳选择。这样参数可以设为SPEED,让处于运行状态的系统自动设法去寻找具有最高处理速度值的地点。举例如下:

            LOCATIONv=LOCATION(SPEED,min50),

由于将参数SPEED传给处于运行状态的系统,所以系统会寻找具有最快处理速度或者处理速度值至少为50的地点。考虑到安全因素,对于执行应用程序来讲,有一个特殊的认证或在在某一范围内选择安全级别可能是最佳选择。安全级别也可以是相应的某一现行授权。下面是一个带有参数SECURITY的示例,该示例要求查找安全级别为“3”的地点:

            LOCATION s1=LOCATION(SECURITY,“3”)

另一个示例要求查找具有特殊现行授权的地点:

            LOCATION sa=LOCATION(SECURITY,“VISA”)

在下面的示例中,所需要的原语被称为“ASSERT”和“RELEASE”。为清晰起见,在下面的代码段中使用一种简单的自解释语法:

     ∥代码块A

[1]LOCATION a=LOCATION(POSITION,“piot.zurich.ibm.com”);

     [2]a.ASSERT( );

     ∥代码块B

     [3]a.RELEASE( );

     ∥代码块C

在上面的示例中,对某一地点的声明和解除被嵌入到三个标号分别为A、B、C的代码块中。对这些调用的处理可以在编译的时候进行,或者最好象下面假定的一样在运行时进行。

在标号为[1]的代码行中,定义了一个特殊的机器地点。例如,处于运行状态的系统验证所需地点是否存在或者为任何可能发生的通信任务建立通信连接。

在标号为[2]的代码行中,通过ASSERT(断言)指令声明先前定义好的地点。现在处于运行状态的系统将需求解释为,下列指令行(代码块B)将在所声明的地点“piot.zurich.ibm.com”上执行。

在标号为[3]的代码行中,解除了地点限制。这表明处于运行状态的系统,即代码块C,不一定要在先前声明的地点执行。因此处于运行状态的系统现在可以自由地对应用程序进行迁移,并可以在任何其他地点执行紧接于RELEASE后的指令。

类似的,同样的原语可以按第二个示例中对设备的描述来执行,在此,功能作为设备进行描述:

[5]LOCATION d=LOCATION(FUNCTIONALITY,“mpeg_player”);

      [6]d.ASSERT( );

      ∥代码块F

      [7]d.RELEASE( );

示例表明在标号为[5]的代码行中带有地点标识符“mpeg_player”的功能或者设备必须是地点d中可用。在标号为[6]的代码行中,通过ASSERT(断言)指令声明先前定义好的地点d。然后处于运行状态的系统将需求解释为,下列指令行,用代码块F表示,将在已声明地点d中执行,该地点由地点标识符“mpeg_player”指定。在标号为[7]的代码行中,解除了地点限制或者设备限制。这表明处于运行状态的系统即后续指令行不一定要在先前声明的地点执行。

这些原语可能将反馈提供给应用程序以便以合理的退出模式结束应用程序。一条ASSERT(断言)指令可能意味着有一条针对先前声明地点的RELEASE(解除)指令。

现在参照图1,图1是有关应用程序(11.1,11.2,11.3)的一般性示意图,应用程序分别在地点1、2、3执行,更多的细节将根据用点线和箭头所描绘的应用程序(11.1,11.2,11.3)处理过程进行描述。示意图表从左上角的方框开始,该方框在地点1以RELEASE 8作为释放指令。释放指令RELEASE 8要求后续指令9,用块9描述,不一定要在指定地点执行。因此对于处于运行状态的系统来讲,有可能将应用程序11.1迁移到其他地点,如地点2或地点3,或者继续在地点1执行应用程序11.1,如左方框所描述那样。垂直的点线显示应用程序11.1的处理过程。当处于运行状态的系统将应用系统11.1迁移到地点2,确保紧随ASSERT(地点2)4指令的后续指令行在地点2上执行时,在应用程序11.1中紧随块9的断言指令ASSERT(地点2),指定应用程序运行的最新地点。然后处于运行状态的系统将需求解释为,以块5开始的后续指令必须在已经声明的地点2上执行,而不是在地点1上执行。从地点1到地点2的箭头表明处于运行状态的系统将应用程序11.1迁移到地点2的最晚可能。右侧方框左侧的垂直点线也用于显示应用程序11.2的处理过程,该程序位于地点2并在地点2运行。另一条RELEASE 8后续的块9中的指令,这些指令来自地点2中应用程序11.2,是不依赖于地点的,这意味着应用程序11.2可能在地点2以外的地点运行。在断言指令ASSERT(地点3)4之后,应用程序11.2被处于运行状态的系统迁移到地点3(由从地点2到地点3的箭头表示),在地点3应用程序11.3根据块6中的指令运行。块6必须在已经声明的地点3运行,地点3由ASSERT(地点3)4指定。另外,由于ASSERT(地点3)4对块7进行声明,所以包含块7的应用程序11.3不得不迁移到(由从地点3到地点1的箭头表示)已声明的地点1并在地点1运行。接下来在地点1的释放指令RELEASE 8,在左侧方框的下方,会影响应用程序11.1的运行,这是因为释放指令的后续指令,块10所示,被释放并且不一定要在指定的地点运行。此处,应用程序11.1更可能在地点1运行。在最新的描述中,术语“不得不迁移”是指迁移的最迟可能时间,此时处于运行状态的系统不得不迁移应用程序。早一些时间进行迁移是可能的,但不能早于先前的RELEASE指令。

图2是一个带有不同地点和连接的网络20的示意图,其目的是为了更好的理解图1。图2中的方框分别表示地点1、地点2和地点3,图2的地点1、2、3对应于图1的地点1、2、3。点线表明地点1、2、3是连接在一起的并且可能有其他连接。

下面给出两个带有自解释指令代码的典型示例。

示例I:远程DB访问

下面的示例“远程DB(数据库)访问”展示了处于运行状态的系统的动态适应性,这种动态适应性可以提高代码的效率和灵活性,并且对与远程数据库服务器发生交互作用的客户机上的应用程序进行干预。在传统的客户机/服务器系统中,客户端在当地客户机上完成用户界面,而服务器组件驻留在远程数据库中。客户端可能按下面方式实现:

   Print“Name?”   Input user_name   Contact Server   Request server to verify user_name with regard to DB   if(server reports that user_name is already entered in DB)   terminate   else   Print“Address?”   Input address   …

服务器代码(没有列出)另行开发。基于代理的系统有所改进,允许应用程序作为运行时的一个单独线程来开发。一个具有上一个示例同样功能的代理程序可能采用下面的方式实现:

   Print“Name?”   Input user_name   GO DB_server   Check user_name with regard to now local DB   if(user_name is already entered in DB)  Terminate    else   GO client_machine   Print“Address?”   Input address   …

在客户机/服务器和基于代理这两种方法中,对有关数据库的用户名检查必须设定为最高级别的。如果客户的网络环境与数据库服务器的连接临时不可用,那么跳过认证过程和(或)避免忍受两次输入地址数据所带来的不便是最佳选择。使客户机/服务器代码动态调整其行为可能要求对通信和网络子系统具有低级别的访问权限,这不但在程序代码中实现起来很繁琐,而且将妨碍应用程序的灵活性和可维护性。“GO”(迁移)指令过于严格和不灵活以至于不允许有任何改动。

使用原语“ASSERT”和“RELEASE”,让处于运行状态的系统去适应环境就可以解决这一问题。例如:

  LOCATION clientloc=new LOCATION(“Clientmachine”);  LOCATION dbloc=new LOCATION(“DB machine”);  clientloc.ASSERT( );  Print“Name?”  Input user_name  clientloc.RELEASE( );  if(dbloc.PREFERRED( )==GRANTED)   Check user_name with regard to DB   dbloc.RELEASE( );   if(user_name is already entered in DB)   terminate  clientloc.ASSERT( );  Print“Address?”  Input address    clientloc.RELEASE( );

由于这些指令按完整的语法给出,所以此处的代码看上去比前面的例子要长。但是,如果可以给出当前客户机的连接状态,那么处于运行状态的系统可以自由地决定是将代码重新定位在客户的机器上,还是首选的数据库地点上。

示例II:分布式CD播放器

例2“分布式CD播放器”展示了处于运行状态的系统具有如下能力:可以动态地重新确定应用程序的执行地点,以便能够访问所需的服务或地点;同时在工作量少或者具有特殊硬件的机器上完成复杂的计算操作,因为这样的机器特别适合完成应用程序的任务。下面的应用程序实现一台能播放音乐的CD播放器:

  [20]LOCATION cd=new LOCATION(SERVICE,  “CLASSIC CD MOZART”);  [21]cd.ASSERT( );   ∥读取声道  [22]cd.RELEASE( );   ∥声道解码  [23]LOCATION loc=LOCATION(POSITION“my  machine”);  [24]loc.ASSERT( );   ∥播放声道  [25]loc.RELEASE( );

在本例中,应用程序要求处于运行状态的系统寻找一个可用的服务器,该服务器可以提供一张特殊的CD作为服务,如在标号为[20]的代码行中所要求的那张CD。在标号为[21]的代码行用ASSERT声明已经定义好的地点。一旦处于运行状态的系统访问到这一地点,就会执行下一条读取CD中声道的指令。当进程结束后,应用程序向处于运行状态的系统表明不再需要此服务。然后应用程序开始对声道进行解码,一个计算量相当巨大的任务。虽然应用程序没有这样要求,但是运行中系统现在可以自由地将应用程序迁移到另一地点(主机),并且在应用程序要继续运行的任何时候都可以在主机上继续运行。标号为[22]代码行中的RELEASE原语表明不再需要特殊的地点,但是没有指明什么时候或者是否所有的代码将被迁移,而仅仅表明是在“可能”开始重新定位的“最早时间”。一旦完成解码,应用程序表明希望在特殊的机器上播放声道,如现在标号为[23]的代码行所描述的“mymachine”,并且要求处于运行状态的系统满足此要求。标号为[24]代码行中的ASSERT原语没有指明什么时候代码将重新定位在指定的机器上,而仅仅表明是在“必须”重新定位的“最晚时刻”。由于标号为[25]代码行的RELEASE原语,地点限制被解除。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号