CN101147131A - 用于增强远程调用性能的多级高速缓存器装置和方法 - Google Patents
用于增强远程调用性能的多级高速缓存器装置和方法 Download PDFInfo
- Publication number
- CN101147131A CN101147131A CNA2006800095325A CN200680009532A CN101147131A CN 101147131 A CN101147131 A CN 101147131A CN A2006800095325 A CNA2006800095325 A CN A2006800095325A CN 200680009532 A CN200680009532 A CN 200680009532A CN 101147131 A CN101147131 A CN 101147131A
- Authority
- CN
- China
- Prior art keywords
- partitioned
- proxies
- computer system
- cache
- partitioned proxies
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1006—Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1014—Server selection for load balancing based on the content of a request
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/288—Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
在联网的计算机系统中,分区代理定义为每个都包括连接信息的高速缓存器,其当每次远程调用对象时,允许将远程调用快速路由到对象,而不需要经历针对该对象确定路由信息的开销。对象的多个副本在多个计算机系统中创建。然后创建指向该对象的每个副本的分区代理。分区代理允许快速访问这些对象副本,而不需要同步它们的状态数据的开销。将连接信息优选地高速缓存在分区代理中允许了计算机系统调用远程对象,而没有每次调用用于访问远程对象的连接信息时进行确定的性能损失。
Description
技术领域
本发明一般涉及计算机系统,尤其涉及在联网的计算机系统中远程调用对象。
背景技术
联网的计算机系统使得不同的计算机相互之间能够进行通信。互联网是联网的计算机系统的一个例子,其将数百万计算机连接在一起。当然,同样存在大量其他类型的计算机网络。大部分计算机网络的目的是使得计算机相互之间能够进行通信。计算机进行通信的一种已知方法是使用一个称为远程调用的概念。
远程调用是指一个计算机系统执行(或调用)不同计算机系统上的对象的能力。远程调用对象在当今联网的计算机系统中非常普遍,因为远程调用对象的能力改善了系统的可缩放性、有效性和灵活性。典型地,远程调用使用一个叫做“代理”的对象来远程调用对象。该代理通常是一个“存根(stub)”,其不包含需要的逻辑,而仅包含指向远程对象的路由信息,其中该远程对象包含需要的逻辑。在简单的现有技术系统中,调取第一计算机系统中的代理来调用第二计算机系统中的对象。当只有单个远程对象时,这种方法工作得很好。然而,现在很多联网的计算机系统都包括不同计算机系统中的多个对象副本。实现这多个副本状态同步的代价很高,并且随着副本数目的增多,这也成为了系统资源的一个重大消耗。
计算机系统中“ 集群(cluster)”的概念在近几年渐渐流行起来。现代联网的计算机系统可以包括多个集群。多个集群的存在使得远程调用对象变得更加困难,因为现在对象的范围需要比单个集群时的范围更大了。这需要复杂的方案来同步跨越集群的对象,并且在系统资源上是一个重大消耗。如果没有一种方法来提高联网的计算机系统中远程调用的性能,那么计算机工业将继续遭受存在多个集群时管理远程调用的过高的管理费用。
发明内容
根据第一方面,提供了一种联网的计算机系统,包括:通过网络连接在一起的多个计算机系统,其中该多个计算机系统中的每一个包含指定对象的副本;以及第一计算机系统,其包括多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象的相应副本的连接信息。
根据第二方面,提供了一种用于远程对象调用的计算机实现的方法,该方法包括步骤:在多个计算机系统中创建指定对象的多个副本;以及创建多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象相应副本的连接信息。
根据第三方面,提供了一种用于在联网的计算机系统中远程对象调用的计算机实现的方法,该联网的计算机系统包括通过网络连接在一起的多个计算机系统,其中该多个计算机系统中的每一个包含指定对象的副本,该联网的计算机系统还包括:第一计算机系统,其包括多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象相应副本的连接信息,该方法包括步骤:(A)接收对象请求;(B)确定该多个分区代理中的哪一个对应于该对象请求;(C)将该对象请求路由至(B)中确定的分区代理;以及(D)在(B)中确定的分区代理使用存储在该高速缓存器中的连接信息,将该对象请求路由至该指定对象的相应副本。
根据第四方面,提供了一种程序产品,包括:(A)分区代理机制,其创建多个分区代理,每个分区代理引用通过网络连接在一起的多个计算机系统中的指定对象的不同副本,其中该多个计算机系统中的每一个包含该指定对象的副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象相应副本的连接信息;以及(B)承载该分区代理机制的计算机可读信号承载介质。
在联网的计算机系统中,分区代理优选地定义为每个都包括连接信息的高速缓存器,当每次远程调用对象时,允许将远程调用快速路由到对象,而不需要经历针对该对象确定路由信息的开销。对象的多个副本优选地在多个计算机系统中创建。然后优选地创建指向该对象的每个副本的分区代理。该对象的这些副本不需要同步它们的状态数据,因为它们处理不同类型的请求,所以不需要访问同一状态数据。分区代理优选地允许快速访问这些对象副本,不需要同步它们的状态数据的开销。因此优选实施例提供了以下优点:远程系统中对象的多个副本可以横跨多个计算机集群,而没有同步多个副本状态的性能损失。将连接信息优选地高速缓存在分区代理中允许了计算机系统调用远程对象,而没有每次调用用于访问远程对象的连接信息时进行确定的性能损失。
从以下对本发明优选实施例更细致的描述中,如附图所示,本发明的前述以及其他特征和优点将变得明显。
附图说明
本发明优选实施例将在下文中,通过示例的方式,结合附图一起描述,其中同样的标记代表同样的元件:
图1是联网的现有技术计算机系统的方块图;
图2是示出对象委托与相应代理对象的相关性的现有技术表;
图3是包括多个对象副本的联网的现有技术计算机系统的方块图;
图4是将远程调用路由至相应对象的现有技术方法的流程图;
图5是现有技术中分区计算机系统的方块图;
图6是根据优选实施例的包括分区代理的分区计算机系统方块图;
图7是根据优选实施例的包括分区代理的分区计算机系统方块图;
图8是根据优选实施例的分区代理方法的流程图;
图9是根据优选实施例的路由远程对象调用的方法的流程图;
图10示出了根据优选实施例的多级高速缓存器的第一级的表;
图11示出了根据优选实施例的多级高速缓存器的第二级的表;以及
图12示出了根据优选实施例的分区代理对象的内容。
具体实施方式
1.0综述
本发明涉及联网计算机系统中的远程调用对象。对于那些不熟悉远程调用对象的人来说,综述部分将提供背景信息以帮助其理解本发明。
已知的远程调用对象
在图1中示出了支持远程调用对象的一种已知的计算机系统。对象委托110位于客户端计算机系统。该对象委托110包括标识使用哪个代理的代理规范112。对于每个对象委托110,有一个并且只有一个代理120。该代理120可以引用多个服务器130中的多个对象。图1清楚示出了对象委托110与代理120之间的这种一对一关系,以及代理120与服务器130之间的这种一对n关系。
图1中的代理规范112可以由图2中的表来表示。代理规范112包括用于对象委托的名称的一列,和用于相应的代理的一列。回到图1,每个对象委托只有一个相应的代理。
图3的方块图示出了一种现有技术计算机系统300。计算机系统300包括第一计算机系统310,以及任意适当数目的其他计算机系统320,330,...,340。这个例子中,假设每个计算机系统320,330,...,340包括对象的一个副本。从而,计算机系统320包括对象322。计算机系统330包括对象332,其是对象322的副本。计算机系统340包括对象342,其是对象322和332的副本。计算机系统310包括代理对象312,其路由对象请求至其他计算机系统中该对象的合适的副本。当计算机系统310接收到对象请求305时,查阅图2中的代理规范112以确定哪个代理对应于该请求。如图2所示,设置次序(PlaceOrder)对象委托对应于代理01,其在图3中表示为312。那么代理312必需确定该请求应该路由至的合适对象副本。
在联网的计算机系统中,典型地存在客户端对象和服务器对象。客户端对象是这样一个对象,其调取称做服务器对象的不同对象。服务器对象是由客户端对象调取的对象。注意,术语客户端和服务器有时用于绝对意义,例如网页浏览器对于网页服务器来说是客户端。不过,术语客户端和服务器在此处用作表示调取的方向,没有任何特定标签用在任何特定计算机系统。这样,接收对象请求305的代理对象312就是该对象请求的服务器,但是当它发送客户端请求到相应的对象副本时(例如计算机系统320中的对象322),它又变成了客户端。
现在参考图4,现有技术中的方法400示出了图3的系统300中远程调用对象执行的步骤。当对象委托接收到对象请求时方法400开始(步骤410)。确定对应于该对象委托的代理(步骤420)。如上所述,这通过查阅图1和2中示出的代理规范来完成。接着,该请求被路由到相应的代理(步骤430)。该代理确定该请求的连接信息(步骤440)。然后,该代理将该请求路由至合适的对象(步骤450) 。
图3所示的现有技术系统300以及图4所示的相应的方法遇到两个严重的问题。第一,因为对象322,332,...,342是同一对象的副本,所以必须有一个适当的机制来同步这些对象的状态。随着对象数目的增多,保持所有副本同步的成本则变成较大的性能损失。第二,因为对所有副本322,332,...,342只有单个代理对象312,所以代理312必须包括确定哪个副本应该接收对象请求305的逻辑。这由图4中的步骤440完成。如果代理对象312碰巧将该对象请求305路由至错误的对象副本,那么必须有一个机制来转发该对象请求305至正确的对象副本,这也提供了一个重大的性能损失。结果是维护多个对象副本的性能损失很高,并且通过单个代理路由所有对象请求至多个对象副本的性能损失也很高。结果是系统为远程对象调用提供相对差的性能。
在图5中以方块图的形式示出了现有技术的另一个计算机系统500。计算机系统500包括一个具有代理规范512的对象委托510。计算机系统500也包括一个对应于该对象委托510的代理520,以及多个分区540。对于每个分区,有一个相应的分区服务器530。图5中所示的计算机系统的分区并没有帮助解决图3中的问题。事实上,通过这些不同的分区,问题变得更加严重。例如,假设图3中的计算机系统310,320,330,...,340每一个都位于一个不同的分区。同样的问题依然存在,不过现在必须解决分区间的通信。因为这个原因,上面所讨论的图3中存在的问题同样也适用于图5的计算机系统500。
2.0优选实施例的描述
这里给出的优选实施例通过提供一种执行远程调用的方法解决了现有技术中的问题,该方法以以下方式执行远程调用:不需要对象副本之间的数据同步,并且高速缓存连接信息,以便可以根据本地高速缓存器中的信息执行重复远程调用,从而在远程对象调用期间节省了相当多的时间和系统资源。
参考图6,根据优选实施例的分区计算机系统600包括对象委托610,该对象委托包括分区委托612和代理表614。对应于每个对象委托610存在多个分区540。每个分区540都有相应的分区服务器530。对应于每个对象委托610也有多个分区代理620,每个分区代理620包括连接信息622,其指示如何将消息路由至相应的分区服务器530。将图6的计算机系统600与图5所示的现有技术计算机系统500进行对比可以得到计算机系统600的重要特征。计算机系统500中,对于n个分区服务器530存在一个代理520。这就需要该代理中具有确定哪个分区服务器530应该接收对象请求的逻辑。相反,计算机系统600提供多个分区代理620,每个分区代理620对应于一个分区服务器530。这样就在分区代理620与分区540之间、分区代理620与分区服务器530之间提供了一对一的相关性。通过为每个分区和分区服务器提供一个专用的分区代理,分区代理620可以在本地高速缓存连接信息用于其相应的分区服务器,从而允许极快地将远程对象调用路由至其合适的分区服务器。
在图5所示现有技术的系统500中,在对象委托510与其相应的代理520之间存在一对一的相关性。在图6的计算机系统600中,对象委托610与分区代理620之间的关系是一对一的关系。这就需要在对象委托610中具有确定哪个分区代理620对应于对象请求的逻辑。每个对象委托610包括分区委托612,其从对象请求中识别出特定的代理表614,用于路由该请求。代理表614标识了哪个分区代理620应该接收该请求。当该请求被路由至合适的分区代理620时,其查看本地高速缓存的连接信息622,以确定如何路由该请求。通过在分区代理中高速缓存该连接信息622,远程对象调用的性能得到显著提高。在图10和11中更加详细地示出了分区委托612以及代理表614。
图7示出了联网的计算机系统700的一个具体实现,该计算机系统700在根据优选实施例的图6所示计算机系统600的范围内。计算机系统700包括第一计算机系统710,其通过网络连接与多个其他计算机系统相连,在图7中示出为计算机系统720,730,...,740。假设图7中的每个计算机系统(即,710,720,730,...,740)代表一个不同的分区服务器(即图6中的530)。计算机系统710包括对象712,该对象包括多个分区代理,在图7中示出为对象714,716,...,718。对象712优选地代表图6中的对象委托610,对象714,716,...,718优选地代表图6中的分区代理620。在最优选的实施例中,对于包括相应对象副本的每个分区服务器,存在单独的分区代理。图7中,每个计算机系统720,730,...,740包括同一对象的副本。从而,计算机系统720包括相应的对象722;计算机系统730包括相应的对象732,其是对象722的一个副本;计算机系统740包括相应的对象742,其是对象722和732的一个副本。图7中只显示了包括对象副本的计算机系统,网络上还可以有未包含对象副本的其他计算机系统。换句话说,网络上的每个计算机系统不需要都包含对象副本,但是对于每个包含对象副本的分区服务器,优选存在一个相应的分区代理。
请注意,计算机系统700还包括分区代理机制708,其用于在分区服务器中创建对象副本,创建相应的分区代理,以及创建对应的分区委托和代理表。分区代理机制708是在优选实施例的范围内建立计算机系统700用于远程对象调用的机制,其也可以驻留在图7网络中的任一计算机系统中。
图8示出了根据优选实施例的配置联网的计算机系统以便用分区代理的方法800。方法800优选由图7中的分区代理机制708来执行。方法800从创建N个对象副本而开始(步骤810),优选在N个不同的分区中创建。接着,创建N个分区代理,为每个对象副本创建一个(步骤820)。每个分区代理包括一个用于存储连接信息的本地高速缓存器。一旦分区代理第一次执行远程调用,连接信息就存储在本地高速缓存器中,从而通过访问存储在本地高速缓存器的连接信息(而不是在每次调用远程对象时都建立连接路径),使得将来的远程对象调用极快。在这点上,创建了分区委托和相应的代理表(步骤830)。一旦方法800完成,则计算机系统准备好使用这些分区代理进行远程对象调用。
参考图9,根据优选实施例执行方法900来将对象请求路由至分区代理。方法900从对象委托接收到对象请求时开始(步骤910)。确定对应于该对象委托的分区(步骤920)。接着确定对应于该分区的分区代理(步骤930)。然后,该对象请求被路由至相应的分区代理(步骤940)。该分区代理接着使用本地高速缓存的连接信息(如果可用),将该对象请求路由至相应的对象(步骤950)。在优选实施例中,每个分区代理包括一个高速缓存器,其存储访问给定对象的连接信息。在某一远程对象第一次被调用时,分区代理将必须进行确定路由该请求的合适连接信息的工作。这个连接信息高速缓存在分区代理中,因此分区代理可以使用高速缓存的连接信息,将后续的针对同一对象的远程请求进行路由,这极大地加速了远程对象调用。
能够从优选实施例的分区代理极大获益的联网计算机系统的一个例子是用于股票交易的计算机系统。假设这样的一个计算机系统,其包括一个设置次序对象,用于设置在特定股票交易中列出的2000支股票中的任一支的次序。在图5所示现有技术系统中,单个代理对象将负责这2000支股票中任一支的所有次序。在分区服务器中可能有设置次序对象的多个副本,但是每个次序的路由将必须通过单个设置次序代理对象。单个代理对象用来确定哪个分区服务器应该接收该请求、确定相应分区服务器的连接信息、以及将该对象请求路由至相应分区服务器中的合适对象所需的时间,对于每个对象请求都将是很长的时间。优选实施例通过提供包括连接信息的本地高速缓存器的分区代理,消除了这些开销以及系统性能问题。
对于上面用于交易2000支不同股票的计算机系统的例子,假设存在2000个不同的分区服务器,每个股票一个分区服务器。这2000个分区服务器的每一个都包括设置次序对象的一个副本。假设这些对象副本之间没有重叠,则这2000个对象副本的状态信息不需要同步,这意味着每个对象处理不同类型的请求。因此,如果给予每个设置次序对象对于2000支股票中的一个(并且仅此一个)的次序设置责任,则该设置次序对象的每个对象副本不必与该设置次序对象的其他副本同步,因为这些对象中没有一个与这些对象中的其他任何一个共享数据。通过分配每个分区服务器对于唯一类型的请求进行不同的、无重叠的负责,消除了在如此多对象副本之间同步的需要。因此,该设置次序对象的一个副本可以专用于处理IBM股票的次序;另一个副本可以专用于处理Microsoft股票的次序;等等。IBM是国际商业机器公司在美国、其他国家或二者中的商标;Microsoft是微软公司在美国、其他国家或二者中的商标。
该优选实施例的另一个显著的好处是在每个分区代理中高速缓存连接信息。分区代理第一次接收到特定对象的远程调用时,分区代理进行确定将对象请求路由至合适的分区服务器的连接信息的所有工作,该合适的分区服务器包括需要接收对象请求的对象的相应副本。一旦该分区代理确定了该连接信息,该连接信息就存储在该分区代理的高速缓存器中。通过将连接信息高速缓存在本地高速缓存器中,分区代理能够将针对同一对象的后续请求极快地路由至需要对这些请求提供服务的相应的对象,而没有每次确定用于对请求进行路由的合适连接信息的开销。结合存储连接信息的本地高速缓存器的分区代理为远程对象调用提供了显著的性能改善。已进行的实际试验显示,使用这里所述的包含本地高速缓存器的分区代理,远程对象调用性能可以提高15倍。
在上面的简单例子中,我们假设2000个分区服务器,用于可以交易的2000支不同股票的每一个。然而,应当注意,可能有一些股票具有比其他股票明显高的交易率,从而可能需要多个分区服务器服务同一支股票。假设这2000支中的前五支股票需要2个分区服务器,每一个分区服务器用于处理这些股票的交易量。在这种情况下,对于这些前五支股票会有十个分区服务器(每支股票两个分区服务器),剩余的1995支股票有1995个分区服务器,总共有2005个分区服务器用于这2000支股票。在这种情况下,通常会有一个机制用来同步分区服务器中的对象副本之间的对象状态,其中该分区服务器为同一股票提供次序服务。这个简单的例子表明了分区服务器的数目不需要直接对应于不同项目(即,这个例子中的股票)的数目,如上述例子中的2005个分区服务器(并且因此,对象副本)用于对2000支不同股票的请求提供服务。
在图10和11中示出图6中的分区委托612以及代理表614其具体实施。分区委托612包括至包含分区和分区代理信息的相应表的对象委托的列表。如果假设调用设置次序对象,图10中的表612表示表T1是对应于该设置次序对象的代理表,如指向图11中的表614的点线箭头所示。在代理表614中,分区关键字(key)与每个分区代理相关。因此,知道分区就能够从代理表614中确定对应于该分区的分区代理。例如对于设置次序对象委托和分区A来说,相应的分区代理是对象O1A,其对应于图7中的分区代理714。
图10和11中的表显示了高速缓存器是怎样一个“多级”高速缓存器。在图10所示的第一级中,对象委托与图11中的相应表相关,其是包括分区和分区代理信息的第二级。该多级高速缓存器的每个条目可以表示为(对象委托,(分区,分区代理))。通过提供这样的多级高速缓存器,可以容易地取回存储在分区代理的本地高速缓存器中的连接信息,用于针对相同远程对象的后续调用,从而使得远程对象调用的性能远好于使用现有技术的性能。
在图12中示出了图7中分区代理714的适当内容的一个例子。分区代理714优选地包括一个指向相应对象(图7中的722)的存根1210、请求上下文信息1220、对象状态1230、连接信息1240以及其他数据1250。尽管分区代理可以包括需要本地存储的任何适当信息,该分区代理可以通过仅存储存根1210和连接信息1240而充分地工作。通过在分区代理714中高速缓存连接信息1240,该分区代理能够将远程对象调用请求快速路由至其相应的远程对象。
连接信息的高速缓存器和分区代理存储在每个客户端中。如果分区服务器死机、移动或者重启,包含连接信息的高速缓存器将失效,并通过路由获取最近的连接信息来更新。在第一次对象被成功调用后,该对象的连接信息高速缓存在客户端中。客户端的本地高速缓存器将有效,直到服务器分区改变为止,在服务器分区改变时,本地高速缓存器将失效,最后当再次确定连接时利用新的连接信息进行更新。
在这点上,重要的是注意,尽管在具有完整功能的计算机系统的上下文中描述了本发明并且将继续描述,本领域的技术人员可以理解,本发明能够以各种形式作为程序产品分布,并且本发明等同地应用,而不考虑用于实际执行该分布的具体计算机可读信号承载介质的特定类型。适当的具体计算机可读信号承载介质的例子包括:可记录类型介质和传输类型介质,可记录类型介质诸如软盘和CDRW(例如,图1中的195),传输类型介质诸如具体实施本发明的数字和模拟通信链路。
优选实施例提供了将远程对象调用性能提高达15倍的能力。通过为每个分区服务器提供一个分区代理,以及将用于每个分区服务器的连接信息在其相应的分区代理中高速缓存,使用本地高速缓存器的数据,可以将大部分的远程调用快速有效地路由至相应的分区服务器。此外,通过将对象副本之间的责任分隔为无重叠区域,消除了同步对象副本的对象状态的需要。
优选实施例公开了一种完全不同的方法在客户端高速缓存对象委托,其包括含有连接信息的分区代理,所述连接信息用于告诉如何连接到服务器集群中的实际对象。连接信息的客户端侧高速缓存消除了服务器端对象同步的需要,其避免了与服务器高速缓存器中过期数据相关联的问题。通过将连接信息高速缓存在客户端侧上的分区代理中,客户端知道如何更快地到达正确对象,而没有任何过期数据的可能。这对于不能容忍服务器侧的任何过期数据的公司以及商业来说是一个巨大的进步。
本领域的技术人员应当理解在本发明的范围内可能有多种变形。因此,在参照优选实施例对本发明进行了详细描述和说明的同时,本领域的技术人员应当理解在不偏离本发明精神和范围的前提下,可以做出这些和其他的形式和细节上的变化。
Claims (23)
1.一种联网的计算机系统,包括:
通过网络连接在一起的多个计算机系统,其中该多个计算机系统中的每一个包含指定对象的副本;以及
第一计算机系统,其包括多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象的相应副本的连接信息。
2.如权利要求1所述的联网的计算机系统,其中该高速缓存器包含连接信息,用于将对象请求路由至该指定对象的相应副本。
3.如权利要求1或2所述的联网的计算机系统,其中该高速缓存器使对象委托与相应的分区表相关。
4.如权利要求3所述的联网的计算机系统,其中该相应的分区表使分区与该多个分区代理中相应的一个分区代理相关。
5.如权利要求1至4中任意一个所述的联网的计算机系统,其中该指定对象的每个副本处理唯一类型的请求,消除了在该指定对象的副本之间同步状态数据的任何需要。
6.如权利要求1至5中任意一个所述的联网的计算机系统,进一步包括分区代理机制,该分区代理机制创建该指定对象的副本并创建相应的多个分区代理。
7.一种用于远程对象调用的计算机实现的方法,该方法包括步骤:
在多个计算机系统中创建指定对象的多个副本;以及
创建多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象相应副本的连接信息。
8.如权利要求7所述的方法,其中该高速缓存器包含连接信息,用于将对象请求路由至该指定对象的相应副本。
9.如权利要求7或8所述的方法,其中该高速缓存器使对象委托与相应的分区表相关。
10.如权利要求9所述的方法,其中该相应的分区表使分区与该多个分区代理中相应的一个分区代理相关。
11.如权利要求7至10中任意一个所述的方法,其中该指定对象的每个副本处理唯一类型的请求,消除了在该指定对象的副本之间同步状态数据的任何需要。
12.如权利要求7至11中任意一个所述的方法,进一步包括创建该指定对象的副本和创建相应的多个分区代理。
13.如权利要求7至12中任意一个所述的方法,进一步包括步骤:
(A)接收对象请求;
(B)确定该多个分区代理中的哪一个对应于该对象请求;
(C)将该对象请求路由至(B)中确定的分区代理;以及
(D)在(B)中确定的分区代理使用存储在该高速缓存器中的连接信息,将该对象请求路由至该指定对象的相应副本。
14.一种用于在联网的计算机系统中远程对象调用的计算机实现的方法,该联网的计算机系统包括通过网络连接在一起的多个计算机系统,其中该多个计算机系统中的每一个包含指定对象的副本,该联网的计算机系统还包括:第一计算机系统,其包括多个分区代理,每个分区代理引用该指定对象的不同副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象的相应副本的连接信息,该方法包括步骤:
(A)接收对象请求;
(B)确定该多个分区代理中的哪一个对应于该对象请求;
(C)将该对象请求路由至(B)中确定的分区代理;以及
(D)在(B)中确定的分区代理使用存储在该高速缓存器中的连接信息,将该对象请求路由至该指定对象的相应副本。
15.一种程序产品,包括:
(A)分区代理机制,其创建多个分区代理,每个分区代理引用通过网络连接在一起的多个计算机系统中的指定对象的不同副本,其中该多个计算机系统中的每一个包含该指定对象的副本,每个分区代理访问高速缓存器,该高速缓存器包含关于如何访问该指定对象的相应副本的连接信息;以及
(B)承载该分区代理机制的计算机可读信号承载介质。
16.如权利要求15所述的程序产品,其中该计算机可读信号承载介质包括可记录介质。
17.如权利要求15所述的程序产品,其中该计算机可读信号承载介质包括传输介质。
18.如权利要求15至17中任意一个所述的程序产品,其中该高速缓存器包含连接信息,用于将对象请求路由至该指定对象的相应副本。
19.如权利要求15至18中任意一个所述的程序产品,其中该高速缓存器使对象委托与相应的分区表相关。
20.如权利要求19所述的程序产品,其中该相应的分区表使分区与该多个分区代理中相应的一个分区代理相关。
21.如权利要求15至19中任意一个所述的程序产品,其中该指定对象的每个副本处理唯一类型的请求,消除了在该指定对象的副本之间同步状态数据的任何需要。
22.如权利要求15至21中任意一个所述的程序产品,其中分区代理机制创建该指定对象的副本并创建相应的多个分区代理。
23.一种计算机程序,包括程序代码装置,当该程序在计算机上运行时,该程序代码装置适用于执行权利要求1至13中任意一个所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/106,003 | 2005-04-14 | ||
US11/106,003 US20060248547A1 (en) | 2005-04-14 | 2005-04-14 | Multi-level cache apparatus and method for enhanced remote invocation performance |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101147131A true CN101147131A (zh) | 2008-03-19 |
Family
ID=37087376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800095325A Pending CN101147131A (zh) | 2005-04-14 | 2006-04-12 | 用于增强远程调用性能的多级高速缓存器装置和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20060248547A1 (zh) |
EP (1) | EP1872218A2 (zh) |
JP (1) | JP2008536229A (zh) |
CN (1) | CN101147131A (zh) |
CA (1) | CA2604246A1 (zh) |
TW (1) | TW200705881A (zh) |
WO (1) | WO2006108850A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345486A (zh) * | 2013-06-24 | 2013-10-09 | 积成电子股份有限公司 | 应用于远程浏览环境下客户端获取和展示图形文件的方法 |
CN103907096A (zh) * | 2011-11-01 | 2014-07-02 | 国际商业机器公司 | 闪存高速缓存中的部分数据片段的提升 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8832247B2 (en) * | 2006-03-24 | 2014-09-09 | Blue Coat Systems, Inc. | Methods and systems for caching content at multiple levels |
US7761559B2 (en) * | 2006-10-13 | 2010-07-20 | International Business Machines Corporation | System and method of remotely managing and loading artifacts |
US8099739B1 (en) * | 2007-06-14 | 2012-01-17 | Keithley Instruments, Inc. | Java applet management method |
US20090063623A1 (en) * | 2007-08-31 | 2009-03-05 | International Business Machines Corporation | Determining connection information to use to access an artifact from an application on a remote server |
GB2468859A (en) * | 2009-03-24 | 2010-09-29 | Nat Univ Ireland Cork | Processing a condensed graph on multiple machines using proxies |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353859B1 (en) * | 1997-04-30 | 2002-03-05 | International Business Machines Corporation | Object-oriented apparatus and method for controlling accesses to objects in a distributed object environment |
US6351775B1 (en) * | 1997-05-30 | 2002-02-26 | International Business Machines Corporation | Loading balancing across servers in a computer network |
US6438652B1 (en) * | 1998-10-09 | 2002-08-20 | International Business Machines Corporation | Load balancing cooperating cache servers by shifting forwarded request |
US6618737B2 (en) * | 2000-03-09 | 2003-09-09 | International Business Machines Corporation | Speculative caching of individual fields in a distributed object system |
US6915520B2 (en) * | 2001-04-06 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | Java C++ proxy objects |
US7203756B2 (en) * | 2001-04-27 | 2007-04-10 | International Business Machines Corporation | Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface |
US7433917B2 (en) * | 2001-09-28 | 2008-10-07 | Bea Systems, Inc. | Method and apparatus for using Java dynamic proxies to interface to generic, bean-like management entities |
US6931427B2 (en) * | 2001-10-31 | 2005-08-16 | Sun Microsystems, Inc. | Method and apparatus for discovering data services in a distributed computer system |
US8037181B2 (en) * | 2002-06-28 | 2011-10-11 | Microsoft Corporation | Re-partitioning directories |
US7171469B2 (en) * | 2002-09-16 | 2007-01-30 | Network Appliance, Inc. | Apparatus and method for storing data in a proxy cache in a network |
EP1420340A1 (en) * | 2002-11-15 | 2004-05-19 | Hewlett-Packard Company | Remote object invocation system and method |
US7424721B2 (en) * | 2003-05-19 | 2008-09-09 | Sun Microsystems, Inc. | Inter-object communication interface bridge |
US7657899B2 (en) * | 2005-03-09 | 2010-02-02 | Computer Associates Think, Inc. | Dynamic creation of proxy software objects at time of execution |
-
2005
- 2005-04-14 US US11/106,003 patent/US20060248547A1/en not_active Abandoned
-
2006
- 2006-04-07 TW TW095112579A patent/TW200705881A/zh unknown
- 2006-04-12 JP JP2008505893A patent/JP2008536229A/ja active Pending
- 2006-04-12 CN CNA2006800095325A patent/CN101147131A/zh active Pending
- 2006-04-12 CA CA002604246A patent/CA2604246A1/en not_active Abandoned
- 2006-04-12 WO PCT/EP2006/061540 patent/WO2006108850A2/en not_active Application Discontinuation
- 2006-04-12 EP EP06725719A patent/EP1872218A2/en not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103907096A (zh) * | 2011-11-01 | 2014-07-02 | 国际商业机器公司 | 闪存高速缓存中的部分数据片段的提升 |
US9417808B2 (en) | 2011-11-01 | 2016-08-16 | International Business Machines Corporation | Promotion of partial data segments in flash cache |
CN103907096B (zh) * | 2011-11-01 | 2016-08-24 | 国际商业机器公司 | 闪存高速缓存中的部分数据片段的提升 |
CN103345486A (zh) * | 2013-06-24 | 2013-10-09 | 积成电子股份有限公司 | 应用于远程浏览环境下客户端获取和展示图形文件的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20060248547A1 (en) | 2006-11-02 |
WO2006108850A3 (en) | 2007-01-11 |
CA2604246A1 (en) | 2006-10-19 |
JP2008536229A (ja) | 2008-09-04 |
WO2006108850A2 (en) | 2006-10-19 |
EP1872218A2 (en) | 2008-01-02 |
TW200705881A (en) | 2007-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101147131A (zh) | 用于增强远程调用性能的多级高速缓存器装置和方法 | |
US7213038B2 (en) | Data synchronization between distributed computers | |
ES2206132T3 (es) | Localizacion optimizada de recursos de red. | |
US8196150B2 (en) | Event locality using queue services | |
US6510429B1 (en) | Message broker apparatus, method and computer program product | |
US6877025B2 (en) | Integrated JSP and command cache for web applications with dynamic content | |
US6971098B2 (en) | Method and apparatus for managing transaction requests in a multi-node architecture | |
US9659038B2 (en) | Efficient snapshot read of a database in a distributed storage system | |
CN1964356B (zh) | 数据处理方法和系统 | |
US20070288524A1 (en) | Apparatus and Method for Efficient Handling of Mostly Read Data in a Computer Server | |
US20020143958A1 (en) | Method and apparatus for asynchronous time-based updates of http sessions | |
CN106777311B (zh) | 航班舱位状态缓存方法和系统 | |
KR20030040206A (ko) | 애플리케이션 캐싱 시스템 및 방법 | |
CN107122431A (zh) | 一种实时计算平台及基于实时计算平台的数据计算方法 | |
US11487674B2 (en) | Virtual memory pool within a network which is accessible from multiple platforms | |
KR100856515B1 (ko) | 고성능 클라이언트 서버 통신 시스템 | |
El Kholy et al. | Framework for interaction between databases and microservice architecture | |
US20030187969A1 (en) | Most eligible server in a common work queue environment | |
CN1979408A (zh) | 管理设备访问的方法和系统 | |
CN100390776C (zh) | 集群计算机系统中的组访问专用化的方法、设备和系统 | |
CN1520568A (zh) | 用于集成的多渠道零售的方法和装置 | |
US20020112125A1 (en) | Command caching to improve network server performance | |
US20030115243A1 (en) | Distributed process execution system and method | |
US20020143846A1 (en) | Method and apparatus for scheduling invalidation tests for HTTP sessions | |
JP2005284781A (ja) | Mqデータ同期システム及びmqデータ同期プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080319 |