用于当使用限制访问的缓冲器时保存会话状态的机制的制作方法

文档序号:7630317阅读:109来源:国知局
专利名称:用于当使用限制访问的缓冲器时保存会话状态的机制的制作方法
技术领域
本发明涉及分布式服务激活技术,尤其涉及用于当在会话中请求回收服务模块时提供会话状态中的连贯性的机制。
背景技术
计算技术已经改变了人们工作和娱乐的方式。计算系统现在采用包括台式计算机、膝上型计算机、图形输入板PC、个人数字助理(PDA)、家庭设备等各种形式。在其最基础形式中,计算系统包括存储器以及一个或多个处理器。系统存储器中的软件可以由处理器来执行以指引计算系统的其它硬件来执行所期望的功能。
分布式计算技术允许多个应用程序或进程通信来完成特定的任务。这样的分布式计算不必是物理上分布式的。例如,同一的进程内的对象可以通信,不同进程中的对象可以在同一本地计算系统上通信。另一方面,分布式计算技术也可以允许运行在远程计算系统上的进程之间的通信。分布式计算技术使得计算系统能够无论是本地还是越过巨大的距离来通信,从而扩展了计算机的功能。
在分布式计算环境中,服务模块通常响应于源自一个或多个其它请求模块的消息,无论该请求和服务模块是位于同一物理机器上,还是远程定位的。为了提供服务,服务模块有时参与与其它计算系统的整个会话。会话是以多个消息交换为特征的,其中存在为成功完成会话而应该在多个会话之间维护的关于会话的状态。
当回收消息模块时,产生这样的面向会话的消息交换的一个常规问题。回收指的是服务模块的一个实例的停用。对该服务模块的未来请求由该服务模块的另一实例处理。这样的回收理想地从请求模块的观点来看应该是透明的。在面向会话消息交换中,服务模块一般通过输入缓冲器访问输入的消息。某些输入缓冲器如此配置,使得当确定要回收服务模块的实例时,该服务模块实例可以不再访问输入缓冲器。
如果尚未向输入缓冲器提供所有的会话消息,那么未来的会话消息将由服务模块的另一实例接收。通常在易失性存储器中维护会话状态。从而,服务模块的第二实例将不能访问服务模块的第一实例所访问的同一会话状态。这样,该会话较不可能由服务模块的第二实例来成功完成。在回收过程中,可以在非易失性存储器中保存会话状态。然而,对非易失性存储器的访问通常慢于对易失性存储器的访问几个数量级。
从而,用于即使在会话中发生对处理会话的服务模块实例的回收决定也可为服务模块保存会话状态的机制是有利的。

发明内容
本发明的原理克服了本领域的现有技术的前述问题,本发明的原理在包含被配置成使用通用输入缓冲器来访问针对服务模块的消息的计算系统的分布式计算环境中实现。一旦确定要回收服务模块实例,则输入缓冲器不被该服务模块实例访问。本发明的原理涉及用于即使在会话过程中确定回收该服务模块实例也保存由服务模块实例处理的同一会话的消息之间的相关性的机制。
具体地,在服务模块实例通过第一输入缓冲器接收会话发起消息之后,然后将不同的面向会话的输入缓冲器与该服务模块实例相关联。然后,服务模块实例可以通过该面向会话的输入缓冲器接收任何后继的会话消息。因为即使确定要回收服务模块实例,该面向会话的输入缓冲器也可由该服务模块实例访问,所以服务模块的同一实例处理所有会话消息。一旦会话完成,该实例可以被停用,从而保存了会话的连贯性。
将在以下描述中描述本发明的其它特征和优点,部分是通过描述而明显的,或者可以通过对本发明的实践来领会。可以通过在所附权利要求书中特别指出的装置和组合来实现和获取本发明的特征和优点。通过阅读以下描述和所附权利要求书,本发明的这些和其它特征会变得完全明显,或者通过之后对所述的本发明的实践可以领会本发明的这些和其它特征。


为了描述其中可获取本发明的上述和其它优点和特征的方式,将通过参考附图中示出的其具体实施例来呈现上述简要描述的本发明的更具体描述。要理解,这些附图仅描述本发明的典型实施例,从而不应被认为是对本发明的范围的限制,将通过对附图的使用,以附加的特性和细节来描述和说明本发明,附图中图1示出了可实现本发明的各特征的合适的计算系统;
图2示出了本发明的原理可在其中操作的分布式计算环境;图3示出了根据本发明的原理用于使用面向会话的输入缓冲器来保存会话连贯性的方法的流程图。
具体实施例方式
可以在分布式计算环境中实现本发明的原理,该分布式计算环境包括被配置成使用输入缓冲器来访问针对服务模块的消息的计算系统。一旦确定要回收服务模块实例,该服务模块实例就不再访问输入缓冲器。本发明的原理提升了在回收事件情况下的会话连贯性,即使处理该会话的服务模块实例不可访问输入缓冲器。
转向附图,其中同样的参考标号指的是同样的元素,本发明的原理被示为在合适的计算环境中实现。以下描述是基于本发明所示出的实施例的,且不应该被认为是关于此处未明确描述的替换实施例而限制本发明。
在以下描述中,除非以其它方式指示,将参考由一台或多台计算机执行的动作和操作的符号表示来描述本发明的实施例。同样,可以理解,有时被称为计算机执行的这样的动作和操作包括由计算机的处理单元对以结构化形式表示数据的电子信号的操纵。该操纵转化数据或将它们维护在计算机的存储器系统的位置处,从而以本领域的技术人员都理解的方式重新配置或以其它方式更改了计算机的操作。其中维护数据的数据结构是具有由数据的格式定义的特定属性的存储器的物理位置。然而,尽管在前述语境中描述本发明的原理,但是不意味着限制,正如本领域的技术人员可以理解的,之后描述的若干动作和操作也可以用硬件实现。
图1示出了可用于这些服务的示例计算机体系结构的示意图。为描述起见,描绘的体系结构仅是合适的环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把该计算环境解释为对图1中示出的的任一组件或其组合有任何依赖性或要求。
本发明的原理可使用众多其它通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和配置的示例包括,但不限于,移动电话、袖珍计算机、个人计算机、服务器、多处理器系统、基于微处理器的系统、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
在其最基本配置中,计算系统100一般包括至少一个处理单元102和存储器104。存储器104可以是易失性的(诸如RAM),非易失性的(诸如ROM、闪存等),或者是两者的某种组合。在图1中由虚线106示出该基本配置。
存储介质设备可以具有其它的特征和功能。例如,它们可以包括附加的存储(可移动和不可移动),包括但不限于,PCMCIA卡、磁盘或光盘以及磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108以及不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存、其它存储器技术、CD-ROM、数字多功能盘(DVD)、其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算系统访问的任何其它介质。
如此处所用,术语“模块”或“组件”可以指的是运行在计算系统上的软件对象或例程。此处描述的不同的组件、模块、引擎和服务可以被实现为运行在计算系统上的对象或进程(例如,作为独立的线程)。尽管此处描述的系统和方法较佳地以软件实现,以软件和硬件或以硬件实现也是可能的,且是被构想的。
计算系统100也可以包含允许主机与其它系统和设备通过例如网络120来通信的信道112。信道112是通信介质的示例。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、无线电、红外线和其它无线介质。此处所用的术语计算机可读介质包括存储介质和通信介质两者。
计算机系统100也可以含有诸如键盘、鼠标、笔、语音输入组件、触摸输入设备等的输入组件114。输出组件116包括屏幕显示器、扬声器、打印机等,以及用于驱动它们的呈现模块(通常被称为“适配器”)。所有这些组件在本领域中都是公知的,且不必在此处详细讨论。
图2示出了可在其中使用本发明的原理的分布式计算环境200。分布式计算环境200可以跨运行在单个进程中的若干对象分布,可以跨运行在同一计算系统上的多个进程分布,或者可以跨多个计算系统分布。这样的计算系统可以采用为图1的计算系统100描述的形式,尽管它们可以采用任何形式。
分布式计算环境200包括被配置成访问由一个或多个请求模块220生成的消息的服务模块,请求模块包括请求模块221以及由水平省略号222表示的潜在的任何请求模块。在消息交换的特定会话中,服务模块可以接收多条输入的消息。图2中示出了以第一服务模块实例211A和第二服务模块实例211B形式的同一服务模块211的两个实例。服务模块可以是进程、应用程序或者进程或应用程序内的对象。
最初,由输入缓冲器212A接收前往服务模块211且不与已建立的会话相关联的所有输入消息。例如,前往服务模块211的输入消息231可以由输入缓冲器212A接收,在其上,如箭头232所示,它被提供给第一服务模块实例211A。
图3示出了用于在输入缓冲器被限制输入的环境中保存同一会话的消息之间的相关性的方法300的流程图。因为可以在图2的分布式计算环境200中执行图3的方法300,因此将高度混合对图2和图3的描述。
在方法300中,首先,第一服务模块实例访问来自第一输入缓冲器的会话发起消息(即,建立会话的请求)。具体地,参考图2,一旦第一输入缓冲器212A接收会话发起消息231,如箭头232所示,向第一服务模块实例211A提供会话发起消息。然后由第一服务模块实例211A处理输入的会话发起消息231。除了这样的会话发起消息之外,也由第一输入缓冲器212A向服务模块提供不是面向会话的其它消息。因为这些非会话消息不与作为会话的一部分的任何其它消息相关,所以可以由服务模块的任何实例来处理非会话消息。
作为该处理的结果,确定要发起会话(动作302),且第二输入缓冲器(后文也称为“面向会话的输入缓冲器”或“会话输入缓冲器”)与服务模块的第一实例相关联(动作303)。第二输入缓冲器212B将用于接收任何后继的会话消息。第一服务模块实例211A例如,可以向提供会话发起消息的相关联的请求模块220通知该第二输入缓冲器212B的地址(如箭头233所示),使得请求模块可以向第二输入缓冲器212B发送后继的会话消息(如箭头234和省略号234A所示)。
一旦确定要回收给定服务模块实例,第一输入缓冲器212A不能被该服务模块实例访问。在一个实施例中,输入缓冲器212A是诸如由IIS开启的HTTP.sys消息队列等队列,在该情况下,一旦确定要回收服务模块实例,则不再向给定的服务模块实例提供更多的消息。相反,第一服务模块实例211A可以继续从第二输入缓冲器212B接收消息,而无论是否为服务模块实例211A作出回收决定。
然后由第二输入缓冲器212B接收一条或多条会话消息(动作304)(见箭头234和省略号234A)。在图3中将动作304示为包含星号来强调,无论在会话中是否作出了回收决定都将执行该动作(即,由第二输入缓冲器来接收会话消息)。这样的输入会话消息将由第一服务模块实例211A访问和处理(动作305)(见箭头235和省略号235A),以将会话状态214A修改为适用于维护会话连贯性。也使用星号来显示动作305,以强调第一服务模块实例211A继续处理来自面向会话的输入缓冲器212B的会话消息,而无论在会话中是否作出任何回收决定。
因为贯穿会话的生存周期,会话状态是由服务模块的单个实例来管理的,因此本发明的原理促进了会话的无缝完成,即使在会话过程中作出回收服务该会话的服务模块实例的决定,以及即使在易失性存储器中维护会话状态。
本发明可以被具体化为其它特定形式,而不背离其精神或本质特征。所述的实施例应被认为在所有的方面都仅是说明性的而非限制性的。从而,本发明的范围是由所附权利要求书指示,而非由前述描述指示。落入权利要求书的等效技术方案的意义和范围内所有改变都包含在其范围内。
权利要求
1.在包含被配置成使用第一输入缓冲器来访问针对服务模块的消息的计算系统的分布式计算环境中,其中,如果确定要回收所述服务模块的实例,则所述服务模块实例不访问所述第一输入缓冲器,一种用于保存由所述服务模块实例处理的同一会话的消息之间的相关性的方法,所述方法包括所述服务模块实例访问来自所述第一输入缓冲器的会话发起消息的动作;在所述服务模块实例访问所述会话发起消息的动作之后,确定发起会话的动作;响应于所述确定发起会话的动作,将第二输入缓冲器与所述服务模块实例相关联的动作;在所述第二输入缓冲器中接收所述会话的一条或多条后继消息的动作;以及所述服务模块实例处理来自所述第二输入缓冲器的会话的一条或多条后继消息的动作。
2.如权利要求1所述的方法,其特征在于,所述服务模块是进程。
3.如权利要求1所述的方法,其特征在于,所述服务模块是应用程序域。
4.如权利要求1所述的方法,其特征在于,所述第一和第二输入缓冲器各自是队列。
5.如权利要求4所述的方法,其特征在于,所述队列是HTTP.sys队列。
6.如权利要求1所述的方法,其特征在于,还包括响应于所述确定发起会话的动作向所述会话发起消息的发送者告知所述第二输入缓冲器的地址的动作。
7.如权利要求1所述的方法,其特征在于,所述第一输入缓冲器也包含不是会话发起消息的非会话消息。
8.如权利要求7所述的方法,其特征在于,所述非会话消息可以由所述第一输入队列提供给所述服务模块的多个实例中的任一个。
9.一种在包含被配置成使用第一输入缓冲器来访问针对服务模块的消息的计算系统的分布式计算环境中使用的计算机程序产品,其中,如果确定要回收服务模块的实例,则所述服务模块实例不访问所述第一输入缓冲器,所述计算机程序产品包含其上含有计算机可读指令的一个或多个计算机可读介质,当由所述计算系统的一个或多个处理器执行所述计算机可读指令时,使所述计算系统执行一种用于保存由所述服务模块实例处理的同一会话的消息之间的相关性的的方法,所述方法包括以下所述服务模块实例访问来自所述第一输入缓冲器的会话发起消息的动作;在所述服务模块实例访问会话发起消息的动作之后,确定发起会话的动作;响应于所述确定发起会话的动作,将第二输入缓冲器与所述服务模块实例相关联的动作;在所述第二输入缓冲器中接收所述会话的一条或多条后继消息的动作;以及所述服务模块实例处理来自所述第二输入缓冲器的会话的一条或多条后继消息的动作。
10.如权利要求9所述的计算机程序产品,其特征在于,所述服务模块是进程。
11.如权利要求9所述的计算机程序产品,其特征在于,所述服务模块是应用程序域。
12.如权利要求9所述的计算机程序产品,其特征在于,所述第一和第二输入缓冲器各自是队列。
13.如权利要求12所述的计算机程序产品,其特征在于,所述队列是HTTP.sys队列。
14.如权利要求9所述的计算机程序产品,其特征在于,还包括响应于所述确定发起对话的动作向所述会话发起消息的发送者告知所述第二输入缓冲器的地址的动作。
15.如权利要求9所述的计算机程序产品,其特征在于,所述第一输入缓冲器也包含不是会话发起消息的非会话消息。
16.如权利要求15所述的计算机程序产品,其特征在于,所述非会话消息可以由所述第一输入队列提供给所述服务模块的多个实例中的任一个。
17.一个或多个在其上存储计算机可执行指令的计算机可读介质,所述计算机可执行指令在由一个或多个处理器执行时,引起例示以下服务模块,它被配置成处理与会话相关联的多条消息;第一输入缓冲器,它被配置成在会话的发起之前接收会话发起消息;以及第二输入缓冲器,它被配置成在所述会话发起之后接收与所述会话相关联的一条或多条后继消息,其中,所述服务模块还被配置成接收来自所述第一输入缓冲器的会话发起消息,以及来自所述第二输入缓冲器的一条或多条后继会话消息。
18.如权利要求17所述的一个或多个计算机可读介质,其特征在于,所述服务模块是进程或应用程序域之一。
19.如权利要求17所述的一个或多个计算机可读介质,其特征在于,所述第一和第二输入缓冲器各自是队列。
20.如权利要求17所述的一个或多个计算机可读介质,其特征在于,所述一个或多个计算机可读介质是物理存储器介质。
全文摘要
在其中服务模块实例从通用输入缓冲器接收消息的分布式计算环境中,保存会话状态相关性。一旦确定要回收服务模块的实例,则该通用输入缓冲器不被该服务模块实例访问。在服务模块实例通过通用输入缓冲器接收会话发起消息之后,将面向会话的输入缓冲器与该服务模块实例相关联。然后由该服务模块通过该面向会话的输入缓冲器接收任何后继会话消息。即使该服务模块的实例在会话过程中被确定要回收,该服务模块实例仍旧可用于处理来自会话输入缓冲器的所有剩余会话消息,从而保存了会话的连贯性。
文档编号H04L29/00GK1816034SQ200510138189
公开日2006年8月9日 申请日期2005年12月30日 优先权日2005年2月1日
发明者A·卡斯欧拉斯, L·E·欧森, M·欧塔维安尼, M·S·威纳尔, M·T·戴斯, A·M·李 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1