开销减少的多机器体系结构的制作方法

文档序号:6569241阅读:156来源:国知局
专利名称:开销减少的多机器体系结构的制作方法
技术领域
本发明涉及计算,尤其涉及经由通信网络互连的多个计算机的同时操作。
背景技术
以本申请人的名义公布的、公布号为WO 2005/103926的国际专利申 请PCT/AU2005/000580 (代理所巻号为5027F-WO )(公布号为 2005-0262313的美国专利申请11/111,946与其对应)公开了被编写成仅在 单计算机上执行的应用程序的不同部分如何能够在多个计算机的对应的 不同计算机上基本同时地操作。该同时操作到本申请的优先权日为止尚未 在商业上4吏用。题目为"Computer Architecture Method of Operation for Multi-Computer Distributed Processing and Co-ordinated Memory and Asset Handling"的美国专利申请11/ 259885所对应的国际专利申请 PCT/AU2005/001641 (代理所巻号为5027F-D1-WO ),以;5L^本申请" 义下的、截至本申请的优先权日未公布的国际专利申请 PCT/AU2006/000532 (代理所巻号为5027F-D2-WO)还揭示了更多的细 节。上述每一个在先申请的说明书内容通过交叉引用全部结合在本说明书 中。
筒要地说,上述专利说明书公开了被编写成仅在单计算机上操作的至 少一个应用程序能够在每个均具有独立的本地存储器的若干计算机上被 同时操作。该程序的操作所需的存储器位置在每个计算机的独立的本* 储器中被复制。每次在应用程序将新数据写到任一复制的存储器位置时, 传输该新数据,并且将其存储在每个计算机的每个对应的存储器位置。因 此,不考虑可能的传输延迟,每个计算机的本地存储器与每个其它计算机 的本地存储器的内容基4^目同,并且被更新以保持如此。由于所有应用程 序通常读取数据比它们产生待写的新数据要频繁得多,所以上述方案使得 能够在计算速度方面实现较大的优势。尤其是,该策略使得通过商用通信 网络互连的两个或更多商用计算机能够同时操作,从而在被编写成仅在单计算机上执行的应用程序下运行。
在许多情况下,上述方案能4^人满意地工作。这尤其适用于程序员意 识到可能有更新延迟并因而可调整程序的流程以将其解决的情况。然而, 存在使用陈旧的内容或值而不是最新的内容而可能引起问题的情况。
当对任一存储器位置做出任何改变时更新每个本地存储器的需要产 生针对使多个计算机互连的通信网络的较大开销负担。意图在于减少本发 明所针对的上述开销。

发明内容
根据本发明的第一方面,公开了多计算机环境中的进一步改进,在该 多计算机环境中,被编写成仅在单个计算机上执行的应用程序的不同部分 在多个计算机中对应的计算机上基本上同时地执行,所述多个计算机每个 均具有独立的本地存储器,并且每个均经由通信网络互连,并且在该多计 算机环境中, 一些存储器位置能够被第一批多个所述计算机引用,并且在 该多计算机环境中,其它的存储器位置能够被第二批不同的多个所述计算 机引用,并且在每次所述存储器位置中的任何一个的内^#:用新内容写入 或覆写,或者以其它方式操纵之后,所述计算机中任何对应的存储器位置 经由所述通信网络在适当时候被更新或操纵,进一步改进包括步骤
(i) 维护有关哪些存储器位置存在于哪些计算机上的记录,以及
(ii) 仅在适当时候更新或操纵在所述维护的记录中与最初更新或操纵 的存储器位置对应的那些存储器位置,从而减少通过所述通信网络传送的 更新或操纵指令的量。
根据本发明的第二方面,公开一种计算M序产品,其包括存储在存 储介质中并且用于使多个计算机执行以上定义的方法的程序指令集。
根据本发明的第三方面,公开了经由通信网络互连并且用于保证上述 方法的执行的多个计算机。
根据本发明的第四方面,公开了一种计算机系统,包括每个均具有独 立的本地存储器并且每个均经由通信网络互连的多个计算机,其中,被编 写成仅在单个计算机上执行的应用程序的不同部分在所述多个计算机中 对应的计算机上基本上同时地执行, 一些存储器位置能被第一批多个所述 计算机引用,而其它存储器位置能被第二批且不同的多个所述计算机引用,所述系统还包括与每个所述计算机关联的更新装置,以在每次每个所 述存储器位置的内M用新内容写入或覆写,或者以其它方式操纵之后, 经由所述通信网络在适当时候更新每个所述存储器位置,其中所述更新装 置包含有关哪些存储器位置出现在哪些计算机上的记录装置,并且所述更 新装置仅在适当时候更新或操纵所述记录装置中与初始更新或操纵的存 储器位置对应的那些存储器位置,从而减少经过所述通信网络的更新或操 纵指令的量。
根据本发明的第五方面,公开一种适于与至少一个其它计算机*以 执行上述方法或构成上述计算机系统的单计算机。


图1A示意性示出了被布置成运行JAVA代码从而构成单JAVA虚拟 机的现有技术计算机;
图1B是类似于图1A的图,但是图解了代码的初始加栽;
图1C图解了每个均为JAVA虚拟机的多个计算机形成多计算机系统 的互连;
图2示意性图解了 "n"个运行应用的计算机,至少一个附加的服务 器机器X作为服务器与这些计算M接;
图3是四个计算机的存储器位置的示意图,以及
图4、图5和图6每个均为有关哪些存储器对象出现在哪些计算机中 的不同形式的表或列表。
具体实施例方式
各实施例将参照JAVA语言进行描述,然而,本领域技术人员应当理 解,本发明不局限于该语言,特别地,可用于其它语言(包含过程性语言、 声明性语言和面向对象语言),包含MICROSOFT.NET平台和体系结构 (Visual Basic、 Visual C和Visual C++,以及Visual C#)、 FORTRAN、 C、 C++、 COBOL BASIC等等。
现有技术中已知的是提供通过建立图1A中所示的虚拟机来利用特定 语言的应用程序的单计算机或机器(由各制造商中的任何一个所生产,并且具有以各种不同语言中的任何一种语言操作的操作系统(或者等同控制 软件或其它机制))。
图1A的代码和数据以及虚拟机配置或方案采取用JAVA语言编写并 且在JAVA虚拟机61内执行的应用代码50的形式。因而在应用的期望语 言为JAVA语言的情况下,使用JAVA虚拟机,其中JAVA虚拟机能够运 行JAVA形式的代码,而不论机器制造商和计算机或机器的内部细节如 何。有关更多细节,参见由美国Sun Microsystems公司的T. Lindholm和 F.Yellin所著的"The JAVA Virtual Machine Specification"第二版,其通 过引用结合于此。
根据本发明的实施例,通过提供如图1B所示被方便地称为"分布式 运行时"或"分布式运行时系统"DRT 71的附加设备,改进图IA的常 规技术方案。
图IB和1C中,通过由箭头75或75A或75B所示的加栽过程,应 用代码50被加载到与分布式运行时系统71合作的JAVA虚拟机Ml、
M2........ Mn上。如此处所使用的,术语"分布式运行时"和"分布式
运行时系统"实质上是同义的,并且通过阐述而不是限制,通常被理解成 包含支持在特定平台上运行的、用特定语言编写的软件的库代码和进程。 此外,分布式运行时系统还可以包含支持在特定分布式计算环境内运行 的、用特定语言编写的软件的库代码和进程。运行时系统(无论是否是分 布式运行时系统)通常处理程序与操作系统之间的接口的细节,例如系统 调用、程序启动和终止、以及存储器管理。为说明背景,常规的分布式计 算环境(DCE)(其不提供本发明优选实施例中所使用的本发明的分布式 运行时或分布式运行时系统71的能力)可以从开放软件基金会得到。该 分布式计算环境(DCE )执行一种针对在机器上运行的软件的计算机到计 算机的通信形式,但是除其许多限制之外,其不能实现所期望的修改或通
信操作。除其功能与操作之夕卜,优选的DRT 71协调多个机器Ml 、 M2........
Mn之间的特定通信。此外,优选的分布式运行时71在JAVA应用50的 由箭头75A或75B所示的在图1C的每个JAVA虚拟机72或机器JVM#1 、
JVM#2........ JVM紐上的加载过程期间开始运行。根据此处所提供的描
述应当理解,虽然许多示例和描述被提供成与JAVA语言和JAVA虚拟机 相关,以使得读者能了解具体例子的益处,但是本发明不局限于JAVA语 言或JAVA虚拟机,或者任何其他语言、虚拟机、机器或者操作环境。
图1C以改进形式示出了每个如图IB所示的JAVA虚拟机的方案。显然,相同的应用代码50被加载到每个机器Ml、 M2...Mn上。然而, 各机器M1、 M2…Mn之间的通信由箭头83表示,并且虽然通过机器硬 件物理上传送,但是有利地被每个机器内的各自011171/1...71/11所控制。 因而,实际上这可以>^念上理解成经由网络或其它通信銜各53而相互 通信的DRT 71/1, ...71/n,而不是自身或彼此直接通信的机器Ml、 M2...Mn。所设想和包含的是机器M1、 M2…Mn或DRT 71/1、 71/2...71/n 之间的这种直接通信,或者这样的通信的组合。优选的DRT71提供独立 于传送、协议和链接的通信。
一个公共应用程序或应用代码50,及其可执行版本(可能具有1务改) 在多个计算机或机器Ml、 M2...Mn上同时或并发执行。应用程序50被 编写为在单机器或计算机上执行(或者在模拟单计算^作的上述专利申
请的多计算机系统上操作)。实质上,改进的结构是在每个单独机器上复 制相同的存储器结构和内容。
术语"公共应用程序"应被理解为是指被编写成在单机器上操作的, 且在多个计算机或机器M1、 M2…Mn中的每一个上、或者可选地在所述 多个计算机或机器Ml、 M2…Mn的某个子集的每一个上全部或部分地加 载和/或执行的应用程序或应用程序代码。换句话说,具有以应用程序代 码50表示的公共应用程序。其为单个拷贝,或每个均被单独修改以生成 应用程序或程序代码的修改拷贝或版本的多个相同拷贝。于是每个拷贝或 实例被准备以在对应的机器上执行。在它们被修改之后,从它们执行类似 的^作并且彼此一致且连贯J^行的意义上来i兌,它们是爿〉共的。应当理 解,实现本发明的实施例的多个计算机、机器、信息设备等可以任选地连 接到或耦合到未实现本发明的实施例的其它计算机、机器、信息设备等。
在每个机器上运行相同的应用程序50 (例如并行合并排序、计算流 体动力学应用或数据挖掘应用),但是该应用程序的可执行代码根据需要 在每个机器修改,使得每个机器上的每个执行实例(拷贝或复本)使其在
该特定机器上的本地操作与其它机器上的相应实例(拷贝或复本)的操作 协调,使得它们以一致、连贯和协调的方式一起工作,并且看起来^(象应用 的一个全局实例(即"元应用")。
相同或基;M目同的应用代码的各拷贝或复本,每个被加载到互操作且 相连接的机器或计算机中对应的一个上。由于每个机器或计算机的特性可 能不同,所以应用代码50可在加载之前被修改、在加载过程期间被^修改、 或者在加载过程之后被修改(虽然有一些缺点),以在每个机器上提供应用代码的定制或修改。不同机器上的程序或应用代码之间的一些不同点可以 是允许的,只要能够保持本文所述的其它对互操作性、 一致性和连贯性的
要求。在下文将会明白,机器M1、 M2...Mn中的每个机器,因而全部机 器M1、 ]\12...]\111具有相同或基^目同的应用代码50,其通常具有可以是 特定于机器的修改。
在每个机器M1、 M2…Mn上的应用代码50 (或其相关部分)的加载 之前、加载期间、或执行前的任何时候,每个应用代码50由对应的修改 器(modifier) 51根据相同的规则(或基;M目同的规则,因为在每个修改 器51/1、 51/2...51/n内允许小的优化改变)来修改。
机器M1、 M2...Mn中的每个机器与相同的(或基4^目同或类似的) 修改器51 (在某些实施例中被实现为分布式运行时或DRT71,而在其它 实施例中被实现为应用代码和数据50的附件,并且也能够在JAVA虚拟 机自身内实现)一起操作。因而,所有的机器M1、 1\12...]\111都具有针对 所需每个修改的相同的(或基4^目同或类似的)修改器51。例如,对于 存储器管理和复制、初始化、结束、和/或同步可能需要不同的修改(尽 管可能不是所有实施例都需要所有这些修改类型)。
存在修改器51和分布式运行时71的可替选实现。例如,如图1C中 虚线所示,修改器51可以被实现为分布式运行时71的部件,或分布式运 行时71内部的部件,因此DRT71可实现修改器51的功能和操作。可替 选地,修改器51的功能和操作可以在用于实现DRT 71的结构、软件、 固件或其它装置之外实现,例如在代码和数据50内,或者在JAVA虚拟 机自身内。在一个实施例中,修改器51和DRT71两者都以提供DRT和 修改器的功能的单段计算机程序代码来实现或编写。在这种情况下,修改 器功能和结构实际上被包含到DRT中。与其实现无关地,修改器功能和 结构负责修改应用代码程序的可执行代码,而分布式运行时功能和结构负 责实现各计算机或机器两者和两者以上之间的通信。在一个实施例中,通 信功能通过每个机器上的DRT的计算机程序代码内的中间协议层来实 现。例如,DRT可以用JAVA语言来实现通信栈,并4吏用传输控制协i5C/ 网际协议(TCP/IP)来提供机器之间的通信或对话。这些功能或操作可 以用各种方法来实现,并JMH据本文提供的描述应当理解,这些功能或操 作如何确切地被实现,或者在结构和/或过程性元素之间或在计算机程序 代码或数据结构之间如何被确切划分对本发明来说并不是重要或至关重 要的。然而,在图1C所示的方案中,提供了多个单独计算机或机器M1、 M2…Mn,其中每个都经由通信网络53或其它通信链路互连。每个单独 计算机或机器都设置有对应的修改器51。每个单独计算to设置有连接 到通信网络的通信端口。通信网络53或路径可以是任何电子信令、数据、 或数字通信网络或路径,并且优选为慢速,因而成本低的通信路径,例如 因特网上的、或者包含ETHERNET或INFINIBAND的任何常见组网结 构及其扩展和改进上的网络连接。优选地,计算机设置有与通信网络53 连接的一个或多个,iH^通信端口 (例如CISCO Power Connect 5224交换 机)。
由于上述方案,如果机器Ml、 M2........ Mn中的每个机器都具有
例如10MB的内部或本地存储器容量,则应用代码50整体上可用的总存 储器空间并不是如所期望的那样为10MB乘以机器数量。也不是所有n 个机器的内部存储器容量的加性组合。相反,其为IOMB,或者大于10MB 但是小于nxlOMB的某个数。在各机器的内部存储器容量不同(这是允
许)的情况下,于是在一个机器中的内部存储器小于至少一个其它机器的 内部存储器容量的情况下,当这样的存储器(或其一部分)被作为"公共"
存储器(即机器Ml... Mn的每个机器上的类似等同存储器),或相反被用 于执行4^共应用代码时,任何一个机器的最小存储器的大小可用作各机器 的最大存储器容量。
然而,尽管对待每个机器的内部存储器的方式可能最初看起来是性能 的可能约束,但是,在下文中将会理解这如何导致操作和性能的提高。当 然,每个机器M1、 M2…Mn都有专用的(即非公共的)内部存储器容量。 各机器M1, M2, ...Mn的专用内部存储器容量通常近似相等,但是也不 一定如此。例如,当多计算机系统是利用由不同实体所拥有或^Mt的现有 计算机、机器或信息设备来实现或组成时,内部存储器容量可能是相当不 同的。另一方面,如果正在实现一个新的多计算机系统,则每个机器或计 算机优选为选择具有相同的内部存储器容量,但不一定如此。
应当理解,每个机器的独立本地存储器仅仅代表该机器总存储器中被 分配给应用程序的在该机器上运行的部分的那部分存储器。因而,其它存 储器将被该机器的操作系统以及与应用程序50无关的其它计算任务所占 用。
原型多计算机系统的非商业操作表明,并不是该系统中每个机器或计 算^fp使用或需要引用(例如,具有每个可能的存储器位置的本地复本)每个可能的存储器位置。结果,只J^个机器的^存储器对于该机器的 操作是足够的,则无需每个机器的本地存储器与每个其它机器相同,就可 以操作多计算机系统。也就是说,假如特定机器不需要引用(例如具有一 些特定存储器位置的本地复本) 一些特定存储器位置,则那些特定存储器 位置在该特定机器中未被复制是无关紧要的。
选择每个机器中内部存储器的量以在每个机器中以及所连接或耦合
的多个机器、计算机或信息设备M1、 M2........ Mn的星座或网络上达
到期望性能等级也是有利的。在描述了这些内部和公共存储器考虑因素 后,根据本文提供的描述应当理解,机器之间可以是公共的存储器的量并 不是限制。
在一些实施例中,多个单独计算机或机器的一些或全部可以被包含在 单个外壳或机架(例如由Hewlett-Packard Development公司,Intel公司, IBM公司等制造的所谓"刀片服务器")、由Intel、 AMD或其它公司制 造的多处理器(例如对称式多处理器SMP)或多核处理器(例如双核处 理器以及芯片多线程处理器)内,或者被实现在单个印刷电路板上或甚至 在单个芯片或芯片组内。类似地,还包含具有多核,多CPU的或其它处 理逻辑的计算机或机器。
当用非JAVA语言或应用代码环境来实现时,通用平台和/或虚拟机 和/或机器和/或运行时系统能够操作该平台和/或虚拟机和/或机器和/或运 行时系统环境的语言(例如,可能包含但不局限于源代码语言、中间代码 语言、目标代码语言、机器代码语言以及任何其它代码语言中的任何一个 或多个)的应用代码50,并且不论机器或处理器制造商以及机器的内部 细节如何,利用该平台和/或虚拟机和/或机器和/或运行时系统和/或语言体 系结构。还应当理解,平台和/或运行时系统可包含虚拟机和非虚拟机软 件和/或固件体系结构,以及硬件和直接硬件编码的应用和实现。
对于更一般的虚拟机或抽,环境,以及对于可不使用或要求使用类 和/或对象的目前和将来的计算机和/或计算机器和/或信息设备或处理系 统,本发明结构、方法和计算积4呈序以及计算;l^呈序产品仍然适用。不使 用类和/或对象的计算机和/或计算机器的例子例如包含由Intel 7>司等制 造的x86计算机体系结构,由Sun Microsystems公司等制造的SPARC计 算机体系结构,由IBM公司等制造的Power PC计算机体系结构,以及 由Apple Computer公司等制造的个人计算机产品。
对于不使用类或对象的概念的这些类型的计算机、计算机器、信息设备以及在其上实现的虚拟机或虚拟计算环境,可概括为例如包含基^据 类型(例如整型数据类型,浮点数据类型,长整型数据类型, 一度数据 类型,串数据类型,字符数据类型和布尔数据类型),结构化数据类型(例 如数组和记录),派生的类型,或者过程性语言或其它语言或环境的其它 代码或数据结构,如函数、指针、组件、模块、结构、引用和联合。当这 些结构和过程按需要组合应用时,它们维护计算环境,其中在该计算环境 下,计算机或计算环境的存储器位置、地址范围、对象、类、资产、资源
或任何其它过程或结构方面,在多个单独机器M1、 ]\12...]^11上以协调的、 连贯的和一致的方式按需要被产生、维护、操作和去活或删除。
应用代码50的这种分析或细查可发生在加栽应用代码50之前,或者 在应用代码50加载过程期间,或者甚至在应用代码50加载过程之后(或 者这些情况的某种组合)。这可被比作改写(instrumentation )、程序转换、 翻译、或者编译过程,因为应用代码可用附加的指令编写,和/或由保留 含义的程序操纵来修改,和/或可选地从输入代码语言翻译成不同的代码 语言(例如,从源代码语言或中间代码语言转换到目标代码语言或机器代 码语言)。关于这一点,应当理解,术语"编译"通常或按常规涉及代码 或语言上的改变,例如从源代码到目标代码,或者从一种语言到另一种语 言。然而,在这种情况下,术语"编译"(及其语法上的等同内容)未被 如此限制,并且也可以包含或包括相同代码或语言内的修改。例如,将编 译及其等同内容理解成包括普通编译(例如,但不限于从源代码到目标代
码)和从源代码到源代码的编译,以及从目标代码到目标代码的编译,以 及其中的任何变更组合。还包含所谓的"中间代码语言",其为一种"伪 目标代码,,.
举例而言,但非限制性地,在一个实施例中,对应用代码50的分析 或细查发生在应用程序代码的加载期间,应用程序代码的加载是例如由操 作系统从硬盘或其它存储设备、介质或源中读取应用代码50,并且将其 拷贝到存储器中,以及准备开始执行该应用程序代码而实现的。在另一个 实施例中,在JAVA虚拟机中,分析或细查可发生在 java.lang.ClassLoader.loadClass方法(例如"java.lang.ClassLoader.loadClass()") 的类加载过程期间。
可替选地,或者此外,对应用代码50 (或应用代码的一部分)的分
析或细查甚至可发生在应用程序代码加载过程之后,例如在^Mt系统已将
应用代码加载到存储器中之后,或者任选地,甚至在应用程序代码的相关对应部分的执行已经开始之后,例如在JAVA虚拟机已经通过 "java.lang.Classloader.loadClass()"方法将应用代码加栽到虚拟机中并且 任选地开始执行之后。
计算领域的普通技术人员会知道,各种可能的技术可以用于修改计算 机代码,这些技术包括但不限于改写、程序转换、翻译或编译装置和/或 方法。
一种这样的技术是,在无需在先或之后改变应用代码的语言的情况 下,对应用代码进行修改。另一种这样的技术是将原始代码(例如,JAVA 语言源代码)转换成中间表示(或中间代码语言,或伪码),例如JAVA 字节代码。 一旦该转狄生,就对字节代码进行修改,然后转换可被逆转。 这提供了被修改JAVA代码的所期望的结果。
另一个可能的技术是直接从源代码或者通过上述中间语言或通过一 些其它中间手段,将应用程序转换到机器代码。然后,在加载和执行机器 代码之前修改机器代码。另一个这样的技术是将原始代码转换成中间表 示,该中间表示从而被修改并且l^被转换成机器代码。
本发明包括所有这样的修改途径,以及两个、三个甚至更多这样的途 径的组合。
DRT 71或其它代码修改装置负责在单独机器Ml、 M2…Mn中每个 机器上建立或复制使得多个机器能互操作的存储器结构和内容。在一些实 施例中,此复制的存储器结构相同。而在其它实施例中,此存储器结构会 有部分相同,而其它部分不同。在另外的其它实施例中,存储器结构仅在 格式或存储约定(如大端字节序(Big Endian)或小端字节序(Little Endian) 格式或约定)方面不同。
当这些结构和过程按需要组合应用时,它们维护计算环境,其中在该 计算环境下,计算机或计算环境的存储器位置、地址范围、对象、类、资 产、资源或任何其它过程或结构方面,在多个单独机器M1、 M2…Mn上 以协调的、连贯的和一致的方式按需要被产生、维护、^作和去活或删除。
因此,术语"一个"、"单,,和"公共"应用代码或程序包含以下情形, 在该情形中,所有机器M1、 1\12...]\111操作或执行相同的程序或代码而不 是不同的(和无关的)程序,换言之,相同或基; M目同的应用代码的拷贝 或复4^L加载到互操作且相连接的机器或计算机中的每一个上。
在使用分布式软件的常规方案中,从一个机器的软件到物理上位于另一个机器上的存储器的存储器访问通常通过互连各机器的网络进行。因
而,每个机器的本J4^储器都能够被任何其它机器所访问,因此不能说是 独立的。然而,因为对物理上位于另一个计算机上的存储器的读和/或写 存储器访问需要利用互连各计算机的慢速网络,所以在这些配置中,这样 的存储器访问可导致存储器读/写处理操作中的实质性延迟,可能大约为
106-107个机器中央处理单元的周期(假定为同时期的处理器速度)。最终,
该延迟取决于多个因素,例如通信网络的速度、带宽和/或时延。这很大 程度上说明了现有技术方案中多个互连机器的低性能。
然而,在本方案中,因为所有存储器位置(或所有存储器位置的某个 子集)的当前值被存储在产生读存储器需求的处理所执行的机器上,所以 对存储器位置或数据的所有读取都在本地得到满足。
类似地,因为所有存储器位置(或所有存储器位置的某个子集)的当 前值被存储在生成写存储器需求的处理所执行的机器上,所以存储器位置 或数据的所有写入都在本地得到满足。
这样的本地存储器读和写处理操作通常在102-103个中央处理单元周
期内满足。因而实际上,涉及和/或写的存储器访问的等待基本上较少。 此外,每个机器的本地存储器不能被任何其它机器访问,因此可被称作是 独立的。
本发明独立于传送、网络和通信路径,并且不依赖于各机器或各DRT 之间的通信如何进行。在一个实施例中,甚至机器或DRT之间的电子邮 件(email)交互也可以满足通信的需要。
结合以上所述,从图2中可以看出,有若干机器M1、 M2、…Mn, "n"为大于或等于2的整数,图1的应用程序50在机器Ml、 M2、…Mn
上基本上同时运行。这些机器按层次顺序被分配以数字1、 2、 3.......等
等。该顺序通常是循环的或闭合的,使得当机器2和机器3在层次上相邻 时,机器"n"和机器l也是如此。优选地,存在另一个机器X,其被提 供来4吏各种内务处理功能(housekeeping functions )能被执行,例如充当 锁服务器。特别地,所述另一个机器X可以是低价机器,并且比可能具 有令人满意的属性如处理M度的其它机器便宜很多。此外, 一个附加的 低价机器(X+l)优选地可用于在机器X出现故障时提供冗余。当提供两 个这样的服务器机器X和X+1时,为了简单,它们优选地作为集群结构 的双机器来操作。根据本发明,必要时,机器X和X+1能够作为多计算 机系统来操作。然而,这一般会导致不期望的复杂度。如果未提供机器X,则其功能(例如内务处理功能)由其它机器中的一个、 一些或4^P机器来提供。
现在参照图3,示出了形成多计算机系统的四个机器Ml-M4的存储 器位置的示意图。在该特定示例中,机器M1具有存储器位置A、 B和C, 而机器M2具有相同的存储器位置和附加的存储器位置D。 然而,机器 M3仅具有存储器位置C和E,而机器M4具有存储器位置B和D。由此 可见,如果存储器位置B必须更新,则仅需要通知机器M1、 M2和M4, 而不必通知机器M3。因此,由于在这种情况下不必与机器M3通信,所 以通信网络3上的流量可以减少。
图4、图5和图6示出了足以使通信开销的这种减少能被实现的数据 制表或存储的三种不同方式。
在图4中,针对每个对象或存储器位置,维护具有该对象或位置的本 地拷贝并因而在该对象或该位置的内容要被改变或以某种方式(例如通过 结束或同步)操纵的情况下应当得到通知的机器的列表。
相反地,在图5中,对于每个机器,维护存在于该机器中的对象或存 储器位置的列表。因此,如果特定机器例如对特定存储器位置做出修改, 则服务器机器X可检查机器列表,以确定每个机器是否引用被修改的存 储器位置(例如其本地拷贝)并因而需要被更新。
在图6中,提供了^I艮务器机器X能确定需要什么通知的又一种形 式的表。这样的表采取阵列的形式,其中在一侧列出对象,而在另一侧列 出机器,并且在对应于每个可能计算机中的可能对象的每个单元中提供相 关的"是"或"否"。
一旦掌握了上述构思,就以一种直接的方式改进在上述并入的专利说 明书中详细描述的方案,以保证多计算机系统的机器Ml、 M2等中的每 个机器仅向各机器的具有对应存储器位置的子集发送更新特定存储器位 置的消息。实现这个的一种方式是在装配更新消息被广播到或更新消息被 发送到的地址的过程中查询图4-6中的任何一个图的表。
前面仅描述了本发明的一些实施例,本领域技术人员知道,在不偏离 本发明的范围的情况下,可以对其进行修改。例如,提及JAVA,包含JAVA 语言以及JAVA平台和体系结构。
在所有描述的修改实例中,其中应用代码50在加载之前、在加载期 间、或者甚至在加载之后M未修改的应用代码的执行开始之前被修改,应当理解,被修改的应用代码在进行的修改之后取代未修改的应用代码而 #>载,以及取代未修改的应用代码而被执行。
可替选地,在修^iL生在加载之后以及在未修改的应用代码的执行开 始之后的情况下,应当理解,未修改的应用代码可以被对应于进行的修改、 所修改的应用代码所整体替换;或者,可替选地,随着对正在执行的未修 改应用代码递增地进行l务改,未修改的应用代码可以被部分或者递增地替 换。无论使用这样的修改途径中的哪种,被进行之后的修改都取代未修改 的应用代码而执行。
针对多个机器M1、 M2...Mn中的每一个机器上的所有类似等同本地 对象(类,资产或资源等)使用全局标识符作为"元名字"或"元标识" 的形式^:有利的。例如,不必跟踪每个机器上多个类似等同对象的每个类 似等同本地对象的每个唯一本地名字或标识,取而代之,可以定义或使用 对应于每个机器上的多个类似等同对象的全局名字(例如
"globalname7787"),在此情况下每个机器将全局名字与特定的本地名字 或对象联系起来(例如"globalname7787"对应于机器Ml上的对象
"1ocalobject456" , "globalname7787"对应于机器M2上的对象
"localobject885",以及"globalname7787"对应于机器M3上的对象
"Iocalobjectlll"等等)。
根据本文所提供的详细描述,本领域的技术人员还会明白,在由每个 DRT 71当最初记录或创建所有对象中的全部或某子集的列表时创建的 表、列表或其它数据结构(例如存储器位置或字段)中,对于各个机器 Ml、 M2...Mn上的每个这样的记录的对象,存在在机器M1、 M2.,.Mn中 的每个机器上公共或类似的名字或标识。然而,在各个机器中,因为每个
机器可能,并且通常会根据其自身的内部处理来存储不同存储器位置处的 存储器值或内容,所以对应于指定的名字或标识的本M象将会或者可能 会随时间而变化。因而,每个DRT中的表、列表、或其它数据结构一般 会具有对应于单个存储器名字或标识的不同本M储器位置,但是每个全 局的"存储器名字"或标识会具有存储在不同本地存储器位置中的相同的 "存储器值或内容"。所以,对于每个全局名字,会存在一族对应独立本 地存储器位置,其中在每个计算机中有一个族成员。虽然本地存储器名字 可能不同,但是资产、对象、位置等基本上具有相同内容或值。所以族是 连贯的。
本文所使用的术语"表"或"表格"意图包括任何列表或有组织的、无论为何种格式、并且在其内可以以有序的方式存储和读出数据的数据结
构o
根据本文提供的说明,本领域的普通技术人员也应该明白,应用程序
代码50在加载期间的上述修改可以用多种方法或由各种装置来实现。这 些方法或装置包含但不局限于至少下列五种方法以及这五种的变型或组 合,包含
(i) 加载时的再编译;
(ii) 加载之前的预编译过程;
(iii) 加载之前的编译;
(iv) "即时(just-in-time)"编译,或
(v) 加栽后的再编译(但是,例如当在分布式环境中执行相关或对应的 应用代码之前)。
通常,术语"编译"意味着代码或语言方面的改变,例如从源代码到 目标代码,或从一种语言到另一种语言。显然,在本说明书中,术语"编 译"(及其语法上的等同内容)的使用未被如此限制,并且也可以包含或 包括相同代码或语言内的修改。
计算机和/或编程技术领域的技术人员应该知道,当附加的代码或指 令被插入到已有代码或指令集中以将其修改时,已有代码或指令集4艮可能 需要进一步修改(例如通过对连续指令的再编号),使得偏移,分支、属 性、标记(markup)等被正确处理或满足。
类似地,在JAVA语言中,存储器位置包含例如字段和数组两种类型。 以上所述涉及字段,并且数组类型所需的改变基本上是相同的必要变更。 并且,本发明同样适用于与JAVA类似的编程语言(包含过程性的、声明 性的和面向对象的语言),包括Microsoft.NET平台和体系结构(Visual Basic、 Visual C/C++,以及C弁),FORTRAN, C/C++ , COBOL、 BASIC 等。
本文所使用的术语"对象,,和"类"源自JAVA环境,并且意图包括 源自不同环境如动态链接库(DLL ),目标代码包,功能单元或存储器位 置的类似术语。
关于本发明的实施例描述了各种装置,例如包含但不限于锁装置、分 布式运行时装置、修改器或修改装置等。在本发明的至少一个实施例中,这些各种装置中的任何一个或每个可通过在计算机逻辑电路、处理器、
ASIC、逻辑或电子电路硬件、微处理器、^t控制器或其它逻辑内执行的 计算;^序代码语句或指令(可能包括通过多个计算;^序代码语句或指 令)来实现,以修改这样的逻辑或电路的操作来实现所述的操作或功能。 在另一个实施例中,这些各种装置中的任何一个或每个可以用固件实现, 而在其它实施例中,其可以用硬件实现。此外,在本发明的至少一个实施 例中,这些各种装置中的任何一个或每个可由计算机程序软件、固件和/ 或硬件的组合来实现。
上述方法、过程和/或例程中的任何一个和每个可有利地被实现为存 储在任何有形介质上或以电子、信号或数字形式存在的计算机程序和/或 计算;^E序产品。这样的计算积4呈序或计算M序产品分别包括指令,和 /或被组织成模块、程序、子程序,或者以任何其它方式组织,以便在处 理逻辑如计算机、计算机器或信息设备的处理器或微处理器中执行;计算 ^4呈序或计算^4呈序产品修改其在上面执行的计算机的操作,或者修改与 该计算;I^序或计算;^序产品所在的或在上面执行的计算;M目耦合、连 接或者以信号通信的计算机上的操作。这样的计算^序或计算^序产 品修改计算机、计算机器和/或信息设备的操作和体系结构性的结构,以 改变计算机的技术操作,并实现本文所述的技术效果。
因此,本发明可包含一种计算机程序产品,其包括一组程序指令,其 中该组程序指令存储在存储介质中,或者以任何形式电子地存在,并且可 用于使多个计算机执行如本文(包括任一权利要求中)所述的方法、过程、 例程等中的任何一个。
此外,本发明包含(但不局限于)多个计算机,或者与经由通信网络 或其它通信链路或路径互连、并且每个可用于基本同时或并行地执e^L编 写成仅在单个计算机上或者在各计算机中对应的不同的计算机上^Mt的 应用代码的相同或不同部分的单个计算机。所述计算机被编程成在被加栽 计算M序产品时或者才艮据后续指令,执行说明书中描述的、或任一权利 要求书中提出的任何方法、过程或例程。类似地,本发明在其范围内还包 含被布置成与类似的、或基本类似的计算机合作以形成多计算机系统的单 个计算机。
本文所使用的术语"包括"(及其语法变型)用于表示"具有"或"包 含"的包括性含义,而不是用于表示"仅由......组成"的排它性含义。
概括地说,公开了多计算机环境中的进一步改进,在该多计算机环境中,被编写成仅在单个计算机上执行的应用程序的不同部分在多个计算机 中对应的计算机上基本上同时地执行,所述多个计算机每个均具有独立的 本地存储器,并且每个均经由通信网络互连,并且在该多计算机环境中, 一些存储器位置能够被第一批多个所述计算机引用,并且在该多计算机环 境中,其它的存储器位置能够被第二批且不同的多个所述计算机引用,并 且在每次所述存储器位置中的任何一个的内#用新内容写入或覆写,或 者以其它方式操纵之后,所述计算机中任何对应的存储器位置经由通信网
络在适当时候被更新或操纵,进一步改进包括步骤
(i)维护有关哪些存储器位置存在于哪些计算机上的记录,以及
(ii )仅在适当时候更新或操纵在所述维护的记录中与最初更新或操纵 的存储器位置对应的那些存储器位置,从而减少通过通信网络传送的更新 或操纵指令的量。
优选地,所述方法包括步骤
(iii) 将记录维护为对应于每个存储器位置的计算机的列表。 可替选地,所述方法包括步骤
(iv) 将记录维护为存在于每个计算机中的存储器位置的列表。 可替选地,所述方法包括步骤;
(v) 将记录维护为所有计算机和所有存储器位置的表。
优选地, 一些存储器位置和其它存储器位置包含公共存储器位置。
优选地,第一批多个计算机和第二批多个计算机包含公共计算机。
此外,还公开了一种计算机系统,包括每个均具有独立的本地存储器 并且每个均经由通信网络互连的多个计算机,其中,被编写成仅在单个计 算机上执行的应用程序的不同部分在所述多个计算机中对应的计算机上 基本上同时地执行, 一些存储器位置能被第一批多个所述计算机引用,而 其它存储器位置能被第二批且不同的多个所述计算机引用,所述系统还包 括与每个所述计算机关联的更新装置,以在每次每个所述存储器位置的内 g用新内容写入或覆写,或者以其它方式操纵之后,经由通信网络在适 当时候更新每个所述存储器位置,其中所述更新装置包含有关哪些存储器 位置出现在哪些计算机上的记录装置,并且所述更新装置M适当时候更 新或操纵所述记录装置中与初始更新或操纵的存储器位置对应的那些存 储器位置,从而减少通过通信网络传送的更新或操纵指令的量。优选地,记录装置是对应于每个存储器位置的计算机的列表。可替选地,记录装置是存在于每个计算机中的存储器位置的列表。可替选地,记录装置是所有计算机和所有存储器位置的表。优选地, 一些存储器位置和其它存储器位置包含公共存储器位置。优选地,第一批多个计算机和第二批多个计算机包含>^共计算机。还公开了经由通信网络互连并且用于保证上述方法的执行的多个计 算机。此外,还公开了一种计算M序产品,其包括存储在存储介质中并且 用于使多个计算机执行上述方法的程序指令集。此外,还公开了单个计算机,用于与至少一个其它计算机合作以执行 上述方法或形成上述计算机系统。
权利要求
1. 多计算机环境中的进一步改进,在该多计算机环境中,被编写成仅在单个计算机上执行的应用程序的不同部分在多个计算机中对应的计算机上基本上同时地执行,所述多个计算机每个均具有独立的本地存储器,并且每个均经由通信网络互连,并且在该多计算机环境中,一些存储器位置能够被第一批多个所述计算机引用,并且在该多计算机环境中,其它的存储器位置能够被第二批且不同的多个所述计算机引用,并且在每次所述存储器位置中的任何一个的内容被用新内容写入或覆写,或者以其它方式操纵之后,所述计算机中任何对应的存储器位置经由所述通信网络在适当时候被更新或操纵,所述进一步改进包括步骤(i)维护有关哪些存储器位置存在于哪些计算机上的记录,以及(ii)仅在适当时候更新或操纵在所述维护的记录中与最初更新或操纵的存储器位置对应的那些存储器位置,从而减少通过所述通信网络传送的更新或操纵指令的量。
2. 如权利要求l所述的改进方法,包括步骤(iii) 将所述记录维护为对应于每个所述存储器位置的计算机的列表。
3. 如权利要求l所述的改进方法,包括步骤(iv) 将所述记录维护为存在于每个所述计算机中的存储器位置的列表。
4. 如权利要求l所述的改进方法,包括步骤(v) 将所述记录维护为所有计算机和所有存储器位置的表。
5. 如权利要求1-4中的任何一个所述的改进方法,其中,所述一些 所述存储器位置以及所述其它存储器位置包含公共存储器位置。
6. 如权利要求1-5中的任何一个所述的改进方法,其中所述第一批 多个计算机和所述第二批多个计算机包含公共计算机。
7. —种计算机系统,包括每个均具有独立的本地存储器并且每个均 经由通信网络互连的多个计算机,其中,被编写成仅在单个计算机上执行 的应用程序的不同部分在所述多个计算机中对应的计算机上基本上同时 地执行, 一些存储器位置能被第一批多个所述计算机引用,而其它存储器位置能被第二批且不同的多个所述计算机引用,所述系统还包括与每个所 述计算机关联的更新装置,以在每次每个所述存储器位置的内M用新内 容写入或覆写,或者以其它方式操纵之后,经由所述通信网络在适当时候 更新每个所述存储器位置,其中所述更新装置包含有关哪些存储器位置出 现在哪些计算机上的记录装置,并且所述更新装置仅在适当时候更新或操 纵所述记录装置中与初始更新或操纵的存储器位置对应的那些存储器位 置,从而减少通过所述通信网络传送的更新或操纵指令的量。
8. 如权利要求7所述的系统,其中,所述记录装置是对应于每个所 述存储器位置的计算机的列表。
9. 如权利要求7所述的计算机系统,其中,所述记录装置是存在于 每个所述计算机中的存储器位置的列表。
10. 如权利要求7所述的计算机系统,其中,所述记录装置是所有计 算机和所有存储器位置的表。
11. 如权利要求7-10中的任何一个所述的计算机系统,其中,所述 一些所述存储器位置和所述其它存储器位置包含公共存储器位置。
12. 如权利要求7-11中的任何一个所述的计算机系统,其中,所述 第一批多个计算机和所述第二批多个计算机包含公共计算机。
13. 多个计算机,经由通信网络互连并且用于保证如权利要求l-6中 的任何一个权利要求所述的方法的执行。
14. 一种计算^序产品,包括存储在存储介质中并且用于使多个计 算机执行如权利要求1-6中的任何一个权利要求所述的方法的程序指令 集。
15. —种单个计算机,用于与至少一个其它计算机合作,以便执行如 权利要求l-6中的任何一个权利要求所述的方法,或构成如权利要求7-13 中的任何一个权利要求所述的计算机系统。
全文摘要
公开一种多计算机环境,在该多计算机环境中,应用程序在通过通信网络(53)互连的多个计算机(M1、M2、…Mn)上同时执行,并且每个计算机的本地存储器通过在适当时候更新而被维护得基本相同。提供一种地址表机制,以允许为了例如更新,访问资产、对象或结构(即存储器位置)。由于不是所有计算机都具有相同的存储器,所以不必更新所有计算机,因此通信网络(53)上的流量减少。
文档编号G06F15/16GK101288062SQ200680038414
公开日2008年10月15日 申请日期2006年10月5日 优先权日2005年10月17日
发明者约翰·马修·霍尔特 申请人:瓦拉泰克有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1