专利名称:分布式系统中用于确定远程对象状态的方法和装置的制作方法
相关申请现引证下列美国专利申请作为本申请依据并归并于本申请中。
1998年2月26日申请的发明名称为“分布式计算系统”(“DistributedComputing System”)的临时美国专利申请U.S.Ser.No.60/076,048。
上述相同日期申请的发明名称为“用于租用存储的方法和系统”(“Methodand System for Leasing Storage”)(标注有代理人案卷号No.06502.0011-01000)的美国专利申请U.S.Ser.No.09/044,923。
上述相同日期申请的发明名称为“分布式系统中用于委派证租用的方法、装置和产品”(“Method,Apparatus,and Product for Leasing of DelegationCertificates in a Distributed System”)(标注有代理人案卷号No.06502.0011-02000)的美国专利申请U.S.Ser.No.09/044,838。
上述相同日期申请的发明名称为“分布式系统中用于团体会员资格租用的方法、装置和产品”(“Method,Apparatus,and Product for Leasing of GroupMembership in a Distributed System”)(标注有代理人案卷号No.06502.0011-03000)的美国专利申请U.S.Ser.No.09/044,834。
上述相同日期申请的发明名称为“故障检测的租用”(“Leasing forFailure Detection”)(标注有代理人案卷号No.06502.0011-04000)的美国专利申请U.S.Ser.No.09/044,916。
上述相同日期申请的发明名称为“基于事件的系统中用于传输行为的方法”(“Method for Transporting Behavior in Event Based System”)(标注有代理人案卷号No.06502.0054-00000)的美国专利申请U.S.Ser.No.09/044,933。
上述相同日期申请的发明名称为“分布式系统中对象的延迟重组和事件通知的远程装载”(“Deferred Reconstruction of Objects and Remote Loading forEvent Notification in a Distributed System”)(标注有代理人案卷号No.06502.0062-01000)的美国专利申请U.S.Ser.No.09/044,919。
上述相同日期申请的发明名称为“用于远程定义法启用的方法和装置”(“Methods and Apparatus for Remote Method Invocation”)(标注有代理人案卷号No.06502.0102-00000)的美国专利申请U.S.Ser.No.09/044,938。
上述相同日期申请的发明名称为“用于确定性散列识别远程定义法的方法和系统”(“Method and System for Deterministic Hashes to identify RemoteMethods”)(标注有代理人案卷号No.06502.0103-00000)的美国专利申请U.S.Ser.No.09/045,652。
上述相同日期申请的发明名称为“分布式系统中用于执行与远程进程调用相关联的处理的可下载智能代理”(“Downloadable Smart Proxies for PerformingProcessing Associated with a Remote Procedure Call in a DistributedSystem”)(标注有代理人案卷号No.06502.0105-00000)的美国专利申请U.S.Ser.No.09/044,930。
上述相同日期申请的发明名称为“远程定义法的暂停和继续”(“Suspension and Continuation of Remote Methods”)(标注有代理人案卷号No.06502.0106-00000)的美国专利申请U.S.Ser.No.09/044,917。
上述相同日期申请的发明名称为“数据库中用于多入口以及多模板匹配的方法和系统”(“Method and System for Multi-Entry and Multi-TemplateMatching in a Database”)(标注有代理人案卷号No.06502.0107-00000)的美国专利申请U.S.Ser.No.09/044,835。
上述相同日期申请的发明名称为“数据库中用于原地修改的方法和系统”(“Method and System for In-Place Modifications in a Database”)(标注有代理人案卷号No.06502.0108)的美国专利申请U.S.Ser.No.09/044,839。
上述相同日期申请的发明名称为“数据库中用于类型安全属性匹配的方法和系统”(“Method and System for Typesafe Attribute Matching in aDatabase”)(标注有代理人案卷号No.06502.0109-00000)的美国专利申请U.S.Ser.No.09/044,945。
上述相同日期申请的发明名称为“分布式系统中动态查询业务”(“DynamicLookup Service in a Distributed System”)(标注有代理人案卷号No.06502.0110-00000)的美国专利申请U.S.Ser.No.09/044,931。
上述相同日期申请的发明名称为“分布式系统中提供可下载代码用于与一设备通信的装置和方法”(“Apparatus and Method for Providing DownloadableCode for Use in Communicating with a Device in a Distributed System”)(标注有代理人案卷号No.06502.0112-00000)的美国专利申请U.S.Ser.No.09/044,939。
上述相同日期申请的发明名称为“有利于访问查询业务的方法和系统”(“Method and System for Facilitating Access to a Lookup Service”)(标注有代理人案卷号No.06502.0113-00000)的美国专利申请U.S.Ser.No.09/044,826。
上述相同日期申请的发明名称为“分布式系统中用于动态验证信息的装置和方法”(“Apparatus and Method for Dynamically Verifying Information in aDistributed System”)(标注有代理人案卷号No.06502.0114-00000)的美国专利申请U.S.Ser.No.09/044,932。
1998年2月26日申请的发明名称为“用于网络上动态分布式计算的方法和装置”(“Method and Apparatus for Dynamic Distributed Computing Over aNetwork”)的美国专利申请U.S.Ser.No.09/030,840。
上述相同日期申请的发明名称为“永久性共享存储空间的交互式设计工具”(“An Interactive Design Tool for Persistent Shared Memory Spaces”)(标注有代理人案卷号No.06502.0116-00000)的美国专利申请U.S.Ser.No.09/044,936。
上述相同日期申请的发明名称为“基于多形态令牌的控制”(“PolymorphicToken-Based Control”)(标注有代理人案卷号No.06502.0117-00000)的美国专利申请U.S.Ser.No.09/044,934。
上述相同日期申请的发明名称为“基于堆栈的访问控制”(“Stack-BasedAccess Control”)(标注有代理人案卷号No.06502.0118-00000)的美国专利申请U.S.Ser.No.09/044,915。
上述相同日期申请的发明名称为“基于堆栈的安全要求”(“Stack-BasedSecurity Requirements”)(标注有代理人案卷号No.06502.0119-00000)的美国专利申请U.S.Ser.No.09/044,944。
上述相同日期申请的发明名称为“安全要求的全定义法指定”(“Per-Method Designation of Security Requirements”)(标注有代理人案卷号No.06502.0120-00000)的美国专利申请U.S.Ser.No.09/044,837。
背景技术:
A.发明领域本发明总体涉及分布式系统,具体来说,涉及分布式系统中用于确定远程对象状态的方法和装置。
B.相关技术的说明典型的分布式系统,包括在例如局域网(LAN)、广域网(WAN)、或互联网等网络中连接的诸如计算机和相关外部设备等多种机器。分布式系统通常要求可能在不同机器上、在不同地址空间内运行的那种计算实体(例如应用程序,程序,小应用程序等)能够互相通信。
就基本的通信机制来说,分布式面向对象系统采用远程定义法启用(RemoteMethod Invocation;RMI),它更为普遍地称为远程过程调用(RPC)。RMI使驻留在不同地址空间的“对象”之间的应用层通信更为便利。
面向对象系统中,“类”提供一“模板”用于创建具有该“类”特性的“对象”(它们代表由该系统操纵的项或实例)。术语“模板”表示每一类的对象(即数据项)共享该类确定的某些特性或属性。典型的对象是在系统工作期间动态地创建的。与一类相关联的定义法通常均在相同类的对象上被调用(即被引发工作)。
RMI是对远程对象的定义法进行调用的动作。响应在利用RMI的远程对象上对定义法的启用,低层次通信进程使得被调用的定义法在远程对象上被执行。
JavaTM运行时系统专用于实施按JavaTM面向对象的编程语言编写的应用程序,支持一具体的JavaTMRMI应用程序界面(API)。此API在例如太阳微系统公司(SunMicrosystems,Inc.)标题为“远程定义法启用规范”的文献(1997)中有说明,该文献可由通用资源定位器(URL)http//java.sun.com/products/jdk/1.1/docs/guide/rmiTOC.doc.html提供,并通过引用归并于此。Java语言在许多教科书中有说明,其中一本为James Gosling,Bill Joy,和Guy Steele著,Addison-Wesley于1996年出版的名称为“Java语言规范”的教科书。Java和基于Java的商标均为太阳微系统公司在美国等国家内的商标或注册商标。
Java RMI假定Java运行时系统具有同机种环境,因而Java RMI无论何时只要可能便利用Java语言的对象模型。在JavaTM分布式对象模型中,远程对象是其定义法可由实际上在不同机器上的另一Java运行时系统所调用的远程对象。远程对象由规定远程对象定义法的Java语言编写的一个或多个远程界面定义。例如,界面能够使在远程对象上调用定义法的单元在不规定那些定义法实施的情况下对远程对象所支持的定义法进行定义。
“无用单元收集”是科技文献和相关技术中的术语,是指用于实现存储管理尤其是自动存储器无用单元收集的算法类。有许多公知的无用单元收集算法,包括引用计数、标记清扫和新生的无用单元收集算法。上述以及其他无用单元收集算法在一本Richard Jones和Raphael Lins著,John Wiley & Sons于1996年出版的名称为“无用单元收集,自动动态存储器管理算法”的书中有详细的说明。
分布式无用单元收集将对无用单元的记述延伸至分布式计算系统领域,当分布式系统中任何计算机上没有应用程序应用它们时便回收资源。自动分布式无用单元收集进程将编程器从要删除远程对象何时安全这种确定当中解放出来。在没有分布式无用单元收集器(DGC)的情况下,一远程对象会需要对引用对象的所有客户机保持跟踪,当所有客户机不再引用那个对象时便可回收对象存储。对于此功能,JavaRMI的DGC依靠与Modula-3的Network Objects(网络对象)相似的引用计数无用单元收集算法。参见1994年115期数字设备公司系统研究中心技术报告中Birrell,Nelson和Owicki著的“Network Objects(网络对象)”。
要实现引用计数的无用单元收集,作为在Java运行时系统顶端上实施Java RMI的Java RMI运行时系统,对通过本地虚拟机(VM)执行的计算实体(即客户机)所引用的全部远程对象保持跟踪。JavaTMVM(JVM)是运行时系统的抽象计算机,该运行时系统以字节代码形式接收程序指令,并通过动态地将它们变换为诸如目标代码这种执行形式来解释这些字节代码,并执行它们。JVM在一本Tim Lindholm和FrankYellin著,Addison Wesley于1996年出版的名称为“Java虚拟机规范”的教科书中有详细的说明。
当计算实体指向远程对象时,计算实体的本地RMI运行时便使相对应的引用计数递增。这样一种引用通常称为“强”引用,说成计算实体保持对于该远程对象的强引用。强引用是那种要防止(远程)对象被收集的引用。对于远程对象的第一引用致使运行时系统将一“已被引用”的消息发送至用于那对象(例如该已被引用的对象由分布式系统中另一机器所保持)的RMI运行时。当发现远程对象在本地VM中未被引用时,本地RMI运行时使相应的引用计数递减。
当本地VM删除对于一远程对象的最后引用时,一“未被引用”的消息送至与那对象相对应的RMI运行时。当一远程对象未被任何客户机引用时,该远程对象的RMI运行时系统便对于其“本地”对象(客户机认为是远程对象)采用一弱引用。假使对于该对象没有其他本地“强”引用存在,弱引用允许远程对象的无用单元收集器删除该对象。如同在正常的对象寿命周期中,在无用单元收集器确定不再有对于该对象的强引用存在后调用结束进程。一种结束进程致使分配给一对象的存储器返回给存储器堆用于重新利用。只要有对于远程对象的本地“强”引用存在,就不可能按此方式由无用单元收集器回收,可在远程调用中传递或返回给客户机。传递远程对象将VM用的标识符加到传递给被引用的集合的那个上面。来自该接收VM的被引用的调用结果,该RMI运行时将保持对于远程对象的强引用来防止收集。
需要“未被引用”的通知即不再有客户机保持引用的通知的远程对象,必须实施称为“java.rmi.server.Unreferenced”界面的特定界面。按此方式,当来自远程实体(例如对象的前客户机)的对于对象的所有引用不再存在时,将会调用对象的名称为“未被引用”的定义法。当对象的引用组变为空置时便调用该未被引用的定义法。
注意若在客户机和远程对象之间存在网络分区,便由于该传送会认为该客户机崩溃因而很可能远程对象的过早收集将发生。由于过早收集的可能性,远程引用不能保证引用的完整性;换言之,总有可能远程引用实际不会指向一现存的对象。用这样一种引用的努力将产生一远程例外差错,该差错必须由利用该引用的计算实体来处理。
因而,需要一系统能够使计算实体来确定远程对象的状态。通过获得这种状态信息,计算实体可更好地管理对于远程对象的引用,在不阻止远程对象受到无用单元收集的情况下,避免不想要的远程例外。
发明概述本发明的系统,如在此具体和概要的说明,所具有的方法和装置用于在分布式系统中有选择地提供与远程对象相关的状态变化。该方法包含对来自一计算实体以接收对于与远程对象相关状态变化的通知的请求进行登录。对通知请求的登录致使包括该远程对象位置的识别符在内的对于远程对象的远程弱引用的创建。
依据该远程弱引用的识别符,周期性地将一请求发送至一位置。当确定发生过与远程对象相关的状态变化时,便通知所登录的计算实体。
附图简要说明合并于本说明书并构成其一部分的附图,对本发明的若干实施例加以图示,并与说明书一起有助于说明本发明原理。附图中包括
图1示出可实施本发明系统的示范性网络结构;图2是可用以实施本发明的计算机系统其示范性系统结构的框图;图3是表示本发明分布式系统中用于处理远程对象的数据流的框图;图4A和图4B是表示本发明实施例分布式弱引用进程客户机一侧功能所执行动作的流程图;以及图5是表示本发明实施例分布式弱引用进程服务器一侧功能所执行动作的流程图。
详细说明现具体参见如附图所示的本发明实施例。在可能的情况下,整个附图和以下说明中对相同或相似部分均用相同标号。
介绍本发明系统针对现有技术的不足,提供一种用于分布式系统中有选择地提供与远程对象相关的状态变化的方法和装置。这里,术语“远程”用来区别位于指定用于与一计算实体相关联工作的机器(诸如VM)的地址空间的对象和位于同指定用于与该计算实体相关联工作的机器的地址空间不同的地址空间的对象,后者表示一“远程”对象。因此,假使计算实体所用的地址空间与保持对象的地址空间不同,一位于与计算实体相同的物理机器上的对象可相对于那实体来说,认为是一“远程”对象。
总之,本发明的方法和装置登录来自计算实体的请求以接收对于与远程对象相关的“存活”的通知。这里,术语“存活”用来指远程对象在一特定时间是否可访问。在例如网络分区阻止计算实体访问远程对象或该远程对象被无用单元收集时,远程对象确定为不可访问。因阻止其访问与远程对象相关机器的与计算实体机器的通信问题或与远程对象机器相关的通信问题,而可能发生这种分区。
具体来说,当一计算实体引用远程对象时,该实体保留一对于远程对象的强引用。计算实体还可以利用RMI运行时系统登录来接收对于远程对象“存活”当中变化的通知。这样一种登录涉及RMI运行时系统的登录通知进程,致使创建一“远程弱引用”,是一种对于从强引用得到的远程对象的引用。远程对象的远程弱引用将不会阻止远程对象被收集。
RMI运行时系统依据一组远程弱引用,周期性地将状态请求发送给与相应的远程对象相关的机器。然后依据远程对象状态即远程对象“存活”的改变(若有)向所登录的计算实体提供对请求进行答复的一个或多个答复。
分布式系统本发明的方法和系统工作于包含例如多个同种机器或异种机器的分布式系统中。图1示出一示范性分布式系统。该分布式系统总体包含多个部件,包括硬件和软件两者。示范性分布式系统(1)允许系统用户在多个设备的网络上分享服务和资源;(2)向程序员提供允许开发健全、安全的分布式系统的工具和编程图版;以及简化分布式系统的系统管理任务。为了实现这些目标,分布式系统采用JavaTM编程环境以允许代码和数据两者以无缝方式在设备间移动。因而,分布式系统铺设在JavaTM编程环境的顶部,并利用该环境的特性,包括由此提供的安全性和健壮型。该编程环境在Jaworski著的Java 1.1开发人员指南(Sams.net)(1997)有更为全面的说明。
示范性分布式系统中,不同计算机和设备结合成对用户来说,表现为单个系统。通过表现为单个系统,该分布式系统在不放弃个人计算机或工作站灵活性和个性化响应的情况下,提供单个系统可提供的访问简化和共享的能力。分布式系统可包含在地理范围分布、并就信任、系统管理和政策的基本记述达成一致的用户所操作的数千个设备。
位于分布式系统内的是对一个或多个设备所提供的服务进行不同的逻辑分组,每一这种逻辑分组称为Djinn。“服务”是指能够为用户、程序、设备或另一服务访问的,并能够计算、与存储有关、与通信有关、与向另一用户提供访问有关的资源、数据或功能程序。作为Djinn部分提供的业务例包括诸如打印机、显示器和盘这类设备;诸如应用程序或实用程序这类软件;诸如数据库和文档这类信息;以及系统用户。
用户和设备均可以加入Djinn。当加入Djinn时,用户或设备便向Djinn增加0或更多的业务,并可以访问其所包含的任意一种业务。这样,设备和用户结合形成为一Djinn来共享对其业务的访问。该Djinn的诸多业务在程序设计上表现为Java编程环境的诸多对象,它们可以包括其他对象、按不同编程语言写成的软件部件、或硬件设备在内。一业务具有一接口,定义可就那种业务请求的诸多操作,这类业务类型确定组成那种业务的诸多接口。
图1所示的分布式系统100包含由网络108互联的计算机102,计算机104和设备106。设备106可以是诸如打印机、传真机、存储设备等若干设备中的任意设备。网络108可以是局域网(LAN),广域网(WAN)和互联网(Internet)。作为所包含的分布式系统100虽仅示出2台计算机和1台设备,但本领域的技术人员会理解,分布式系统100可包括另外的计算机和设备,甚至可包括单单是计算机而没有任何设备。
图2更为详细地示出计算机102来表示分布式系统100的若干软件部件。计算机102包括存储器202、第二存储设备204、中央处理单元(CPU)206、输入设备208和视频显示器210。存储器202包括一查询业务212、发现服务器214、RMI218和Java运行时系统216。运行时系统216包括Java VM220和无用单元收集器(GC)224。第二存储设备204包括JavaTM空间222。
如上文所述,分布式系统100基于Java编程环境,因而利用Java运行时系统216。该Java运行时系统216包括JavaTMAPI(未具体图示),允许Java运行时系统顶部上面运行的程序按与平台无关的方式访问包括主机操作系统视窗能力和联网能力在内的不同系统功能(未图示)。因为Java API对移植Java运行时系统的全部操作系统总体提供单个公用API,因而不论是主机平台的操作系统还是硬件配置,运行于Java运行时系统顶部上面的各程序均按与平台无关的方式运行。Java运行时系统216作为位于加州景山的太阳微系统(Sun Microsystems)公司可供给的JavaTM软件开发套件(JDK)当中的部分来提供。
Java虚拟机220也有利于平台的无关性。Java虚拟机220象一抽象计算机那样运作,按字节代码形式从程序当中接收指令,并通过动态地将它们变换为诸如目标代码这种执行形式来解释这些字节代码,并执行它们。无用单元收集器(GC)224实施一无用单元收集进程来管理存储器资源。GC 224通常确定何时对象不再被引用,并依据该确定结果对回收相关存储器资源的进程进行初始化。
RMI 218通过允许在一个计算机或设备上执行对象来方便远程定义法启用,在另一计算机或设备上调用一对象的诸多定义法。RMI和Java虚拟机也作为Java软件开发套件的部分提供。RMI 218包括一分布式无用单元收集器(DGC)226,实施与Modula-3的网络对象(Network Objects)相似的引用计数无用单元收集算法。
查询服务212定义对一特定Djinn可供给的诸多服务。也就是说,在示范性分布式系统100内可以有超过1个的Djinn,因而有超过1个的查询服务。该查询服务212在Djinn内每一服务包含一个对象,每一对象则包含有利于访问相应服务的种种方法。查询服务212及其访问在前面已通过引证归并的发明名称为“有利于访问查询服务的方法和系统”这一共同待审的美国专利申请U.S.Ser.No.09/044,826中有更加详细的说明。
发现服务器214当有新设备加入到示范性分布式系统100时,在称为启动和加入或发现的处理期间进行检测,当检测有这一新设备时,发现服务器便向查询服务212传递一对于该新设备的引用,以便该新设备可将其服务与查询服务一起登录并成为Djinn一员。登录后,新设备成为该Djinn一员,从而可以访问查询服务212中包含的全部服务。该启动和加入处理在前面已通过引证归并的发明名称为“分布式系统中提供可下载代码用于与设备通信的装置和方法”这一共同待审的美国专利申请U.S.Ser.No.09/044,939中有更加详细的说明。
JavaSpaceTM222是分布式系统100中诸多程序用来存储对象的对象资源库。诸多程序利用JavaSpaceTM222来持久地存储诸多对象,并使之可由分布式系统中的其他设备访问。Java空间(Java space)在已通过引证归并的发明名称为“利用多形态入口和入口匹配的数据库系统”、于1997年11月17日申请并转让给共同受让人的共同待审美国专利申请U.S.Ser.No.08/971,529中有更加详细的说明。本领域技术人员会理解,分布式系统100可包含大于1个的查询服务、发现服务和Java空间(JavaSpaces)。
分布式弱引用框架现参见图3,说明本发明的在分布式系统中利用远程弱引用来实施远程对象登录通知进程的框架。图3示出2个计算机305和345,可以与分布式系统100中示出的计算机102和104相对应。每一计算机305和345包括一分布式弱引用进程(DWERP)320和360,分别实施远程对象的登录通知进程。DWERP320和360可以按例如Java编程语言编写的程序代码来实施,并作为RMI 218的部分存储于存储器202。
为了便于这种说明,计算机305将称为客户机,因为它包括如引用远程对象的进程310所示的计算实体。相反,计算机345则称为服务器,因为它包含对象350,相对于在本例中寻找对象350状态信息的进程310来说构成一远程对象。(该远程对象可定位于图1和图2所示结构的分布式系统Java空间222中。)虽然这种说明参照客户机和服务器与不同的物理计算机相对应,但仍能够配置单个计算机使之作为客户机和服务器工作。例如,可对物理的机器进行分区来支持客户机和服务器其分开的虚拟机和相应的地址空间。
当进程310接收对于对象350的引用时便说进程310保持一对于对象350的“强”引用330。“强”引用可用于调用定义法,或作为参数传递,或在RMI调用中返回数值。虽然本例中进程310保持一对于对象350的“强”引用,但分布式系统中另一计算实例保持一对于对象350的“强”引用也行,而进程310则寻找对于与对象350相关状态的通知。不论哪一情况,进程310用DWERP320登录一请求来接收对象350“存活”变化的通知。
DWERP 320监测影响对象350“存活”的事件的发生,从而通知所登录的进程310。尽管其他实施例可允许进程310接收远程对象状态的周期性更新,但在一个实施例中,当检测出有一事件影响远程对象350“存活”时便仅通知进程310。
若网络分区阻止进程310访问对象350,DWERP 320便向进程310提供一事件通知,因为进程310登录为接收这样一种通知。这样一种分区会作为客户机305和分布式系统间失去连接性或服务器345和分布式系统间失去连接性的后果而发生。客户机一侧分区的事件中,DWERP 320简单地检测该事件,并通知进程310该事件。在服务器一侧进行网络分区或服务器345无用单元收集周期期间其回收造成的对象“存活”变化这种情况下,DWERP 320必须与服务器345的DWERP 360通信来获得影响对象350“存活”的上述类型事件的有关信息。
最后,DWERP 320周期性地发送“ping”或状态请求给计算机345的DWERP360。如图3所示,DWERP 360接收到DWERP 320的ping。本例中,远程弱引用340用于确定DWERP 360和对象350在服务器345上的位置。注意,使与远程对象相关的计算机pinging的进程,相对于登录进程来说是异步进行的。
服务器345的DWERP 360监测包括对象350在内的驻留对象或本地对象。注意,服务器345的RMI的DGC保留对于指定为RMI调用的远程对象的“本地”对象的引用列表。DWERP 360采用此信息监测本地对象。
依据ping标识的所选定对象的状态,服务器的DWERP 360返回一合适的答复。本例中,DWERP 360返回一对于DWERP 320的ping的答复,表明与对象350相关的“存活”没有变化。因为对象350未被无用单元收集,并且没有网络分区发生,本例中DWERP 360的答复表明对象350仍可访问。但若根据不再存在远程或本地的对于对象的强引用使得对象350已被无用单元收集,DWERP 360的答复便会响应DWERP 320的ping表明对象350这样一种状态。在此情况下,DWERP 320会依据从服务器345的DWERP 360接收的答复通知进程310对象350“存活”的变化。这样,若答复表明远程对象350的“存活”没有变化,进程310则接收无事件通知。总之,仅当发生和检测出对象350“存活”变化的事件,才提供事件通知。
由上述讨论可知,分布式弱引用进程包含两部件功能。第一功能是在事务的客户机一侧执行的功能,第二功能是在事务的服务器一侧执行的功能。下面结合图4流程图说明DWERP客户机一侧功能,再下面结合图5流程图说明服务器一侧功能。
客户机侧功能如图4A和图4B所示,客户机侧功能包括2方面登录和通知。图4A示出登录所包含的步骤。首先,客户机侧DWERP从计算实体接收一登记请求,表明实体希望接收对于所选定远程对象的状态的通知(步骤410)。请求包括对于所选定的远程对象的强引用或对于该强引用所处位置的引用。客户机侧DWERP接着通过创建对于所选定远程对象的远程弱引用登录该请求(步骤412)。
图4B示出客户机侧DWERP的通知方面。客户机侧DWERP周期性但不必与登录方面保持同步这样访问远程对象的远程弱引用集合来利用计算实体(即远程对象的服务器)的相应通知请求识别任何远程对象位置(步骤420),并将ping随为此请求过存活更新的远程对象的信息送至各个识别的服务器(步骤430)。
客户机侧DWERP接着利用所登录的远程弱引用确定各个远程对象的“存活”是否有了变化(步骤445),并当这种变化发生过时通知相应的所登录的计算实体(步骤450)。若远程对象的存活没有变化(步骤445),客户机侧DWERP返回至一等待状态(步骤460),在此场合保持原样直到为另一ping周期时间。在一个周期中客户机侧DWERP会同时利用所登录的远程弱引用将ping发送给所有远程对象的服务器,或会利用每一周期将ping仅发送给一个或有限数目的服务器。
但如果检测出有一事件影响远程对象的“存活”,便向该相应的所登录的计算实体提供该事件的通知(步骤450)。例如,如果网络分区阻止客户机发送ping或接收对所发生ping的答复,当发生过影响远程对象“存活”的事件时,客户机侧DWERP便利用所登录的接收事件通知的请求向一个或多个计算实体提供一事件通知。同样,当DWERP不接收对于ping的答复时(这表明与远程对象服务器的通信有问题),或当服务器的DWERP用远程对象已被无用单元收集这种指示来答复时,DWERP也通知计算实体。
按照此方式,客户机侧功能一旦接收到所选定远程对象的状态信息,便对计算实体对远程对象状态的登录和对那些登录的计算实体的通知进行处理。
服务器侧功能如图5所示,DWERP服务器侧功能包含从客户机器接收每一个ping(步骤510),确定服务器所标识的本地对象的“存活”是否有了变化,例如是否使该对象经过无用单元收集(步骤520),并且将包括那对象“存活”的任何变化在内的答复发送给客户机器(步骤530)。
尽管本说明书将DWERP客户机和服务器功能分开说明,但本领域技术人员会认识到DWERP的两方面功能很可能会在分布式系统中每一机器上出现来利用本发明构思的全部优点。
结论本发明系统这样便实施了一种确定分布式系统中远程对象存活的变化的方法。总体来说,计算实体登录请求来接收对于所选定远程对象存活的变化的通知。周期性地将对于远程对象的状态请求发送给远程对象所驻留的服务器。对远程对象进行定位,利用对于该远程对象的远程弱引用。然后依据远程对象存活的变化这一事件的发生,将对该状态请求的答复提供给所登录的计算实体。计算实体按此方式可接收对于远程对象状态变化的通知。
为了便于图示和说明,对实施本发明进行了如上文所述说明。这并不详尽,也不是将本发明限定为所揭示的精确形式。可按照上面的指导进行种种修改和变形,或从本发明的实施过程中获得种种修改和变形。例如,所述的实施包括软件,但也可以将本发明按硬件和软件的结合或单独按硬件来实施。本发明可以按面向对象和非面向对象编程系统来实施。
尽管所说明的本发明系统和方法工作于示范性分布式系统和Java编程环境,但本领域技术人员会理解,本发明可以实际应用于其他系统和编程环境。此外,所说明的本发明某些方面可存储于存储器中,但本领域技术人员会理解,这些方面也可存储在其他类型的计算机可读介质上,例如存储在如硬盘、软盘、或CD-ROM这种第二存储设备上,或互联网载波上,或其他形式的RAM或ROM上。本发明的保护范围由权利要求及其等价物限定。
权利要求
1.一种包含多平台的分布式系统中提供与远程对象相关的状态变化的方法,其特征在于,该方法包括下列步骤提供驻留在这些平台中一个平台上的对象;登录一计算实体的请求,该计算实体相对于对象所驻留的这些平台中一个平台来说位于这些平台中的一个远程平台上,来接收对于与该对象相关的状态变化的指示;确定是否发生过一事件使与该对象相关的状态变化;以及依据该确定向计算实体提供一通知。
2.如权利要求1所述的方法,其特征在于,依据确定向计算实体提供一通知的步骤包括仅当确定发生过该事件时才提供通知。
3.如权利要求1所述的方法,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括向该对象所驻留的这些平台中一个平台发送一状态请求。
4.如权利要求1所述的方法,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括确定网络分区是否将与计算实体相关的平台和与对象相关的平台分开。
5.如权利要求1所述的方法,其特征在于,对象具有相对应的引用指示对象在分布式系统内的位置,确定是否发生过一事件使与对象相关的状态变化的步骤包括依据与该对象相对应的引用对该对象所驻留的这些平台中一个平台进行定位;以及向该定位的平台发送一状态请求。
6.如权利要求1所述的方法,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括从该对象所驻留的这些平台中一个平台接收一状态指示符。
7.如权利要求1所述的方法,其特征在于,依据确定向计算实体提供一通知的步骤包括将对于对象存活的通知返回至该计算实体。
8.如权利要求1所述的方法,其特征在于,计算实体保留指示对象在分布式系统内位置的引用,登录步骤包括从该计算实体接收对于对象的引用;以及依据所接收的引用创建与该对象相对应的远程弱引用;以及确定是否发生过一事件使与该对象相关的状态变化的步骤包括依据与该对象相对应的远程弱引用对该对象所驻留的这些平台中一个平台进行定位;以及向该定位的平台发送一状态请求。
9.一种包含多地址空间的分布式面向对象系统中确定与对象相关的状态变化的方法,其特征在于,计算实体与地址空间相关联工作,由一处理器执行的该方法包括下列步骤提供一与这些地址空间中一个地址空间相关联工作的计算实体;对于一对象提供一引用,该对象相关的地址空间相对于与该计算实体相关的地址空间来说处于远端;登录来自该计算实体以通知与该对象相关的状态变化的请求;以及确定是否发生过一事件使与该对象相关的状态交替变化。
10.如权利要求9所述的方法,其特征在于,该确定步骤包括接收一与该对象相关的状态已交替变化的指示。
11.如权利要求9所述的方法,其特征在于,还包括下列步骤仅当确定与对象相关的状态已交替变化时才向计算实体提供一通知。
12.如权利要求9所述的方法,其特征在于,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括访问与该对象相关的地址空间。
13.如权利要求9所述的方法,其特征在于,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括确定网络分区是否将与计算实体相关的地址空间和与对象相关的地址空间分开。
14.如权利要求9所述的方法,其特征在于,对象具有相对应的引用指示它们在分布式系统内的地址空间,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括依据与该对象相对应的引用对与该对象相关的地址空间进行定位;以及访问与该对象相关的地址空间。
15.如权利要求9所述的方法,其特征在于,还包括当确定与对象相关的状态已交替变化时将一存活通知返回至计算实体。
16.一种包含多平台的分布式系统中提供与对象相关的状态变化的方法,其特征在于,由这些平台中一个平台执行的方法包括下列步骤从具有一对于对象的引用的远程平台接收一状态请求;确定是否发生过一事件使与该对象相关的状态交替变化;以及依据该确定将一通知返回至该远程平台。
17.一种分布式系统中提供与对象相关的状态变化的方法,其特征在于,该方法包括下列步骤提供一远程对象;创建一包括远程对象位置识别符在内的对于该远程对象的引用;当远程对象已被收集时登录一接收通知的请求;依据该远程对象位置识别符周期性地发送一状态请求;确定远程对象是形成队列等待收集还是响应收到状态请求中的一个而已经被收集;以及确定远程对象形成队列等待收集或响应所登录的请求而已经被收集时提供一通知。
18.一种包含多地址空间的分布式系统中确定远程对象状态变化的方法,其特征在于,该方法包括下列步骤提供一驻留在第一地址空间的远程对象;创建一包括远程对象位置识别符在内的对于第二地址空间该远程对象的引用;当远程对象已经过无用单元收集时登录一驻留在第二地址空间的进程接收通知的请求;周期性地向第一地址空间发送一状态请求以确定远程对象状态;确定远程对象是否响应第一地址空间收到状态请求中的一个而经过无用单元收集;以及响应所登录的请求将一远程对象经过无用单元收集的通知提供给该进程。
19.一种包含多平台的分布式环境中提供与远程对象相关的状态变化的系统,其特征在于,该系统包括第一平台,包含具有一对象的存储器;以及相对于该第一平台来说处于远端的第二平台,包含具有程序指令的存储器;以及一处理器,配置为利用该程序指令执行下列步骤登录一计算实体接收一对于与该对象相关状态变化的指示的请求;确定是否发生过一事件使与该对象相关的状态变化;以及依据该确定向该计算实体提供一通知。
20.如权利要求19所述的系统,其特征在于,处理器还配置为利用程序指令,仅当确定发生过该事件时才提供通知。
21.如权利要求19所述的系统,其特征在于,处理器还配置为利用程序指令来确定网络分区是否将与计算实体和存储器相关的平台分开。
22.一种包含多地址空间的分布式面向对象系统中确定与对象相关状态变化的装置,其特征在于,一计算实体与该地址空间中一个地址空间相关联工作,并对与一地址空间相关的对象提供一引用,该地址空间相对于与该计算实体相关的地址空间来说处于远端,该装置包括一登录部件,配置为登录一该计算实体要求通知与该对象相关的状态变化的请求;以及一处理器,配置为确定是否发生过一事件使与该对象相关的状态交替变化。
23.如权利要求22所述的装置,其特征在于,处理器包括一接收器,配置为接收与对象相关的状态已交替变化的指示。
24.如权利要求22所述的装置,其特征在于,还包括一通知部件,配置为仅当确定与对象相关的状态已交替变化时才向计算实体提供一通知。
25.如权利要求22所述的装置,其特征在于,处理器包括一配置为访问与对象相关的地址空间的部件。
26.如权利要求22所述的装置,其特征在于,处理器包括一配置为确定网络分区是否将与计算实体相关的地址空间和与对象相关的地址空间分开的部件。
27.如权利要求22所述的装置,其特征在于,对象具有相对应的引用指示它们在分布式系统内的地址空间,处理器包括一配置为依据与该对象相对应的引用对与该对象相关的地址空间进行定位的部件;以及一配置为访问与该对象相关的地址空间的部件。
28.如权利要求22所述的装置,其特征在于,还包括一通知部件,配置为当确定与对象相关的状态已交替变化时向计算实体返回一存活通知。
29.一种包含多平台的分布式系统中提供与对象相关的状态变化的系统,其特征在于,该系统包括具有程序指令的存储器;以及一处理器,配置为利用该程序指令执行下列步骤从具有一对于对象的引用的远程平台接收一状态请求;确定是否发生过一事件使与该对象相关的状态交替变化;以及依据该确定返回一通知。
30.一种计算机可读介质,所包含的指令用于在包含多平台的分布式系统中提供与远程对象相关的状态变化,其特征在于,通过执行下列步骤提供驻留在这些平台中一个平台上的对象;登录一计算实体的请求,该计算实体相对于对象所驻留的这些平台中一个平台来说位于这些平台中的一个远程平台上,来接收对于与该对象相关的状态变化的指示;确定是否发生过一事件使与该对象相关的状态变化;以及依据该确定向计算实体提供一通知。
31.如权利要求30所述的计算机可读介质,其特征在于,依据确定向计算实体提供一通知的步骤包括仅当确定发生过该事件时才提供通知。
32.如权利要求30所述的计算机可读介质,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括向该对象所驻留的这些平台中一个平台发送一状态请求。
33.如权利要求30所述的计算机可读介质,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括确定网络分区是否将与计算实体相关的平台和与对象相关的平台分开。
34.如权利要求30所述的计算机可读介质,其特征在于,对象具有相对应的引用指示对象在分布式系统内的位置,确定是否发生过一事件使与对象相关的状态变化的步骤包括依据与该对象相对应的引用对该对象所驻留的这些平台中一个平台进行定位;以及向该定位的平台发送一状态请求。
35.如权利要求30所述的计算机可读介质,其特征在于,确定是否发生过一事件使与对象相关的状态变化的步骤包括从该对象所驻留的这些平台中一个平台接收一状态指示符。
36.如权利要求30所述的计算机可读介质,其特征在于,依据确定向计算实体提供一通知的步骤包括将对于对象存活的通知返回至该计算实体。
37.如权利要求30所述的计算机可读介质,其特征在于,计算实体保留指示对象在分布式系统内位置的引用,登录步骤包括从该计算实体接收对于对象的引用;以及依据所接收的引用创建与该对象相对应的远程弱引用;以及确定是否发生过一事件使与该对象相关的状态变化的步骤包括依据与该对象相对应的远程弱引用对该对象所驻留的这些平台中一个平台进行定位;以及向该定位的平台发送一状态请求。
38.一种计算机可读介质,所包含的指令用于在包含多地址空间的分布式面向对象系统中确定与对象相关的状态变化,其特征在于,通过执行下列步骤提供一与这些地址空间中一个地址空间相关联工作的计算实体;对于一对象提供一引用,该对象相关的地址空间相对于与该计算实体相关的地址空间来说处于远端;登录来自该计算实体以通知与该对象相关的状态变化的请求;以及确定是否发生过一事件使与该对象相关的状态交替变化。
39.如权利要求38所述的计算机可读介质,其特征在于,该确定步骤包括接收一与该对象相关的状态已交替变化的指示。
40.如权利要求38所述的计算机可读介质,其特征在于,还包括下列步骤仅当确定与对象相关的状态已交替变化时才向计算实体提供一通知。
41.如权利要求38所述的计算机可读介质,其特征在于,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括访问与该对象相关的地址空间。
42.如权利要求38所述的计算机可读介质,其特征在于,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括确定网络分区是否将与计算实体相关的地址空间和与对象相关的地址空间分开。
43.如权利要求38所述的计算机可读介质,其特征在于,对象具有相对应的引用指示它们在分布式系统内的地址空间,确定是否发生过一事件使与对象相关的状态交替变化的步骤包括依据与该对象相对应的引用对与该对象相关的地址空间进行定位;以及访问与该对象相关的地址空间。
44.如权利要求38所述的计算机可读介质,其特征在于,还包括当确定与对象相关的状态己交替变化时将一存活通知返回至计算实体。
45.一种包含多平台的分布式系统中提供与对象相关的状态变化的装置,其特征在于,包括从具有一对于对象的引用的远程平台接收一状态请求的装置;确定是否发生过一事件使与该对象相关的状态交替变化的装置;以及依据该确定返回一通知的装置。
46.一种存储器,所存储的数据用于由一处理器执行的计算实体所访问,其特征在于,相对于计算实体来说驻留在远端位置的对象,并当对于对象的一组引用空置时对象变为可回收,该存储器包括对于该对象的远程弱引用与对于该对象的该组引用中的任意引用相区别,当对于该对象的该组引用空置时,在没有防止该对象收回的情况下,该远程弱引用使得该计算实体获得与对象相关的事件的相应信息。
全文摘要
本发明的系统,所具有的方法和装置用于在分布式系统中有选择地提供与远程对象相关的状态变化。该方法包含对来自一计算实体以接收对于与远程对象相关状态变化的通知的请求进行登录。对通知请求的登录致使包括该远程对象位置的识别符在内的对于远程对象的远程弱引用的创建。依据该远程弱引用的识别符,周期性地将一请求发送至一位置。当确定发生过与远程对象相关的状态变化时,便通知所登录的计算实体。
文档编号G06F17/30GK1298507SQ99805377
公开日2001年6月6日 申请日期1999年2月24日 优先权日1998年2月26日
发明者A·M·沃尔蕾斯, P·C·琼斯 申请人:太阳微系统公司