本申请要求于2005年3月15日提交的题为“Rule-Based TransactionPrefetching Using Connection End-Point Proxies”的第60/662,452号美国临时专利申请的优先权,该申请所揭示的内容被援引于此用于各种用途。本申请涉及于2002年10月30日提交的题为“Transaction Accelerator for Client-ServerCommunication Systems”(下文称为“McCanne I”)的美国专利申请第10/285,351号;于2003年8月12日提交的题为“Transparent Client-Server TransactionAccelerator”(下文称为“McCanne III”)的美国专利申请申请第10/640,405;于2003年8月12日提交的题为“Cooperative Proxy Auto-Discovery andConnection Interception”(下文称为“McCanne IV”)的美国专利申请第10/640,562号;以及于2003年8月12日提交的题为“Content Delivery for Client-ServerProtocols with User Affinities using Connection End-Point Proxies”(下文称为“McCanne V”)的美国专利申请第10/640,459号,它们均被援引于此用于各种用途。
发明的详细说明
图1示出根据本发明的一个实施例的用于客户机110和服务器170之间的加速事务的系统100。在该图中,客户机110和客户机方网络代理130均连接通常是局域网或LAN的客户机方网络120。同样,服务器170和服务器方网络代理150均连接服务器方网络160。客户机方网络120和服务器方网络160两者通过WAN 140连接,可能经由附加路由、交换或桥接设备以及图1中未示出的链路连接。WAN 140可由能传送包括虚拟专用连网协议在内的数据消息的各种网络或因特网组成。
来自客户机110的请求115通过可以借助匹配高速缓存的预取的响应136来应答它的客户机方网络代理130来发送。如果客户机方网络代理130不具有匹配的高速缓存的预取的响应,则客户机方网络代理110优化或转换请求115并将其作为优化的请求135发送至在广域网WAN 140的另一端的服务器方网络代理150。服务器方网络代理150是客户机方网络代理130的对方并对所接收的优化的请求135进行逆优化或转换以产生原始请求116。服务器方网络代理150检查匹配原始请求116的规则;如果一个或多个规则引发并且预取尚未被节流(throttle),则引发的规则将原始请求116转换或替换成新请求155、156。如果没有规则引发并且预取已被节流,则原始请求116被发送至服务器170。
服务器170对客户机110的响应175通过反向路径。它通过服务器方代理150发送,服务器方代理150确定是否必须采取诸如更新客户机方网络代理130处的高速缓存的信息或使其无效等附加动作,以可能用响应157扩充或替换响应175。服务器方网络代理170优化或转换已修改的响应157,并将其作为优化的响应158通过WAN 140发送至客户机方网络代理130。客户机方网络代理130是服务器方网络代理170的对方并且对所接收的优化的请求158进行逆优化或转换,以产生原始的已修改的响应157。客户机方网络代理通过按需要更新其本地高速缓存或使某无效来处理已修改的响应157。如果已修改的响应157包括直接(非预取的)响应,则该直接响应136被发送至客户机110。
图2示出根据本发明的一实施例的客户机方网络代理130与服务器方网络代理150的内部组件。客户机方网络代理130包括结果缓存210、优化编解码器215、以及预取节流控制220。服务器方网络代理150包括优化编解码器216、无效检查器230、匹配引擎240、通知接收器250、规则存储260节流器以及预取节流器270。
当客户机方网络代理130接收到来自客户机110的请求消息115时,将该请求消息115与结果高速缓存210的内容相比较。在一个实施例中,结果高速缓存210是包括预取的客户机请求以及来自服务器170的相应响应的表或其它数据结构。如果结果高速缓存210包含与请求115匹配的结果,则该匹配结果被返回至客户机110并且请求115不再被转送至服务器方代理150。
如下详述,客户机方代理130的一个实施例可包括用于防止来自预取的请求的数据淹没到客户机10的WAN连接,从而阻止或延迟客户机110向服务器170显式地请求的数据。在这些实施例中,如果预取节流控制220指出,在服务器方代理150处已节制了预取,则来自结果高速缓存210的结果的使用使客户机方网络代理130向在服务器方网络代理150处的预取节流器270发送“不节流”消息。在接收到“不节流”消息时,预取节流器270将允许服务器方网络代理150恢复预取客户机110的数据。
如果在结果高速缓存210中不存在匹配结果,则请求消息115被传递至优化编解码器215,该优化编解码器215进行诸如专利申请McCanneI、McCanneIII、McCanneIV和McCanneV中所述的优化和转换。优化的消息218从客户机方优化编解码器215流向服务器方优化编解码器216,并且这些优化的消息218无需在数量或大小上完全对应于原始的请求消息115。
在服务器方网络代理150处,服务器方优化编解码器216取消客户机方优化编解码器215所进行的优化以及转换,恢复原始的请求消息115。无效检查器230检查请求消息115以确定请求115是否无效在结果高速缓存210中预取并高速缓存的信息。如果要无效,则无效检查器230向客户机方网络代理130发送一条无效消息。如果无效检查器230确定请求115不能被执行,则无效检查器230向客户机方网络代理130发送一条重大错误消息。
如果无效检查器230检测不到重大错误,则消息115被递送至匹配引擎240。匹配引擎240将消息115与规则存储260的内容相比较,并确定规则存储260中的规则中哪个规则“引发”或被激活。当规则引发时,它所定义的影响发生,可能产生一条要被发送至服务器170的新消息280。规则可以是无状态的或是满状态(stateful)的。
匹配引擎240和规则存储260确定是否引发任何规则、是否多个规则可引发,以及以什么次序引发规则。规则可允许其它规则被启用或停用。在一个实施例中,由匹配引擎240和规则存储260施加收敛特性或时限特性以确保不存在规则引发的无止境循环。一个这类配设置是在每一规则引发之后停用该规则并且在接收到新消息之前不允许其被重新启用。此配置确保存在一个单调递减的适用规则的集合。配另一这类配置是具有一个在每次引发后递减的规则的限制计数器。另一种这类配置是具有一个随着时间的流逝递减的实时计数器。
如下详述,规则存储260的一个实施例使用至少一个规则元素和动作元素来指定各规则。规则元素指定用于与客户机请求匹配的准则。在一个实施例中,规则元素可包括能替代客户机请求中的另一个或几个特征的通配符。在其它实施例中,规则元素可包括与相应的语法规则结合在一起使得规则元素能指定更复杂的匹配客户机请求的集合而不必实际地列出集合中的每一个可能的元素的正规表达式。
在又一实施例中,匹配引擎240和规则存储260可以被配置成使用对上下文敏感的语法来激活规则。在此实施例中,匹配引擎240使用两个或多个消息的内容的分析来确定是否激活规则。例如,对上下文敏感的语法在接收到的一个或多个满足准则附加信息之前可能不会响应于第一消息激活一个规则。在另一例子中,基于一个或多个先前消息的内容响应于一个消息的规则激活可能被抑制。
动作元素描述为所接收到的与相应规则元素匹配的消息采取的动作。在一个实施例中,动作元素可指定代表与匹配客户机请求相关联的客户机向服务器170发送的一个或多个附加消息的格式。动作元素可指定精确的预取消息和/或预取消息的模板。在后一情形中,模板可以使用客户机请求的属性或其它系统属性形成完整的预取消息来完成。
本发明的其它实施例可包括一个节流系统,以防止来自预取请求的数据淹没与客户机110的WAN连接218,从而断碍或延迟客户机110向服务器170显式地请求的数据。在这些实施例中,匹配引擎240和规则存储260的操作也可能被预取节流器270抑制。任何与所接收的请求115不同的新消息280被认为是预取请求并且这些消息的生成可能受到预取节流器270的限制。预取节流器270跟踪预取消息280的生成并在所生成的消息的数量达到可配置的极限时通过规则引发(节制该预取)来抑制这类消息的生成。在其它实施例中,预取节流器270能根据由一个或多个预取消息280返回的数据的总大小、用于预取消息及它们的响应的网络包的总数、花在预取消息及它们的响应上的时间量、或一个或多个预取消息及它们的响应的任何其它单个或集合的属性来限制所生成的消息的数量。在又一实施例中,在发生此节制时,还向客户机方代理30处的预取节流控制220发送表示预取已被节制的消息。在节流就位之后,将不恢复预取直至使用来自客户机方代理130(如上所述)处的结果高速缓存210的结果或结果高速缓存210被无效检查器230的决定无效。
对应于所接收的请求115的结果通过成对的优化编解码器216、215发送回客户机方代理130,该代理在一个实施例中向客户机110发送未改变的结果。对应于预取消息280的结果被相应地标记并通过成对的优化编解码器216、215发送至客户机方代理130,代理130将结果添加至结果高速缓存210并且不向客户机110发送任何东西。
在又一实施例中,两个或多个预取消息及它们与客户机请求相关联的相应的响应消息在被发送回客户机代理之前被打包在一起。例如,服务器方代理能尝试将尽量多的预取消息和相应的响应消息打包成单个网络包。一旦包的数据大小限制达到一包消息或时限届满,则服务器方代理将可能包含多个消息的包发送至客户机方代理。服务器方代理将对任何余下的消息重复它打包。这具有使与客户机方代理互通预取消息及它们的相应响应所需的网络包的数量最少化从而改善网络性能的效果。
在某些环境中,“结果”消息将来自服务器作为通知,即没有任何相应的请求初启它。在其它使用中,这些通知常常用于向可能对那些项目感兴趣的客户机指示特定共享的数据项的已改变的环境。这些通知是由通知接收器250在服务器方代理150处接收的。非常象无效检查器230,通知接收机250分析所接收的通知以确定所接收的通知是否使预取并高速缓存在结果高速缓存210中的信息无效。如果这样的话,通知接收器250向客户机方网络代理130发送无效消息。通知接收器250还可确定,表示已发生解决不了的问题的通知,并向客户机方网络代理130发送重大错误消息。
图3A和3B示出根据本发明的一个实施例处理服务器方网络代理的数据的方法。图3A示出根据本发明的一个实施例的用于处理通过客户机方代理从客户机接收到的消息的方法300。在步骤305,服务器方代理从客户机应用程序接收对于服务器的客户机请求消息。在一个实施例中,客户机请求消息通过客户机方代理,该代理使用结果高速缓存中的数据来确定是否能满足客户机请求消息。如果不能,则客户机方代理将客户机请求消息发送至服务器方代理。
步骤310确定客户机请求消息是否能被发送至服务器而不引发错误。在一个实施例中,如果客户机请求与已由服务器方代理发出的预取的消息不一致,则客户机请求消息不能被发送至服务器。这可能在由服务器方代理使用的规则集合无法正确地预测一个系列中的一个或多个相关的客户机请求消息时发生。可能不向服务器发送客户机请求消息的另一原因是如果客户机请求消息会例如由于无序的客户机消息请求或未预计到的消息请求而产生不可恢复的事务错误。
如果客户机请求消息能被安全地发送至服务器,则方法300进到步骤315。相反,如果客户机请求消息不能被安全地发送至服务器,则方法300进到步骤320。步骤320确定,无效结果高速缓存或其部分,诸如高速缓存中存储系统预期的预取消息而不是在步骤305中接收到的客户机请求消息的那部分是否会使客户机请求消息被安全发送至服务器。如果这样,则方法300进到步骤325以无效客户机方代理的结果高速缓存的全部或一部分。在一个实施例中,步骤325向适当的客户机方代理发送一个消息,指定全部或一部分结果高速缓存应被无效且相关联的数据应被废弃。方法300随后从步骤325进到步骤315。
在一个实施例中,服务器方代理在服务器方代理处客户机请求消息与规则相匹配时向客户机方代理发出诸如全部或基于规则的部分高速缓存无效策略。如下所述,客户机方代理在发生高速缓存错误时使用此高速缓存无效策略,来确定是否应无效客户机方代理的高速缓存的全部或一部分。
如果步骤320确定即使客户机方代理结果被无效客户机请求消息也不能被安全地发送至服务器,则步骤330确定客户机请求消息。此可在例如无序客户机请求消息导致不可恢复的事务故障时发生。在步骤330的一个实施例中,服务器方代理关闭其与服务器的连接以及与其对等客户机方代理的连接,并且客户机方代理被强制向客户机应用程序返回一个错误。
继步骤310或步骤325之后,步骤315向预期服务器发送客户机请求消息用于处理。在一个实施例中,服务器方代理维持客户机请求消息的记录,以将其与由服务器返回的任何结果消息相匹配。
继步骤315之后,步骤335将客户机请求消息与由服务器方代理维持的那组规则相比较。在一个实施例中,步骤335响应于与一个或多个规则匹配的客户机请求消息代表客户机应用程序向服务器发出一个或多个预取消息。预取消息可以被同时或连续地发出。在一个实施例中,服务器方代理维持与客户机请求消息一起发送至服务器的预取消息的记录。在又一实施例中,可以使用上述通信节流系统来停用步骤335。继步骤335之后,方法300返回至步骤305以等待来自客户机方代理的进一步消息。
图3B示出用于处理从服务器接收的消息的方法350。在替换的实施例中,这些步骤可以按不同的次序执行,因为除了在被明白地指出的情况下以外,不存在必需的同步或先后顺序。步骤355接收来自服务器的消息。步骤360确定所接收的消息是否是服务器对先前由服务器方代理接收到的客户机请求消息的响应。如果是这样,则方法350进到步骤365。在一个实施例中,可以通过由服务器方代理维持的客户机请求消息的记录来方便进行此比较。
相反,如果步骤360确定所接收的消息不是服务器对先前由服务器方代理接收到的客户机请求消息的响应,则步骤370确定所接收消息是否是服务器对于由服务器方代理代表客户机应用程序响应于匹配一个或多个规则的客户机请求消息发送的预取消息的响应。如果是这样,则方法350进到步骤375。在一个实施例中,可以通过由服务器方代理维持的预取消息的一个记录来方便进行此比较。
步骤375标记并打包该消息。在一个实施例中,该消息与附加数据打包在一起以便于被客户机方代理高速缓存。在一个实施例中,此附加数据可包括相应预取请求的拷贝或由其导出的标识符。此使得客户机方代理能将未来客户机请求与存储在结果高速缓存中的数据相匹配。继步骤375之后,方法350进到步骤365。
继步骤375或步骤360之后,步骤365将消息或如以下或其它地方所述的一包消息发送至客户机方代理。
在另一实施例中,步骤375能将多个消息一起打包到一个网络包中以改善网络性能。在此实施例中,继步骤375之后,如果包不满的话可以绕过步骤365。在此情形中,方法350随后直接进到步骤355以等待来自服务器的下一消息。在另一实施例中,如果来自服务器的与部分填充的包相关联的另一消息在一定时间内未被接收到,则方法350将返回到步骤365以将任何部分填充的包发送至合适的客户机方代理。
回到步骤370,如果所接收的消息不是服务器对预取消息的响应,则方法350进到步骤380。步骤380确定所接收的消息是否无效客户机方代理的结果高速缓存中的数据。如果是这样,则方法350进到步骤385以无效客户机方代理的结果高速缓存。在一个实施例中,步骤385向提供高速缓存无效策略的客户机方代理发送消息。响应于在客户机请求不与高速缓存中的任何数据匹配时发生的高速缓存错误,客户机方代理根据高速缓存无效策略废弃其结果高速缓存的全部或一部分。高速缓存无效策略可指定结束高速缓存中的所有数据要被废弃或只废弃与规则匹配的数据。
在一个实施例中,服务器方代理直接无效客户机方代理的结果高速缓存的全部或一部分。例如,这可以使用一对代理规则:规则A和规则B来实现。规则A包括查询匹配准则、预取指令以及“发送错误而不进行对服务器的高速缓存清除”的高速缓存错误策略。规则B包括匹配准则以及活动高速缓存清除(部分或全部)指令。活动高速缓存清除消息被发送至客户机方代理以使客户机方代理清除该高速缓存。
这对规则可用于服务器方代理预取查询的大列表并使用规则A将它们发送至客户机方代理的情形。客户机只请求这些预取的查询的子集,这些预取的查询不时夹杂着被客户机方代理处的作为高速缓存错误的客户机请求消息。在某个点,客户机可发出导致客户机处的高速缓存错误的特定客户机请求消息。象引起高速缓存错误的其它客户机请求消息一样,此特定客户机请求消息被发送至服务器方代理用于执行。在服务器方代理处,此客户机请求消息匹配规则B。规则B的准则被指定成它与指示客户机将不请求更多存储在客户机方代理的结果高速缓存中的余下预取的请求的客户机请求消息相匹配。作为客户机请求消息匹配规则B的结果,服务器向客户机方代理发送清除客户机方代理的结果高速缓存的部分或全部的消息。
相反,如果所接收的消息不要求无效结果高速缓冲器,则方法350进到步骤390。步骤390确定该消息是否指示重大错误。如果是这样,则方法350进到步骤395,该步骤结束该方法。否则,方法350从步骤390回到步骤355以等待进一步的消息。
图4示出根据本发明的一个实施例的在客户机方网络代理处处理数据的方法。图4A示出用于处理从客户机接收的消息的方法400。步骤405接收来自客户机应用程序的客户机请求消息。步骤410确定该客户机请求消息是否与存储在客户机方网络代理的结果高速缓存中的数据相匹配。在一个实施例中,结果高速缓存存储预取消息及它们的相应的结果消息。在此实施例中,步骤410在结果高速缓存中搜索与所接收的客户机请求消息相匹配的预取消息。在其它实施例中,诸如散列表等技术可用于便于在结果高速缓存中搜索与所接收的客户机请求消息相匹配的结果消息。
如果步骤410确定结果缓冲器不包括任何与所接收的客户机请求消息相匹配的数据,则步骤415向服务器发送所接收的客户机请求消息用于处理。在一个实施例中,步骤415向服务器方代理发送所接收的客户机请求消息用于如上所述地处理。方法400随后返回至步骤405以等待进一步的客户机请求消息。
相反,如果步骤410确定结果高速缓存不包括一个或多个与所接收的客户机请求消息相对应的结果消息,则步骤420从结果高速缓存中去除相应的结果消息。步骤425向客户机应用程序发送该结果消息,籍此满足客户机请求消息而无需初启与服务器的进一步通信。
在一个实施例中,客户机方网络代理可包括预取节流控制。在此实施例中,步骤430确定是否从服务器方网络代理节制或挂起包括与附加的预取消息和相应的结果消息相关联的数据的网络通信。如果是,则步骤435向服务器方网络代理发送一个未节流通过以表示服务器方网络代理能恢复向客户机方代理发送与任何附加预取消息及相应的结果消息相关联的数据。如果否,则方法400返回步骤405以等待来自客户机应用程序的附加客户机请求消息。类似地,继步骤440之后,方法400返回至步骤405。
图4B示出根据本发明的一个实施例的用于处理从服务器方代理接收的消息的方法450。在替换的实施例中,这些步骤可以按不同的次序执行,因为除了明确指示的情形之外不需要同步或顺序执行。
步骤455接收来自服务器方代理的消息。消息可特定地发往客户机方代理或发往客户机应用程序。在后一情形中,客户机方代理截取由服务器或服务器方代理发往客户机应用程序的消息。步骤460确定所接收的消息是否请求无效客户机方代理的结果高速缓存的全部或一部分。如果是,则在步骤465中,客户机方代理废弃或以其它方式无效其结果高速缓存中的适当部分中的数据。继步骤465之后,方法450返回至步骤455以等待来自服务器方代理的附加消息。
相反,如果步骤460确定该消息不请求无效结果高速缓存中的任何部分,则步骤470确定该消息是否包括要高速缓存的数据。在一个实施例中,包括要高速缓存的数据的消息可包括一个或多个与由服务器方代理代表客户机应用程序发出的一个或多个预取消息相对应的结果消息。在另一实施例中,包括要高速缓存的数据的消息可包括预取消息的拷贝或由其导出的标识符以便于将所接收的客户机请求消息与存储在结果高速缓存中的相应结果消息相匹配。
如果步骤470确定从服务器方网络代理接收的消息包括要高速缓存的数据,则步骤475将来自该消息的数据添加至客户机方网络代理的结果高速缓存。相反,如果步骤470确定所接收的消息不包括要高速缓存的数据,则步骤480将所接收的消息发送至其预期目的地,诸如客户机应用程序等。继步骤480或475之后,方法450返回至步骤455以等待任何附加消息。
图5A至5C示出根据本发明的实施例的在系统的组件之间的示例消息流。图5A示出从客户机应用程序510通过客户机方网络代理520和服务器方网络代理530流向服务器应用程序540的客户机请求消息501的简单消息流。相应的响应消息502从服务器应用程序540通过服务器方网络代理530和客户机方网络代理520流向客户机应用程序510。在图5A中,客户机方网络代理520和服务器方网络代理530能检查客户机请求消息501和响应消息502但不影响客户机510与服务器540之间的通信。
图5B示出从客户机应用程序510流向客户机方网络代理520的客户机请求消息503的消息流。在此例子中,客户机请求消息503与高速缓存在客户机方代理的结果高速缓存中的响应消息相对应。因此,客户机方代理520从其结果高速缓存中检索响应消息504并将其返回至客户机应用程序510。在此例中,不需要与系统的其它组件的任何附加通信。
图5C示出预取是如何发生的并因而示出客户机方网络代理520如何会能如先前在图5B中所示地递送高速缓存的结果。来自客户机应用程序510的客户机请求消息505可以在客户机方代理520处检查,但在此例子中不与任何高速缓存的结果匹配。因此,客户机请求消息505被发送至客户机方代理530再次进行检查。在此例子中,客户机请求消息匹配用于触发服务器方代理530以生成消息505a和505b的一个或多个规则。在某些实施例中,消息505a可与请求505相同。在某些实施例中,服务器方代理530可能生成更多或更少的消息;对于此例子使用两个消息是无关紧要的。消息505a和505b被发送至产生的相应的结果消息506a和506b的服务器540。在一个配置中,505a是未修改的直接请求520,因此相应的结果506a被作为507a递送至客户机方网络代理520,然后作为508a递送至客户机510。然而,505b是预取消息,因而相应的结果消息506b被标记成要高速缓存并被打包在消息507b中的数据。当结果消息507b被发送至客户机方网络代理520,则内容507b被放置在客户机方网络代理520的结果高速缓存中并且不向客户机510发送相应的消息。
图6示出一个示例规则的元素,诸如可用于建立在图2中所述的规则存储260中的规则的元素。那里编码的例子捕捉以下情形:
当服务器方代理从客户机接收作为以TDS格式编码的微软项目产品的消息时,其中该消息属于类型3,具有RPC ID 5,带有7个自变量,并且该消息的查询部分与以下正规表达式相匹配;然后执行以下动作:
Send a prefetch TDS message of type 3,rpc id 5,with the query string
“select proj_read_count,proj_locked,proj_read_write,
proj_read_only,proj_id,proj_machine_id,proj_data source from
msp_projects where proj_name=<the_matched_sub_expression>”
规则元素610说明规则的匹配部分。动作元素620说明要为所接收的与相应的规则元素610匹配的消息采取的全部消息替换动作。规则元素610可具有多个相关联的动作元素620,而各动作元素620产生各不相同的整个消息替换。自变量动作元素630说明自变量级(level)替换而动作元素620说明整个消息级替换。动作元素620可具有多个相关联的自变量动作元素630,而各自变量动作元素630产生各不相同的自变量替换。
为了示例的目的讨论了图6的示例规则。本发明的实施例可采用任何数量的具有不同规则类型和动作元素的规则。另外,可以为不同类型和类别的客户机应用程序、不同的服务器应用程序和不同的消息格式和协议指定规则。通常,本发明的实施例适用于其中客户机使用任何类型的请求/回复协议与服务器应用程序通信的系统。例如,本发明的实施例可与任何类型的数据库服务器、Java RMI和CORBA结合使用。
在另一实施例中,如上所述的用于预取和高速缓存的系统和技术能延伸用到预先确认客户机请求消息。预先确认是由客户机方或服务器方网络代理或事务加速器创建对客户机请求消息的合成响应,以替代由服务器响应于客户机请求消息正常向客户机发送的确认消息。预先确认的使用减少了客户机在发送客户机请求消息到接收来自服务器的确认消息之间的延迟。
在某些应用中,预先确认从数据一致性方面来看可能不安全。因此,在一个实施例中,预先确认在网络代理和事务加速器的默认配置中被关闭。预先确认随后可以被有选择地启动只用于特定类型的事务。在又一实施例中,在客户机请求消息周围事务边界的插入确保了数据一致性安全性。
在一个实施例中,规则在客户机方和/或服务器方代理处被用于确定请求是否可以被预先确认。在第一实施例中,服务器方规则引擎检查输入的客户机请求消息以确定用预先确认消息响应是否安全。在一个或多个服务器方规则与客户机请求消息之间匹配的情形中,服务器方代理向客户机方代理发送诸如语句标识符、句柄等标识符或其它事务标识信息。此标识符用于标识能由客户机方代理或事务加速器预先确认的相同或相关事务中的后续客户机请求消息。
在一个实施例中,客户机方代理或事务加速器只使用标识符或结合附加的客户机方规则来标识能被安全地预先确认的后续客户机请求消息。响应于标识与标识符匹配的后续客户机请求消息,客户机方代理或交易加速器立即向客户机返回预先确认消息。
在一个例子中,如果客户机请求消息由服务器接收和处理,则可以在客户机不关心诸如客户机上载以及反复用不同自变量调用SQL过程等一系列客户机请求消息的结果时使用预先确认消息。
在另一实施例中,客户机方代理或事务加速器中的客户机方规则被用于在事务中频繁但不连续地出现的请求。在一个实施例中,客户机方代理包括从输入的客户机请求消息生成标识符的能力。在又一实施例中,客户机方代理为包括不与客户机方规则匹配以及未预先确认的消息在内的所有输入的客户机请求消息生成和存储标识符。这防止了不能被预先确认的客户机请求消息由于标识符冲突而被误标识。
在又一实施例中,客户机方网络代理还通过在拟被预先确认的第一客户机请求消息之前插入事务起点请求来确保数据一致性安全性。客户机方代理废弃服务器对此事务起点请求的响应。
在又一实施例中,包括响应于客户机请求消息发送的确认消息在内的服务器响应由客户机方代理接收。客户机方代理检查确认消息中的成功或故障代码。在客户机请求消息的成功代码已被客户机方代理预先确认的情形中,客户机方代理将响应消息作为冗余废弃。在客户机请求消息的故障代码已被客户机方代理预先确认的情形中,从客户机接收到的同一事务中的下一客户机请求消息接收错误响应。或者,客户机方代理可响应于故障代码断开该连接。
如果对客户机请求消息的所有响应指示成功并且接收到非预先确认客户机请求消息,则向服务器方发送事务终点请求。在接收到成功响应时,待决的不可预先确认的请求被代理至服务器方。不成功响应导致不可预先确认的响应被发送至客户机或客户机方代理断开该连接。
在又一实施例中,可以基于响应回到客户机方代理来使用调节机制。客户机方代理会在预先确认的请求的未完成响应的数量超过可配置阈值时中止预先确认请求的生成。这防止了客户机由于客户机请求消息与预先确认响应之间的减小的延迟而占满了服务器。
在一个实施例中,为了实现预先确认,图2中的客户机方代理增加了可选的匹配引擎240a和规则存储260a。可选的匹配引擎240a和规则存储260a类似于上述匹配引擎240和规则存储260,并具有参照预先确认消息所述的附加功能。
图7示出根据本发明的一个实施例的处理从服务器方代理接收的消息的方法700。方法700基本上类似于图4A的方法400,方法700的步骤405、410、415、420、425、430和435与它们在方法400中同样编号的对应步骤相似。然而,继步骤405之后,步骤705在客户机中确定请求消息与预先确认规则匹配。如果否,则方法700进到步骤410以及如上所述的后续步骤。如果步骤705确定该消息不与预先确认规则相匹配,则步骤710生成预先确认消息并将其发送回客户机。继步骤710之后,方法700返回到步骤405。
虽然本发明已参照其特定实施例进行了讨论,但这些实施例只是本发明的示例而非限定。另外,上述系统体系结构是用于示例目的。本发明可以用包括作为独立的应用程序或作为与其它应用程序集成的模块在内许多不同的形式实现。因此,本发明的范围只由权利要求确定。