分配和更新杂散资源的方法和系统的制作方法

文档序号:6361204阅读:203来源:国知局
专利名称:分配和更新杂散资源的方法和系统的制作方法
技术领域
本发明涉及一种分配和更新杂散资源的方法和系统,具体地涉及一种用分布式计算环境对渐进式演化的杂散资源进行大规模地分配、版本更新和访问的方法和系统。
背景技术
本申请文件中的资源是指经常使用、相对静态但仍然在扩展(演化)的数字数据,例如字典、名称列表、目录、电话号码簿等。一个企业可以具有由不同的计算系统使用的各种资源,为了在本地计算机上快速地检索这些资源而对它们进行复制和分配。例如,一个大企业可能需要维护在业务中经常使用的术语词典,这个词典需要被分配到所有员工的计算机,以便用工具软件进行拼写检查,正确地识别这些术语。这个词典就是一个渐进式演化的资源,它的更新频率较低,例如每周或每月更新一次。该企业也可能想对该词典进行版本更新控制。同时,该企业也可能同时在维护着一个标准的计算机系统的配置信息,这个配置信息需要分配到所有员工的计算机,以便所有计算机的配置都正确并符合该企业的策略,那么这个配置信息也是一种渐进式演化的资源。
目前,每个渐进式演化的资源都有其自己的分配通道(或在线,或脱机),并且都需要有额外的开发、配置、和维护的费用。
在美国专利No.6405219中公开了一种用于自动更新存储于内容服务器上的一组文件的版本的方法和系统,但是其中通过网络传输用于复制的整个文件,这就会占用大量的网络带宽。
美国专利No.6272536中公开了一种分配代码和数据的方法和系统,其中描述了用于通过网络向成千上万的客户机分配软件程序和数据的系统和方法。该美国专利的技术方案不包含任何用于分配的中间服务器,因而不能对服务器的负载进行分担,使用户不能快速地分配到代码和数据。另外,该美国专利仅能区别新版本和旧版本,从而进行线性版本管理,不能支持完整的资源修订树结构。
美国专利No.6182117中公开了一种用于工作组信息复制的方法和设备。该设备提供了使用现有的存储-转发消息网络(例如电子邮件系统)在计算机站点之间复制数据的能力。在该美国专利的技术方案中,对对象/资源的改变被视为新的对象/资源,而这则不利于对特定对象和/或资源的更新和跟踪。
在上述现有技术中,存在占用信道带宽过大,开发、配置、和维护的费用较高,对版本更新控制的能力较差的缺点,并且不能将资源补丁的复制与版本更新的控制进行集成。

发明内容
为了解决上述现有技术中的问题,本发明的目的是提供一种用于分配和更新资源的方法和设备,使分配资源的服务器和网络的负载可以得到分散,从而加快分配的速度。
本发明的另一个目的是提供一种用于分配和更新资源的方法和设备,可以根据树状结构对资源版本分类,并进行更精细地控制,从而使服务器和网络的负担减轻,并加快分配资源的速度。
为了实现上述目的,本发明提供了通用的方法和设备,来对多个渐进式演化的杂散资源进行分配、版本更新和访问。
本发明提供一种用于分配和更新资源的方法,所述方法包括步骤由资源生产者向第一服务器注册资源和资源插件,并在有资源更新时提交资源补丁;第二服务器从所述第一服务器复制所述资源、资源插件和资源补丁,资源消费者从所述第二服务器下载所述资源、资源插件和资源补丁;和在资源消费者处,通过执行所述资源插件以将所述资源补丁应用于所述资源而对所述资源进行更新,并得到更新后的资源版本。
本发明还提供一种用于分配和更新杂散资源的方法,所述方法包括步骤由资源生产者向第一服务器注册资源和资源插件,并提交资源补丁;所述第一服务器对所述资源、资源插件和资源补丁进行存储;第二服务器从所述第一服务器复制所述资源、资源插件和资源补丁;如果资源消费者侧没有所需要的资源和相应的资源插件,则所述资源消费者向所述第二服务器请求并下载所述资源、资源插件和资源补丁;通过执行所述资源插件,将接收到的所述资源补丁应用于所述资源,以获得更新后的资源;在所述资源消费者侧将所述新的资源存储为最新的修订版本,以供资源消费者使用。
本发明还提供一种用于分配和更新资源的系统,所述系统包括第一编程接口模块,用于由资源生产者产生资源、资源插件和在有资源更新时产生资源补丁;第二编程接口模块,用于由资源消费者利用所述资源插件将所述资源补丁应用于所述资源而对所述资源进行更新,以得到更新后的资源版本;和复制子系统,用于从所述第一编程接口模块接收所述资源、资源插件和资源补丁,对它们进行存储并将它们提供给所述第二编程接口模块。
其中上述复制子系统包括第一服务器,用于从所述第一编程接口模块接收所述资源、资源插件和资源补丁并对它们进行存储;和第二服务器,用于从所述第一服务器复制所述资源、资源插件和资源补丁,对它们进行存储并将它们提供给所述第二编程接口模块。
本发明的优点是(1)由资源插件利用递增式更新方法、通过将资源补丁应用于资源来实现数据/资源的更新,因此,仅仅一小部分资源补丁需要通过网络进行传输。这在大规模渐进式资源分配中将大大地节省网络带宽。(2)本发明通过将资源补丁的复制和版本更新的控制进行有效地集成,可以对资源的版本更新进行更细微地控制,即通过按照资源的种类将资源进行分类,并针对每个分类的资源版本产生资源补丁,这样对于一个非常微小的更新变化,只需要一个较小的资源补丁即可解决问题,而不需要对整个资源进行全面的处理和传输。


图1是表示本发明中的资源、资源补丁、资源插件、资源元数据、资源生产者、和资源消费者之间的关系的示意图。
图2是本发明中复制子系统的功能的示意图。
图3是说明根据本发明的系统的方框图。
图4示出了资源修订树结构的例子。
图5是描述原始资源数据与资源补丁之间的关系状态的示意图。
图6显示了资源消费者、RDVA API模块、资源插件和次级服务器之间执行的操作的定时图。
图7是说明根据本发明的RDVA系统的工作流程图。
具体实施例方式
下面将对解决本发明技术问题并达到其技术效果的RDVA(资源分配、版本更新和访问)系统进行详细的说明。
首先,将通过结合图1和2说明和描述本发明的RDVA系统中的各个概念和部件。
图1是标识本发明中的资源、资源补丁、资源插件、资源元数据、资源生产者、和资源消费者之间关系的示意图。
在图1中,资源206表示经常使用、相对静态但仍然在演化(扩展)的数字数据,例如字典、名称列表、目录、电话号码簿等,资源206的每次演化是通过资源补丁202进行渐进式更新来实现的,并通过所进行的修订来表示,每次通过资源补丁202进行的资源更新(修订)都会创建新的资源修订版。
该资源206可以通过资源生产者104来产生和更新。不同的资源206具有不同的格式,而本发明的RDVA系统仅把资源206作为二进制对象处理,无需知道其内部结构。因此,在本发明中,资源206可以是任何形式的数据,即杂散的资源。例如,字典资源可示例如下Ask<<[STOCK TERM]<<[EXPLANATION]The price at which someonewho owns a security offers to sell it;also known as the asked price.(See also“BestAsk”.)Assets<<[STOCK TERM]<<EXPLANATION]Any possessions that hasvalue in an exchange.
上述两条即为字典资源中对股票术语“要价(ask)”和“资产(asset)”的解释,其中,“Ask”和“Assets”被称为术语字串。而对于例如电话号码簿,则它的资源格式会不同,如Person A<<Office Number]60001000<<[Mobile Phone Number]139...<<[Office Address]中国北京。
以上是某人Person A的办公电话、移动电话号码和办公地址的记录。可见,上述电话号码簿的资源格式与字典资源的格式是不同的。
资源生产者104代表产生资源的计算机程序或人和设备,它还可以对资源206进行更新。
资源消费者108代表应用资源以处理数据(例如标记文本中的关键字)或完成特定任务(对计算机网络进行拨号)的计算机程序或人和设备。资源消费者108可以读取由RDVA系统准备的资源206,但是其不能写入和/或更新资源206,而只能对其进行利用。
资源补丁202是表示增加、删除或改变部分资源的资源更新单元。资源补丁202是RDVA系统将要跟踪和记录、更新的基本单元。资源补丁的格式例如示例如下D!HTML<<[ABBREVIATION IT TERM]A!HTML<<[ABBREVIATION IT TERM]<<[FULL NAME]Hyper TextMarkup Language<<[WEB SITE]http//www.w3.org/MarkUp/<<[EXPLAN-ATION]The standard markup language for designing Web pages,Markup tags,orformatting commands,allow the Web page designer to specify highlighting,position graphics,creat hyperlinks,etc.
其中,D!开始的记录表示删除该记录,A!开始的记录表示添加该记录。即,在上述示例中,第一行表示删除“缩写IT术语”中原有的条目“HTML”,而在其中增加经过修改的条目“HTML”。
另外,在上述资源206和资源补丁202的示例中,“[]”中的内容是识别该条内容的“类别字串”,其对应于相应的类别号(未示出),该类别号是一个整数,用于标识该条内容所对应的术语的类别。
资源补丁202中包括用于识别所述资源的变化的资源元数据208。资源补丁202与资源版本相关,并具有相应的资源版本号,其中一个资源版本代表所述资源206进行了一次更新。不同的资源206具有不同的补丁格式和不同的递增更新方法。本发明的RDVA系统对于资源补丁202的格式和内容也是不知道的,而仅把它们作为二进制对象来处理。
资源元数据208(或资源特性)是与资源206相关的关键值,它标识资源206中被改变的部分的数据,也包括资源206的修订时间、版本号、作者等的识别数据(未示出)。由于本发明有意将资源补丁202从资源206中分离出来,用以标识资源206中所改变的部分,所以仅仅通过复制子系统100复制资源206中已经改变的部分,即仅复制元数据208,就可以对资源206进行更新。
资源插件(程序)204表示实现编程接口的计算机程序,其能够将资源补丁202应用于现有的资源206并产生新的资源。特别地,资源插件204和资源补丁202是资源206中的一种,被作为特殊种类的资源来处理。资源206及其资源补丁202按照修订树(后面将详细描述)的方式进行管理。在资源更新的过程中,资源插件204对资源补丁202进行解释,并应用递增更新方法。当首次在RDVA系统中创建资源206时,资源插件204必须由资源生产者104提供。它们之间的关系更清楚地示于图1中。
本发明的资源插件204是必须符合RDVA系统的ResourcePlugin(资源插件)接口的软件模块。例如,资源插件204必须实现下列Java接口<pre listing-type="program-listing">  public interface ResourcePlugin{  /**   *Apply a patch on a resource and return the result.   *@param res the resource instance   *@param delta the patch instance   *@param MakeNewRes whether to create a new resource to store the   final result or just change the original resource<code>res</code>.   *@return the newly created resource or the changed original resource as   the result of applying the patch.   */   public Resource applyPatch(Resource res,Patch delta,boolean   madeNewRes)   throws IOException,TARRException;  }</pre>上面仅给出了资源插件的接口程序,在上述接口程序中,“applyPatch(应用补丁)”表示计算新的资源的函数,“res”代表一个资源的实例,“delta”代表资源的变化,即补丁的实例,并且“madeNewRes”代表将该“delta”数据应用于“res”的递增更新方法。其中“res”和“delta”分别代表不同类型的资源和补丁。
对于不同类型的资源和补丁,该插件204的具体程序是不同的。在“applyPatch”方法中给出的资源和补丁仅仅是特定插件204能够处理的资源206和补丁202的类型,该插件不需要处理它不关心的资源类型。即,例如有两种资源“字典”和“产品目录”,那么处理这两种资源的资源插件是不同的,处理资源“字典”的插件只能处理“字典”,而不能处理它不关心的“产品目录”。同样,处理资源“产品目录”的插件只能处理“产品目录”,而不能处理它不关心“字典”。
例如,对于字典资源,资源插件204可以实现如下<pre listing-type="program-listing">{File resFile=((SimpleDictionaryResouce)res).get SimpleDictionaryFile();if(resFile==null)reture null;{File detlaFile=((SimpleDictionaryResouce)detla).getSimpleDictionaryFile();if(detlaFile==null)reture null;SimpleDictionaryFile dicFile=new SimpleDictionaryFile();DicFile.load(resFile);DicFile.applyPatch(detlaFile);DicFile.save(resFile);reture res;}</pre>根据本发明的实施例,在给定旧资源数据及其补丁的情况下,资源插件204必须通过上述DicFile.applyPatch(detlaFile)来实现计算新的资源数据的“applyPatch”的方法(即递增更新方法)。当需要根据旧的修订版和补丁计算新的资源数据时,本发明的RDVA系统将要调用上述方法。
本发明中的递增更新方法是指根据资源206的变化对资源206进行计算以产生新的资源数据的算法。现有技术中的这些算法都是成熟的,可以直接应用于本发明。
下面举例说明本发明的递增更新方法。对于前面所述的字典资源,applvPatch初始化“删除记录”列表和“添加记录”列表(即为“删除记录”和“添加记录”的列表申请一定的内存),然后读取补丁(Patch)文件中的一行(即一条记录)。如果补丁文件中该行的起始标记是“D!”或“d!”,则读取该行包含的术语字串(即字典资源中被解释的术语)和术语类别字串,找到该术语类别字串对应的类别号,并将术语字串和类别号合成为一个字串,使其加入“删除记录”列表;否则,该行的起始标记就是“A!”或“a!”,读取该行包含的术语字串和术语类别字串,找到该术语类别字串对应的类别号,并将术语字串和类别号合成为一个字串,使其加入“添加记录”列表。
然后,applyPatch申请一个新的缓冲池,用于存储得到修改的二进制资源文件。接下来,对事先读入内存的二进制资源文件的每条记录进行扫描,读取一条记录的术语字串和类别号。如果该记录包含的术语字串和类别号已经包含在所述的“删除记录”列表中,则跳过该记录(即不将该记录写入缓冲池,也就是在修改后的资源文件中该记录已经不再存在);否则,如果该记录包含的术语字串和类别号已经包含在所述的“添加记录”列表中,则跳过该记录(该记录将在后面的步骤中被替换掉);否则,如果该记录包含的术语字串和类别号既不包含在“删除记录”列表中,也不包含在“添加记录”列表中,则将该记录写入缓冲池(即,将二进制资源文件中没有被修改的记录都读入缓冲池中)。
然后,ApplyPatch扫描“添加记录”列表,读取一条记录并将该记录写入缓冲池(替换二进制资源文件中其术语字串和类别号已包含在“添加记录”中的记录)。接下来,将指向原二进制资源文件的内存指针改为指向新的缓冲池。这样,就得到了一个经过修改的二进制资源文件。
在本发明中,可以通过资源插件204中的Compile函数来将资源文件编译成二进制文件,而applyPatch函数根据字典资源补丁中要删除和添加的记录直接对该二进制文件进行修改。这样,不同的资源206和补丁202就可以具有不同的格式,而本发明的RDVA系统仅把资源206和补丁202作为二进制对象处理,无需知道其内部结构。因此,在本发明中,资源206和补丁202可以是任何形式的数据。编译函数Compile示例如下/***compile a source into binary dictionary*@param source the source*/public void compile(File source){}由于将资源文件编译成二进制文件的方法可以是本领域中常用的方法,因此这里将省略对它进行的描述。
下面结合图2和图3说明本发明的RDVA系统。
图2是本发明中RDVA系统的功能的示意图。
如图2所示,RDVA系统依赖于复制子系统100来分配资源206、资源插件204和资源补丁202。RDVA系统可以包括多个资源生产者104(图2中只示出一个)和多个资源消费者108(图2中只示出两个)。
RDVA API模块106和110为资源生产者104和资源消费者108提供了友好的编程语言接口。
资源生产者104通过RDVA API模块106来实现与复制子系统100的接口,其中RDVA API(RDVA应用程序编程接口)模块106用于向RDVA复制子系统100注册资源206和资源插件204、当有资源更新时提交资源补丁202,它可以应资源生产者104的请求自动执行资源插件104的代码。
资源消费者108(1)、(2)通过RDVA API模块110(1)、(2)来实现与复制子系统100的接口,其中RDVA API模块110用于向RDVA复制子系统100请求资源206和资源插件204、当有用于更新资源206的资源补丁202时,可以访问RDVA复制子系统100,并应资源生产者104的请求自动执行资源插件104的代码。
图3是说明根据本发明的RDVA系统的方框图。
如图3所示,本发明的系统包括通过网络300连接起来的复制子系统100、用于生产者104的API模块106和用于消费者108的API模块110。上述复制子系统100包括RDVA服务器102(1)和RDVA服务器102(2),其中RDVA服务器102(1)、(2)也可以是通过网络连接起来的计算机。RDVA服务器将它们的功能性作为网络服务体现出来。
网络300可以是现有技术中的所有网络,例如局域网、企业网、和各种广域网(如因特网等)。
由图3可见,复制子系统100包括多个相互之间复制资源的RDVA服务器102(图2中只示出两个服务器(1)和(2))。RDVA服务器102(1)接收所有原始注册的资源206、资源插件204和所有的资源补丁202,并将它们都记录在自己的资源数据库(未示出)中。RDVA服务器102(2)在本发明中又被称为次级服务器,它从RDVA服务器102(1)复制资源206、资源插件204和资源补丁202等各种数据,并直接向资源消费者108提供服务。RDVA服务器102(1)和(2)在它们各自的数据库中存储的各种数据的复制件实际上是它们的文件系统中的多组文件。
复制子系统100在进行复制时可以利用现有的复制工具,例如IBM DB2复制机制,或其它种类的复制工具。
RDVA API(应用程序编程接口)模块106(110)可以应资源生产者104或资源消费者108的请求而自动执行资源插件204的代码。RDVA API模块106(110)可以作为专用硬件配置于联网的桌面计算机或应用程序服务器中,运行资源生产者或资源消费者的程序,并在其中的高速缓冲存储器112中缓存资源206、资源插件204的代码、和资源206的最近修订版号码。
与资源生产者104一起工作的RDVA API模块106通过资源生产者104的请求向RDVA服务器102(1)注册资源206和资源插件204,并向RDVA服务器102(1)提交资源补丁202。
当向RDVA服务器102(1)注册资源206及其插件204,或资源生产者104通过RDVA API模块106向RDVA服务器102(1)提供资源补丁202时,RDVA服务器102(1)接受这些数据并在其自身的数据库(未示出)中进行存储。当资源消费者108通过RDVA API模块110请求资源206的修订版时,RDVA API模块110在本地检索原始资源、资源插件204或资源补丁202。当其本地没有上述所请求的资源、资源插件204或资源补丁202,RDVA API模块110则向RDVA服务器102(2)发出请求。如果RDVA服务器102(2)也没有上述资源,而其它服务器(如RDVA服务器102(1))具有这些数据时,RDVA服务器102(2)可以从RDVA服务器102(1)将这些数据拉至RDVA服务器102(2)。当然,RDVA服务器102(1)也可以应RDVA API模块110或RDVA服务器102(2)的请求将数据发送给它们。
下面结合图4和图5对本发明中资源更新的机制和状态进行说明。
图4给出了包含三个分支和两个版本的资源修订版的例子。如图4所示,通过资源补丁202进行的每次资源更新都创建一个新的资源修订版(如修订版1.1、修订版1.2等),该新的资源修订版记录更新后的资源206的状态。可以创建资源修订版的多个分支,每个分支对应于一个不同的资源小类,以在资源演化的不同线路上对各个资源更新的状态进行分离。资源的所有分支形成了资源修订树,即形成了表示资源更新的状态的树状结构。资源版本实际上是用于识别资源修订版的命名标记。
如图4所示,本发明中的资源206的原始状态(即原始资源)形成了最初的原始修订版1.1,这个原始修订版被标记为原始版本1.1而供用户公开使用。对原始资源修订版1.1应用资源补丁202(1)(如对字典资源中的“缩写IT术语”进行了变更)后,形成修订版1.2,并产生了分支1.2.1(并被标记为该分支1.2.1中的原始修订版1.2.1.1),该分支1.2.1用于对另一个小类的资源进行更新(如对字典资源中的“股票术语”的修改);对修订版1.2再次应用资源补丁202(2)(如对字典资源中的“缩写IT术语”进行修改),产生了新的修订版1.3,并产生新的分支1.3.1(并被标记为该分支1.3.1中的原始修订版1.3.1.1),该分支1.3.1用于另一种更新(即对字典资源中的“贸易术语”进行修改)。
对资源修订版1.2.1.1应用资源补丁202(3)(如对字典资源中的“股票术语”进行修改),形成了新的修订版1.2.1.2(未示出)。对资源修订版1.3.1.1应用资源补丁202(4)(如对字典资源中的“贸易术语”进行修改),形成了新的修订版1.3.1.2(未示出)。
再对修订版1.3应用资源补丁202(5)(如对字典资源中的“缩写IT术语”进行修改),又产生了新的修订版1.4,这个修订版1.4被标记为版本1.4而供用户公开使用。在上述过程中除修订版1.4以外的其它各个修订版只作为资源206的更新状态的记录,而不供用户公开使用。
在上述资源更新的过程中,所有的修订版均包括资源206的元数据,它标识资源206中被改变的部分的数据,也包括资源206的修订时间、版本号、作者等的识别数据(未示出)。在RDVA服务器102(1)中保存资源206的所有修订版和版本、资源补丁202以及资源插件204,也就是在其中保存了对资源206的修订的整个历史。
上述对资源修订版的树状结构管理是通过利用对资源的分类来实现的,即对字典资源中不同的资源进行分类,例如,在一个企业中,按照不同部门对该资源的使用范畴来建立不同的分支,如对财务部、法律部、研发部、市场部等分别建立不同的分支。当然,也可以通过将资源的种类和对资源的修订方式相结合来实现对资源修订版的树状结构的管理。
这样,可以通过不同的分支对不同的资源进行识别,而每个分支上的各个修订版则标识了该类资源的演化进程状态。
图5是描述了资源数据库中表示上述原始资源的更新与资源补丁之间的关系状态的示意图。
如图5所示,RDVA服务器102的资源数据库可以被看作是包括所有资源206的所有修订树的集合。RDVA服务器通过将资源补丁202增加到适当的分支上来更新资源数据库。
下面将说明资源生产者104如何向复制子系统100注册新资源206并提交资源补丁202,以及资源消费者108如何获得正确版本的资源206。
(1)资源注册当资源生产者104利用复制子系统100注册资源206时,新的资源206被输入到本发明的RDVA系统中。资源生产者104必须按照二进制块的格式提供原始资源数据206,并同时提供相应的资源插件204。这个资源插件204可以是原有的资源插件,也可以是新提供的资源插件(例如是jar文件或dll文件)。注册后,该资源插件204被复制到需要它们的RDVA系统中的适当位置。这里,资源插件204的复制与其它资源206的复制是相同的。
资源生产者104可以选择性地向新的资源附加资源元数据208。下面的Java接口程序显示了资源生产者104注册新的资源插件204和资源206的情况<pre listing-type="program-listing">  public interface ResourceRegistration{   /**  *Register a new plugin in the RDVA system.All fields(including name,  *code type,code file and calling entry)of the plugin must not be  *<code>null</code>  *@param pluginInfo the plugin information(name,code,etc.)to be  serialized and transferred over the network to the TARR server.  *@return the plugin ID in the RDVA system.  */  public PluginID registerNewPlugin(ResourcePluginInfo pluginInfo);  /**  *Register a new resource in the RDVA system.  *@param res the resource object,to be serialized,transferred and   registered.  *@param metadata the resource metadata,to be serialized and  transferred.  *@param pluginID the ID of the previously registered plugin that this   resource will use.It must not be<code>null</code&gt;&lt;!-- SIPO &lt;DP n="12"&gt; --&gt;&lt;dp n="d12"/&gt;   *@param revNum the plugin revision that this resource will use.If it is<code>null</code>,the latest revision on the main branch will be used.  *@return the resource ID created by the RDVA system for this new resource.  */  public ResourceID registerNewResource(   Resource res,   ResourceMetadata metadata,   PluginID pluginID,   RevisionNumber pluginRevNum);  }</pre>(2)资源更新资源更新实际上发生在几个地方。资源生产者104在其内部更新资源206,并产生能够标识该更新内容的资源补丁202。即,当有资源更新时,资源生产者104首先在本地的编程接口模块106中检索所述资源206的各个版本,并在期望的版本上产生新的资源补丁202。例如,如果所述的更新是对字典资源中的“股票术语”进行修改,则只在分支1.2.1中的最新修订版1.2.1.1的基础上产生资源补丁202,产生对修订版1.2.1.1的更新,而不更新其它分支中的版本。
在通过向复制子系统100提交资源补丁202而释放该更新之前,该更新对外界是不可见的,即其它系统和部件是不知道该更新的。
另外,复制子系统100中的RDVA服务器102(1)通过记录资源补丁202来更新它的资源数据库,并记录更新的整个历史。
资源消费者108可以从复制子系统100中的RDVA服务器102(2)读取资源补丁202,并通过使用资源插件204将各资源补丁202应用于其本地的资源数据206而达到更新资源的目的(如前面所述)。对于资源消费者108来说,该更新是由RDVA API模块110完成的。并且,该RDVA API模块110还要保存更新后的资源版本。
注意,仅仅在资源消费者108处才将资源补丁202应用于原有的资源206,而在RDVA服务器102(1)和(2)侧仅对资源补丁202进行记录。RDVA服务器102(1)和(2)具有记录了所有原始注册的资源206的数据以及接收到的资源补丁202的资源数据库(未示出)。如图4所示,资源206更新的历史实际上是包括了原始资源206的数据和所有资源补丁202的资源修订树。
下面结合图6说明在资源消费者108处如何获取资源的过程。
图6示出了资源消费者108通过RDVA API模块110和RDVA服务器102(2)(次级服务器)获得必要的资源并将它们应用于本地资源206上的过程。
如图6所示,由于资源消费者108在应用资源206时,需要读取资源206的全部数据,因此它必须在其原有的资源206上应用资源补丁202,以获得最新版本的完整的资源206。资源消费者108经由RDVA API模块110在本地检索资源206的任何版本和/或修订版数据,或资源206的某些分支的最新数据。RDVA API模块110为资源消费者108维护存储有资源数据的高速缓冲存储器(未示出),并在该高速缓冲存储器中检查所请求的最近修订版的资源206。然后,API模块110从RDVA服务器102(2)获得必要的资源补丁202,并将这些补丁202应用于该最近修订版的资源206,以获得最新的完整的资源206。注意,资源补丁202的应用是通过资源插件204来完成的。最后,RDVA API模块110将最新的完整的资源206作为本地文件返回给资源消费者108使用。
下面结合图7说明本发明的RDVA系统的工作过程。
图7是说明根据本发明的RDVA系统的处理的流程图。
如图7所示,在步骤ST10,在RDVA服务器102(1)和(2)中没有资源206的情况下,资源生产者104通过其本地RDVA API模块106向RDVA服务器102(1)注册原始资源206和资源插件204,该原始资源206是作为二进制数据块提供的。在RDVA服务器102(1)中存在原有的资源插件的情况下,该资源插件204也可以是RDVA服务器102(1)中原有的资源插件。
在步骤ST12,当资源生产者104所提供的资源206需要更新时,它就经由RDVA API模块106在本地检索资源206的任何版本和/或修订版数据,在此基础上产生标识该更新变化的资源元数据208,并利用资源元数据208形成资源补丁202。然后,在步骤ST14,资源生产者104通过其本地的RDVAAPI模块106向RDVA服务器102(1)提供资源补丁202,该资源补丁202与资源206和资源的修订版本是相关的。
接下来,在步骤ST16,RDVA服务器102(1)在本地的数据库(未示出)中存储资源206、资源插件204和资源补丁202。资源插件204和资源补丁202也作为资源进行处理。在步骤ST18,RDVA服务器102(2)从RDVA服务器102(1)复制上述各种程序和数据并进行存储,或由RDVA服务器102(1)将上述资源206、资源插件204和资源补丁202主动传输给RDVA服务器102(2)。
在步骤ST20,当需要使用资源206时,资源消费者108的RDVA API模块110首先检查本地的高速缓冲存储器(以下简称“缓存”)中是否具有所需要的资源206和相应的资源插件204。
如果判断本地没有所需要的资源206的相应版本和资源插件206,处理前进到步骤ST22,在步骤ST22,资源消费者108通过RDVA API模块110向RDVA服务器102(2)请求资源206的某个修订版或资源206的最新数据。
在步骤ST24,RDVA API模块110从RDVA服务器102(2)下载原始资源206和相应的资源插件204,并将它们存储在缓存中。
接下来,在步骤ST26,RDVA API模块110在本地缓存中检查所请求的资源的最近修订版,并且如果在RDVA服务器102(2)中发现新的资源补丁202,则从RDVA服务器102(2)获得该新的资源补丁202。如果RDVA服务器102(2)中没有新的资源补丁202,则RDVA服务器102(2)需要从其它服务器(如RDVA服务器102(1))复制这些数据。
如果在步骤ST20中的判断结果是在本地可以检索到所需要的资源206的相应版本和资源插件206,则处理直接前进到步骤ST26,并执行步骤ST26中的处理。
然后,在步骤ST28,RDVA API模块110通过执行资源插件204的程序代码,将接收到的资源补丁202应用于资源206的最近修订版,即根据资源补丁202中记录的内容信息对资源206的最近修订版进行更新计算,以获得新的资源206。RDVA API模块110将该新的资源206存储为最新的修订版本,并将其返回给资源消费者110使用,用于处理数据(例如标记文本中的关键字)或完成特定任务(对计算机网络进行拨号)。
本发明的系统易于开发和配置,由资源插件利用递增式更新方法、通过将资源补丁应用于资源来实现数据/资源的更新。用户仅需要指定资源生产者和资源消费者的角色资源生产者仅需要注册资源并通过补丁(patch)更新该资源;资源消费者仅需要订阅特定的资源以接收这些更新。因此,仅仅一小部分资源补丁需要通过网络进行传输。这在大规模渐进式资源分配中将大大地节省网络带宽。由于所有的资源都分享相同的信道,所以其成本较低。
本发明通过将资源补丁复制与版本更新控制进行有效地集成,可以对渐进式演化的杂散资源的版本更新进行更细微地控制,即通过按照资源的种类对资源进行分类,并针对每个分类的资源版本产生资源补丁,这样对于一个非常微小的更新变化,只需要一个较小的资源补丁即可解决问题,而不需要对整个资源进行全面的处理和传输。从而可以节省大量的网络带宽和服务器的负载。
本发明的系统具有用于进行分配资源的次级服务器,这使得设计更加灵活和可扩展,也使得系统中主服务器的负载得以减轻。
上面对本发明的实施例进行了详细地说明。本领域的普通技术人员应该明白,按照本发明的精神及指导思想对本发明做出的各种修改都在本发明后附的权利要求书所要求保护的范围内。
权利要求
1.一种用于分配和更新资源的方法,其特征在于所述方法包括步骤(1)由资源生产者向第一服务器注册资源和资源插件,并在有资源更新时提交资源补丁;(2)第二服务器从所述第一服务器复制所述资源、资源插件和资源补丁,资源消费者从所述第二服务器下载所述资源、资源插件和资源补丁;和(3)在资源消费者处,通过执行所述资源插件以将所述资源补丁应用于所述资源而对所述资源进行更新,并得到更新后的资源版本。
2.根据权利要求1所述的方法,其特征在于如果所述第一服务器中预先存储有资源插件,则使用该预先存储的资源插件。
3.根据权利要求1或2所述的方法,其特征在于所述资源插件是实现编程接口的计算机程序模块。
4.根据权利要求1所述的方法,其特征在于以二进制代码的形式向所述第一服务器注册所述资源、资源插件和提交所述资源补丁。
5.根据权利要求1或2中任一所述的方法,其特征在于所述资源是经常使用但缓慢演化的各种数字数据,包括字典、目录、名称列表、电话号码。
6.根据权利要求1所述的方法,其特征在于所述资源补丁是代表所述资源变化的程序模块,其中包括用于识别所述资源变化的资源元数据。
7.根据权利要求6所述的方法,其特征在于所述资源补丁与资源版本相关,所述资源版本具有相应的资源版本号,其中一个资源版本代表所述资源进行了一次更新。
8.根据权利要求7所述的方法,其特征在于所述资源版本按资源的种类进行树状结构管理,所述树状结构的一个分支代表一种资源。
9.根据权利要求7所述的方法,其特征在于所述更新的方式包括对资源的增加、删除或改变。
10.根据权利要求7所述的方法,其特征在于在有资源更新时,首先检索所述资源的各个版本,并在特定版本上产生新的资源补丁。
11.根据权利要求1所述的方法,其特征在于还包括步骤(4)由一编程接口模块保存所述更新后的资源版本。
12.一种用于分配和更新杂散资源的方法,其特征在于所述方法包括步骤1)由资源生产者向第一服务器注册资源和资源插件,并提交资源补丁;2)所述第一服务器对所述资源、资源插件和资源补丁进行存储;3)第二服务器从所述第一服务器复制所述资源、资源插件和资源补丁;4)如果在资源消费者侧没有所需要的资源和相应的资源插件,则所述资源消费者向所述第二服务器请求并下载所述资源、资源插件和资源补丁;5)通过执行所述资源插件,将接收到的所述资源补丁应用于所述资源,以获得更新后的资源;6)在所述资源消费者处将所述新的资源存储为最新的修订版本,以供资源消费者使用。
13.根据权利要求12所述的方法,其特征在于所述资源生产者、资源消费者、第一服务器和第二服务器分别可以为多个。
14.一种用于分配和更新资源的系统,其特征在于所述系统包括第一编程接口模块,用于由资源生产者产生资源、资源插件,和在有资源更新时产生资源补丁;第二编程接口模块,用于由资源消费者执行所述资源插件以将所述资源补丁应用于所述资源而对所述资源进行更新,并得到更新后的资源版本;和复制子系统,用于从所述第一编程接口模块接收所述资源、资源插件和资源补丁,对它们进行存储并将它们提供给所述第二编程接口模块。
15.根据权利要求14所述的系统,其特征在于所述复制子系统包括第一服务器,用于从所述第一编程接口模块接收所述资源、资源插件和资源补丁并对它们进行存储;和第二服务器,用于从所述第一服务器复制所述资源、资源插件和资源补丁,对它们进行存储并将它们提供给所述第二编程接口模块。
16.根据权利要求14或15所述的系统,其特征在于所述资源插件是实现编程接口的计算机程序模块。
17.根据权利要求14或15所述的系统,其特征在于所述资源补丁是代表所述资源变化的程序模块,包括用于识别所述资源变化的资源元数据。
18.根据权利要求17所述的系统,其特征在于所述资源补丁与资源版本相关,所述资源版本具有相应的资源版本号,其中一个资源版本代表所述资源进行了一次更新。
19.根据权利要求14或15所述的系统,其特征在于以二进制代码的形式向所述第一服务器注册所述资源、资源插件和提交所述资源补丁。
20.根据权利要求15所述的系统,其特征在于所述第一编程接口模块、第二编程接口模块、第一服务器和第二服务器分别可以为多个。
全文摘要
一种用于分配和更新资源的方法和系统,所述方法包括步骤由资源生产者向第一服务器注册资源和资源插件,并在有资源更新时提交资源补丁;第二服务器从所述第一服务器复制所述资源、资源插件和资源补丁,资源消费者从所述第二服务器下载所述资源、资源插件和资源补丁;和在资源消费者处,通过执行所述资源插件以将所述资源补丁应用于所述资源而对所述资源进行更新,并得到更新后的资源版本。本发明的方法和系统在大规模渐进式资源分配中将大大地节省网络带宽,并使得设计更加灵活和可扩展。
文档编号G06F7/00GK1549178SQ0313117
公开日2004年11月24日 申请日期2003年5月16日 优先权日2003年5月16日
发明者越 潘, 潘越, 张雷 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1