对象状态传送的方法和装置制造方法及图纸

技术编号:2843140 阅读:191 留言:0更新日期:2012-04-11 18:40
当大量对象的状态必须被传送到另一台装置时,可使开销大量减少并且在一个短时间内同步大量的对象状态。在创建对象时,对象创建函数在传送区域内将对象内部状态安排减字节序列,并且在映射管理表中设置映射数据。当用程序应已经通过存取器方法操作内部状态时,在传送区域的字节序列中设置状态,或者从其获取该状态。传送函数将传送区域的字节序列和映射管理表传送到一个接收器,在该接收器中再现函数基于接收的数据再现该对象。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种包含Java(已注册商标)虚拟机的装置。尤其是涉及一种对象状态传送方法、对象状态传送装置、对象状态传送程序、和用于该程序的记录介质,该程序在同步对象状态时使得减少将一个对象状态传送到其它主机的开销、以及提高整个系统的能力成为可能。
技术介绍
在现有的Java技术中,为了将多个对象的内部状态(称作实例变量的对象的单独数据)传送到外部装置,必须通过一种通常称为串行化的方法,将这些实例一个接一个地转化成一个字节序列,然后将这个字节序列传送到外部装置中。这样就在串行化时产生了大量的开销。为了执行串行化,必须通过访问每个成员变量来提取每个单独成员变量的状态,每个成员变量代表每个实例的内部状态,并且被提取的状态必须被复制到一个将要存储字节序列的传送区域,因此,增加了开销。例如,在一个由多个主机组成的集群中,当组成集群的一个主机因某种原因而变得不能连续服务时,另一个主机就代替它继续提供该服务,保持了系统的可靠性。对于要接管提供该服务的使另一个主机而言,与该服务相关的数据(对象状态)必须通过组成该集群的主机之间的同步而被复制。串行化在这样的时刻进行,并且多个对象的内部状态被转换为一个字节序列,该字节序列被传送到另一个主机,但总开销却影响了整个系统的性能。一个利用上述集群配置的系统在因特网(URL:http://edocs.beasys.co.jp/edocs/wls/docs70/cluster/failover.html)上发布的一篇文章中进行了描述;在该实例中,在故障转移时通过使用串行化来复制会话状态而实现会话接管。在以上描述的传统技术中,当必须传送大量对象状态时,例如在组成集群的多个节点(主机)之间同步对象状态以便增加可靠性时,其它处理就被阻塞,导致整个系统的性能受到相当大的影响。
技术实现思路
本专利技术的目的之一是大量减少这个开销,以使在一个短时间内同步非常大量的对象的对象状态、并且在提高集群配置可靠性的同时最小化其对整个系统性能的影响成为可能。本专利技术第一方面最重要的特点是,对象内部状态由应用程序按对传统对象同样的方式加以访问,该对象内部状态被存储在字节序列中。更准确地说,应用程序被并入到Java虚拟机等中,并能通过一个用于操作对象的内部状态的存取器方法访问对象;对象的内部状态被映射到字节序列中,并被通过传送单元以那种形式传送到外部装置中。因此,当对象能被按照和传统对象相同的方式从应用程序中加以操作时,内部状态已被按照字节序列映射的对象能被提供给该应用程序,使得用于传送该对象状态的开销大大减少了,并且该对象能在传送目的地被再现。因此,该装置在不降低其处理速度的同时保持了高可靠性。例如,当一个数据处理装置已经变得不能继续服务时,另一个数据处理装置接管该服务;为实现这些,必须传送对象内部状态到另一个数据处理装置。传送处理理想地在每次更新对象内部状态时进行,但由于这可能导致极高的负载,所以实际上传送处理以有规律的时间间隔进行。在本专利技术中,传送内部状态的开销大大减少,而不中断其它处理,并且内部状态能比在传统装置中被更频繁地传送到另一个数据处理装置。这样就能够缩短在多个数据处理装置之间同步内部状态的时间间隔,增加了整个系统的可靠性。在本专利技术的第一个方面中,根据来自应用程序的要创建新对象的请求,新对象的内部状态被保护在字节序列中,在字节序列和新对象的内部状态间进行映射,与该映射相关的映射数据被存储在一个映射管理表等中。在本专利技术的第一个方面中,当应用程序已经访问过该被创建对象的内部状态时,按照存储在映射管理表中的映射数据,设置在被映射的字节序列中的对象内部状态,或该对象的内部状态从被映射的字节序列中提取,并且把结果返回给应用程序。在本专利技术的第一个方面中,允许以未改变的形式把存储了对象内部状态的字节序列和存储在映射管理表或等中的映射数据传送到另一数据处理装置。在本专利技术的第一个方面中,当被创建的对象被应用程序认为是不须要的、并且Java虚拟机等企图释放与该对象相关的存储器区域时,允许同时取消字节序列和该对象的映射,并且更新存储在映射管理表或等中的映射数据。在本专利技术的第一个方面中,一个对象可由一个数据处理装置中的再现单元根据由另一个数据处理装置中的传送单元传送的字节序列和映射数据进行再现,然后与被再现对象相关的数据被发送给应用程序。依据本专利技术的第二个方面,对象(它在多个数据处理装置之间是共享的)作为将被传送到另一个数据处理装置的对象被放置在共享堆区(heap region)中,并且传送单元传送共享堆区到另一个数据处理装置。因此,有可能存储可以按与传统对象相同的方式操作的共享对象,此外,有可能向应用程序提供那些能被传送端的数据处理装置直接传送且能被再现端的数据处理装置再现的共享堆区。因此,可以大量减少传送对象的内部状态到另一个数据处理装置的开销,并且对象可以被在传送目的地再现。所以,该装置保持了高可靠性且不降低处理速度。更准确地说,要确定该对象是否在多个数据处理装置之间共享;若共享,则该对象就作为一个共享对象被存储在共享堆区中;若不共享,则该对象被存储在堆区中。照这样,应用程序可以用同样的方法操作普通对象和共享对象的内部状态。在本专利技术的第二个方面中,允许预先指定一个传送类;当应用程序发出创建新对象的请求时,确定要创建的类是否被包括在该传送类中;当要创建的类不包括在传送类中,在堆区中创建一个对象,并且当要创建的类包括在传送类中,在共享堆区中创建一个共享对象。这样就使得在多个数据处理装置之间只共享一个属于特定类的共享对象成为可能。因此,可以减少用来同步多个数据处理装置所需的传送数据量。在本专利技术的第二个方面中,当应用程序已发出命令以操作该被创建对象的内部状态时,允许根据由应用程序提供的、要被操作的对象的地址,确定要被操作的对象是否被存储在共享堆区中,并确定操作是否包含设置内部状态;当设置存储在共享堆区中的对象的内部状态时设置一个标志,它表示在构成共享堆区的多个块当中,存储了要被操作的对象的块已被更新。在本专利技术的第二个方面中,存储对象内部状态的整个共享堆区可以被传送到另一个数据处理装置。这样就允许共享堆区被不变地传送到其它数据处理装置,减少传送开销。在本专利技术的第二个方面中,在多个块中,只有其标志被设置为表明其对应块已被更新的块才被发送到其他数据处理装置。这样就减少了传送数据的数量,缩短了传送端的数据处理装置的发送时间和接收端的数据处理装置的接收时间,并减少了传送和接收的开销。在本专利技术的第二个方面中,允许从一个数据处理装置传送的共享堆区由另一个数据处理装置接收,该另一个数据处理装置将其中的内容安排到自己的共享堆区,并且计算在传送端的共享堆区的地址和接收端的共享堆区的地址之间的差;当在被传送的共享堆区中的共享对象的指针指示在传送端的共享堆区内的位置时,将根据该地址之间的差对该指针进行校正;当该指针指向传送端的共享堆区外的一个位置时,该指针被置空;由此,再现了该共享对象。因此,不再有任何需要去匹配在多个数据处理装置当中存储了共享堆区的位置。附图说明图1是示出了根据本专利技术第一实施例的系统结构的一个例子的框图。图2示出了本专利技术第一个实施例中一个对象创建过程的例子的框图。图3是在本专利技术第一个实施例中一个对象创建过程的流程图。本文档来自技高网
...

【技术保护点】
一种数据处理装置中的象状态传送方法,该数据处理装置包括应用程序和多个具有内部状态的对象,该内部状态能够被通过应用程序加以操作,所述方法包括以下步骤:确定对象是否在多个数据处理装置之间共享;当该对象在多个数据处理装置之间共享时 ,把该对象作为共享对象存储在共享堆区内;当该对象不在多个数据处理装置之间共享时,把该对象存储在堆区内;并且通过以没有变化的形式把共享堆区发送到另一数据处理装置而把共享对象的状态传送到其它数据处理装置。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:田中慎司山田哲靖
申请(专利权)人:日本电信电话株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1