CN100456238C - 实现分布式对象持久化的方法、装置及编译单元 - Google Patents
实现分布式对象持久化的方法、装置及编译单元 Download PDFInfo
- Publication number
- CN100456238C CN100456238C CNB2007100794487A CN200710079448A CN100456238C CN 100456238 C CN100456238 C CN 100456238C CN B2007100794487 A CNB2007100794487 A CN B2007100794487A CN 200710079448 A CN200710079448 A CN 200710079448A CN 100456238 C CN100456238 C CN 100456238C
- Authority
- CN
- China
- Prior art keywords
- persistence
- distributed objects
- time point
- operation code
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
Abstract
本发明提供了实现分布式对象持久化的方法和装置,包括:对分布式对象编译时,根据持久化标识自动生成用于持久化操作的操作代码;在分布式系统启动时读取的配置文件中设置标识某分布式对象开始持久化操作的时间点;根据该时间点调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。应用本发明,使得分布式对象的持久化操作不依赖于某种语音特征,因而提供了一种通用的分布式对象持久化方式。由于分布式对象持久化的操作是分布式系统实现的,因而减轻了程序员的开发和维护的工作量。本发明同时还提供了一种编译单元。
Description
技术领域
本发明涉及分布式系统技术领域,特别涉及实现分布式对象持久化的方法、装置及编译单元。
背景技术
随着计算机应用的迅速普及和现代信息技术的飞速发展,应用网络化要求系统高效地支持资源共享、信息共享、负载共享、应用集成和协调工作,进而提高其可用性、可靠性、可维护性和可扩展性。
分布式系统屏蔽分布式对上层应用的影响,使客户端像使用本地服务一样使用远端(跨进程或跨机器)的服务。支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。分布式系统可以提供以下优点:
1)可靠性和坚固性:资源冗余和自治控制使系统具备动态重构,甚至经受局部破坏也能继续工作。系统的模块性有利于维修和使用。2)增量扩展性:以廉价的模块作为系统扩展或资源更新的增量,不必象集中系统那样必须替换整个系统。3)灵活性:系统的配置容易改变,以适应不同应用对象的各种需要。4)快速响应能力:计算机资源更加靠近用户,特别是使分散的小用户能获得计算机的快速响应和直接服务,从而把大型机的计算能力与微型机的使用方便二者结合起来。5)资源共享:在对用户透明的基础上实现软件、硬件资源的共享,使单个用户的可用资源成倍增加。6)增强计算能力:按任务分布的并行处理能力受系统规模的限制较少;而按功能分布的专用处理部件同样能增强系统的有效处理能力。7)经济性:有利于发挥微型计算机的性能价格比优势。8)适应各种应用环境:分布计算机系统每一个结点上的资源配置能与当地用户的需求很好匹配,因而特别适用于经济管理、事务管理、过程控制等这样一些具有分散用户又要求相互协调的应用场合。
由于上述优势的存在,分布式系统不可阻挡的成为现在和以后的应用主力。当分布式对象在内存中创建后,他们不可能永远存在,因此必须对对象进行持久化。狭义的理解,“持久化”仅仅是把对象永久保存到数据库中;广义的理解,“持久化”包括保存到数据库、文件系统、磁带或者其他机器等等。分布式对象的持久化有着广泛的用途,如在通讯系统中可以实现呼叫的自动钝化和激活;可以支持呼叫备份,实现高可靠性(HA)机制等等。现有的将分布式对象进行持久化的方式主要有以下实现方式:
通过对象/关系模型映射(O/R Mapping)工具实现分布式对象持久化:Hibernate是一个java开放源代码的对象/关系模型映射(O/R Mapping),O/RMapping提供了多种典型工具,Hibernate只是其中的一种。O/R Mapping工具实现了java下面的对象模型到数据库模型的自动映射。可以将分布式对象持久化到关系型数据库中,或从关系型数据库中恢复对象。
但是,由于O/R Mapping工具都是基于java语音实现,因而无法在C++和其他语言下面使用。
通过手工编程调用方式实现分布式对象持久化:通过手工编程的方式调用分布式对象的序列化和反序列化函数,将分布式对象持久化到关系型数据库中,或从关系型数据库中恢复对象。
采用上述方法时,由于对分布式对象序列化和反序列化函数的调用点必须写死在程序代码中,因而,当分布式对象发生变化时,需要重新编写序列化和反序列化代码函数;如果序列化和反序列化调用点发生变化,还需要修改用户的程序代码。
发明内容
本发明实施例提供一种实现分布式对象持久化的方法、装置及编译单元,以实现不依赖于语言特性的、通用的分布式对象持久化方式。
本发明实施例包括:
一种实现分布式对象持久化的方法,包括:
为需要持久化的分布式对象属性设置持久化标识,对所述分布式对象编译时,根据所述持久化标识自动生成用于持久化操作的操作代码;
在配置文件中设置标识某分布式对象开始持久化操作的时间点;分布式系统启动时读取所述配置文件,根据所述开始持久化操作的时间点,调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
一种实现分布式对象持久化的装置,包括:
配置单元,用于应用接口定义的语言为需要持久化的分布式对象属性设置持久化标识;在配置文件中设置标识某分布式对象开始持久化操作的时间点;
编译单元,用于根据所述持久化标识生成用于持久化操作的操作代码;
持久化单元,用于根据所述开始持久化操作的时间点,调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
本发明实施例对分布式对象编译时,根据持久化标识自动生成用于持久化操作的操作代码;在分布式系统启动时读取的配置文件中设置标识某分布式对象开始持久化操作的时间点;根据该时间点调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
应用本发明,使得分布式对象的持久化操作不依赖于某种语音特征,因而提供了一种通用的分布式对象持久化方式。由于分布式对象持久化的操作是分布式系统实现的,因而减轻了程序员的开发和维护的工作量。
附图说明
图1是根据本发明一实施例的实现分布式对象持久化的流程示意图;
图2是根据本发明一实施例的实现分布式对象持久化的装置结构示意图。
具体实施方式
下面结合附图对本发明再做详细说明。
众所周知,所谓分布式对象的持久化实际就是分布式对象属性的持久化,例如,如果某个分布式对象包含三个属性,其中的两个需要持久化,则通常可以称为该分布式对象需要持久化,或者,也可以称为该分布式对象的某个或某些属性需要持久化。
参见图1,其是根据本发明一实施例的实现分布式对象持久化的流程示意图。本实施例中,假设一个分布式对象的三个属性中有两个属性需要持久化。
步骤101,为需要持久化的分布式对象设置持久化标识,具体为:在接口定义语言(IDL)中增加一个持久化标识,用于标识分布式对象的某个属性需要持久化。持久化标识针对分布式对象的属性,每个需要持久化的分布式对象属性对应一个持久化标识。由于持久化标识是应用接口定义的语言设置的,这样可以使得具体实现不依赖于语言特性。
例如:
interface CommodityItem
{
持久化标识attribute string name;
持久化标识attribute long amount;
double price;
};
上述例子表示名称为CommondityItem的分布式对象带有三个属性,其中前两个需要持久化。
步骤102,应用IDL编译器对分布式对象编译时,根据持久化标识自动生成用于持久化操作的操作代码;该用于持久化操作的操作代码可以是序列化函数。当然,在生成用于持久化操作的操作代码如序列化函数的同时,还可以自动生成与用于持久化操作的操作代码对应的用于恢复分布式对象属性操作的操作代码,该用于恢复分布式对象属性操作的操作代码可以是反序列化函数。序列化函数用于对分布式对象进行持久化操作,将持久化的操作结果保存在缓冲器(buffer)或硬盘内;反序列化函数用于根据buffer或硬盘内的数据恢复出分布式对象中已被持久化的属性。
上述两个步骤可被看作是持久化操作的预处理,与步骤103之间没有紧密的时间联系,但生成的代码供103步骤使用,代码自动生成后减少人工写代码的工作量。
步骤103,在配置文件中设置开始持久化操作的时间点,分布式系统启动时读取该配置文件,根据所述开始持久化操作的时间点,调用与分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
分布式系统在持久化分布式对象时,可以将序列化后的结果保存在内存或硬盘中,或者,还可以同步到备份节点中实现HA机制。
在上述配置文件中,还可以包括:标识恢复某分布式对象属性操作的时间点;这样在分布式对象持久化操作结果被保存后,还可以包括:根据恢复某分布式对象属性操作的时间点,调用用于恢复持久化操作的操作代码,恢复出分布式对象已被持久化的属性。
上述开始持久化操作的时间点或恢复分布式对象属性操作的时间点,可以在分布式对象被远程调用之前或之后,还可以在远程调用之前和之后同时存在。
本发明实施例还公开了一种实现分布式对象持久化的装置,参见图2,包括:
配置单元210,用于应用接口定义的语言为需要持久化的分布式对象属性设置持久化标识;在配置文件中设置标识某分布式对象开始持久化操作的时间点;
编译单元220,用于根据所述持久化标识生成用于持久化操作的操作代码;
持久化单元230,用于根据所述开始持久化操作的时间点,调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
本发明实施例所述装置还可以包括:持久化恢复单元(图未示),此时,上述配置单元还用于标识恢复某分布式对象属性操作的时间点;编译单元还用于自动生成与所述用于持久化操作的操作代码对应的用于恢复分布式对象属性操作的操作代码;持久化恢复单元用于在所述分布式对象持久化操作结果被保存后,根据所述恢复某分布式对象属性操作的时间点,调用所述用于恢复持久化操作的操作代码,恢复出分布式对象已被持久化的属性。
同样地,开始持久化操作的时间点或恢复分布式对象属性操作的时间点,可以在分布式对象被远程调用之前或之后,还可以在远程调用之前和之后同时存在。
本发明实施例还公开了一种编译单元,包括:
操作代码生成单元,用于对所述分布式对象编译时,根据持久化标识自动生成用于持久化操作的操作代码。
上述操作代码生成单元还用于自动生成与所述用于持久化操作的操作代码对应的用于恢复分布式对象属性操作的操作代码。
可见,本发明实施例使得分布式对象的持久化操作不依赖于某种语音特征,因而提供了一种通用的分布式对象持久化方式。由于分布式对象持久化的操作是分布式系统实现的,因而减轻了程序员的开发和维护的工作量。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1、一种实现分布式对象持久化的方法,其特征在于,包括:
为需要持久化的分布式对象属性设置持久化标识,对所述分布式对象编译时,根据所述持久化标识自动生成用于持久化操作的操作代码;
在配置文件中设置标识某分布式对象开始持久化操作的时间点;分布式系统启动时读取所述配置文件,根据所述开始持久化操作的时间点,调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
2、根据权利要求1所述的方法,其特征在于,
所述持久化标识是应用接口定义的语言设置的,且针对分布式对象属性,每个需要持久化的分布式对象属性对应一个持久化标识。
3、根据权利要求1所述的方法,其特征在于,所述分布式对象持久化操作结果被保存在内存或硬盘中,或被同步到备份节点中。
4、根据权利要求3所述的方法,其特征在于,对所述分布式对象编译,生成用于持久化操作的操作代码的同时,还包括:自动生成与所述用于持久化操作的操作代码对应的用于恢复分布式对象属性操作的操作代码;
所述配置文件中还包括:标识恢复某分布式对象属性操作的时间点;
在所述分布式对象持久化操作结果被保存后,还包括:根据所述恢复某分布式对象属性操作的时间点,调用所述用于恢复分布式对象属性操作的操作代码,恢复出分布式对象已被持久化的属性。
5、根据权利要求4所述的方法,其特征在于,
所述用于持久化操作的操作代码包括序列化函数;
所述用于恢复分布式对象属性操作的操作代码包括反序列化函数。
6、根据权利要求4所述的方法,其特征在于,所述开始持久化操作的时间点或恢复分布式对象属性操作的时间点,在所述分布式对象被远程调用之前或之后,或在远程调用之前和之后同时存在。
7、一种实现分布式对象持久化的装置,其特征在于,包括:
配置单元,用于应用接口定义的语言为需要持久化的分布式对象属性设置持久化标识;在配置文件中设置标识某分布式对象开始持久化操作的时间点;
编译单元,用于根据所述持久化标识生成用于持久化操作的操作代码;
持久化单元,用于根据所述开始持久化操作的时间点,调用与所述分布式对象对应的用于持久化操作的操作代码,对所述分布式对象进行持久化操作。
8、根据权利要求7所述的装置,其特征在于,
所述配置单元,还用于标识恢复某分布式对象属性操作的时间点;
所述编译单元,还用于自动生成与所述用于持久化操作的操作代码对应的用于恢复分布式对象属性操作的操作代码;
该装置还包括:
持久化恢复单元,用于在所述分布式对象持久化操作结果被保存后,根据所述恢复某分布式对象属性操作的时间点,调用所述用于恢复分布式对象属性操作的操作代码,恢复出分布式对象已被持久化的属性。
9、根据权利要求8所述的装置,其特征在于,所述开始持久化操作的时间点或恢复分布式对象属性操作的时间点,在所述分布式对象被远程调用之前或之后,或在远程调用之前和之后同时存在。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100794487A CN100456238C (zh) | 2007-03-12 | 2007-03-12 | 实现分布式对象持久化的方法、装置及编译单元 |
PCT/CN2008/070453 WO2008110108A1 (fr) | 2007-03-12 | 2008-03-10 | Procédé et dispositif pour réaliser une persistance d'objet distribué et unité de compilation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100794487A CN100456238C (zh) | 2007-03-12 | 2007-03-12 | 实现分布式对象持久化的方法、装置及编译单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101021791A CN101021791A (zh) | 2007-08-22 |
CN100456238C true CN100456238C (zh) | 2009-01-28 |
Family
ID=38709566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100794487A Expired - Fee Related CN100456238C (zh) | 2007-03-12 | 2007-03-12 | 实现分布式对象持久化的方法、装置及编译单元 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100456238C (zh) |
WO (1) | WO2008110108A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100456238C (zh) * | 2007-03-12 | 2009-01-28 | 华为技术有限公司 | 实现分布式对象持久化的方法、装置及编译单元 |
CN103309733A (zh) * | 2013-06-07 | 2013-09-18 | 深圳中兴网信科技有限公司 | 任务调度信息持久化装置和任务调度信息持久化方法 |
CN103678609B (zh) * | 2013-12-16 | 2017-05-17 | 中国科学院计算机网络信息中心 | 一种基于分布式关系‑对象映射处理的大数据查询的方法 |
CN108399068B (zh) * | 2018-03-02 | 2021-07-02 | 上海赞控网络科技有限公司 | 函数程序持久化的方法、电子设备及存储介质 |
CN110647480B (zh) * | 2018-06-26 | 2023-10-13 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116412A1 (en) * | 2001-02-16 | 2002-08-22 | Barnes Christine Michelle | System and method for object state persistence |
US20020152232A1 (en) * | 1998-09-21 | 2002-10-17 | Karl A. Uppiano | Method for preserving the state of a java applet during the lifetime of its container |
US20040010498A1 (en) * | 2002-07-10 | 2004-01-15 | Lin Tser Yeng | Object persistence to relational database within run-time environment supporting attributes and reflection |
US20050149952A1 (en) * | 2003-04-11 | 2005-07-07 | Microsoft Corporation | Persisting state across navigations in a navigation-based application and responding to navigation-related events throughout an application |
US20060010171A1 (en) * | 2004-07-08 | 2006-01-12 | International Business Machines Corporation | Defer container-managed persistence operations on transactional objects |
CN1749999A (zh) * | 2004-09-17 | 2006-03-22 | 微软公司 | .net数据类型和实例的持久存储 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477701B1 (en) * | 1999-09-30 | 2002-11-05 | Seiko Epson Corporation | Version-adaptive serialization and deserialization of program objects in an object-oriented environment |
US7197512B2 (en) * | 2003-03-26 | 2007-03-27 | Microsoft Corporation | Type bridges |
CN100456238C (zh) * | 2007-03-12 | 2009-01-28 | 华为技术有限公司 | 实现分布式对象持久化的方法、装置及编译单元 |
-
2007
- 2007-03-12 CN CNB2007100794487A patent/CN100456238C/zh not_active Expired - Fee Related
-
2008
- 2008-03-10 WO PCT/CN2008/070453 patent/WO2008110108A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020152232A1 (en) * | 1998-09-21 | 2002-10-17 | Karl A. Uppiano | Method for preserving the state of a java applet during the lifetime of its container |
US20020116412A1 (en) * | 2001-02-16 | 2002-08-22 | Barnes Christine Michelle | System and method for object state persistence |
US20040010498A1 (en) * | 2002-07-10 | 2004-01-15 | Lin Tser Yeng | Object persistence to relational database within run-time environment supporting attributes and reflection |
US20050149952A1 (en) * | 2003-04-11 | 2005-07-07 | Microsoft Corporation | Persisting state across navigations in a navigation-based application and responding to navigation-related events throughout an application |
US20060010171A1 (en) * | 2004-07-08 | 2006-01-12 | International Business Machines Corporation | Defer container-managed persistence operations on transactional objects |
CN1749999A (zh) * | 2004-09-17 | 2006-03-22 | 微软公司 | .net数据类型和实例的持久存储 |
Non-Patent Citations (2)
Title |
---|
Hibernate中一种自定义持久化机制的设计与实现. 刘攀,周绍梅,武友新.江西科学,第25卷第1期. 2007 |
Hibernate中一种自定义持久化机制的设计与实现. 刘攀,周绍梅,武友新.江西科学,第25卷第1期. 2007 * |
Also Published As
Publication number | Publication date |
---|---|
WO2008110108A1 (fr) | 2008-09-18 |
CN101021791A (zh) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102222012B (zh) | 针对外部数据源的静态类型检查 | |
JP4038564B2 (ja) | コンピュータ型システムおよびデータ処理タスクを実行する方法 | |
CN100498719C (zh) | 一种执行批处理作业的方法及装置 | |
Kaveh et al. | Deadlock detection in distribution object systems | |
CN103336705A (zh) | 脚本处理和工作流系统间的自动转码和语义自适应 | |
US20070016893A1 (en) | Tracking resource usage by applications | |
JP5396979B2 (ja) | ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
CN104050261A (zh) | 基于Storm的可变逻辑的通用数据处理系统及方法 | |
CN102810057A (zh) | 一种记录日志的方法 | |
CN100456238C (zh) | 实现分布式对象持久化的方法、装置及编译单元 | |
US20070234315A1 (en) | Compiling an application by cluster members | |
JP2007531147A (ja) | プログラムの実行システムおよび実行方法 | |
CN104965689A (zh) | 一种cpu/gpu的混合并行计算方法及装置 | |
CN102591778B (zh) | 一种基于服务的可扩展程序竞赛评测系统 | |
CN102859489A (zh) | 可恢复的方法 | |
US9535687B2 (en) | Audited builds based upon separate class dependency records | |
CN101727648A (zh) | 服务系统中的超时控制方法及服务系统 | |
CN103257852A (zh) | 一种分布式应用系统的开发环境搭建的方法和装置 | |
Grundy et al. | Performance engineering of service compositions | |
CN101789944B (zh) | 多功能电能表通信协议栈的开发系统 | |
CN103473034A (zh) | 一种动态发布Web 服务的方法和装置 | |
CN109683950A (zh) | 应用程序打包方法、装置、存储介质及终端 | |
CN101136780A (zh) | 获取用户命令信息的方法、系统及用户命令注册的装置 | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090128 Termination date: 20200312 |
|
CF01 | Termination of patent right due to non-payment of annual fee |