一种提供、接收状态通知的计算机系统转让专利

申请号 : CN201710656926.X

文献号 : CN107204901B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : P·普拉哈达D·M·克鲁斯M·乔治J·T·平克顿T·E·乔利

申请人 : 微软技术许可有限责任公司

摘要 :

本发明涉及提供证明服务。描述了用于提供证明服务的实施例,所述证明服务向客户端发送具有资源状态的通知。实施例提供包含各个消息的协议,所述消息用于注册和接收关于资源状态的通知。该协议可以包含用于向群集中的第一节点请求节点信息的消息。该节点信息标识出该群集中的提供证明服务的节点,所述证明服务监控资源。该协议包含用于向证明服务注册关于网络或群集资源的状态或状态改变的通知的消息。该协议还可以包含用于发送具有该资源的状态信息的通知的消息。

权利要求 :

1.一种用于向客户机提供状态通知的计算机系统,所述计算机系统包括:至少一个处理器;

操作地连接到所述至少一个处理器并包括指令的存储器,所述指令在由所述至少一个处理器执行时使得所述至少一个处理器执行一种方法,所述方法包括:在所述计算机系统处接收对与多个节点有关的节点信息的请求;

响应于所述请求,发送具有所述节点信息的响应,其中所述节点信息标识所述多个节点中的充当用于监视资源的证明节点的至少两个节点;

在所述多个节点中的第一节点处接收注册请求以针对与资源有关的通知进行注册,其中所述第一节点充当第一证明节点并且监视所述资源;以及从所述第一节点发送具有所述资源的状态的通知。

2.如权利要求1所述的计算机系统,其特征在于,所述资源是网络资源并且所述第一节点接收来自所述网络资源的事件。

3.如权利要求2所述的计算机系统,其特征在于,所述资源是群集资源并且所述第一节点从运行在所述群集上的群集服务接收事件。

4.如权利要求1所述的计算机系统,其特征在于,所述通知指示所述资源的故障。

5.如权利要求1所述的计算机系统,其特征在于,进一步包括:接收连接到所述第一节点的请求;以及

从所述第一节点发送响应,所述响应建立用于访问所述第一节点上的信息的会话;

其中连接到所述第一节点的请求和建立用于访问所述第一节点上的信息的会话的响应是根据文件访问协议被格式化的。

6.如权利要求5所述的计算机系统,其特征在于,针对节点信息的所述请求、具有所述节点信息的所述响应、所述注册请求、以及所述通知是根据与所述文件访问协议不同的证明协议被格式化的。

7.如权利要求6所述的计算机系统,其特征在于,所述证明协议使用传输控制协议(TCP)传输上的远程过程调用(RPC)。

8.如权利要求1所述的计算机系统,其特征在于,所述节点信息标识充当证明节点的多个节点。

9.如权利要求1所述的计算机系统,其特征在于,所述方法还包括在所述第一节点处接收针对所述通知进行注销的注销请求。

10.一种用于接收状态通知的计算机系统,所述计算机系统包括:至少一个处理器;

操作地连接到所述至少一个处理器并包括指令的存储器,所述指令在由所述至少一个处理器执行时使得所述至少一个处理器执行一种方法,所述方法包括:发送连接到第一节点以访问所述第一节点上的信息的请求,其中所述第一节点是群集中的多个节点之一;

接收来自所述第一节点的响应,所述响应建立用于访问所述第一节点上的信息的会话;

发送针对与所述多个节点有关的节点信息的第二请求,所述节点信息标识所述多个节点中的充当用于监视资源的证明节点的节点;

响应于所述第二请求,接收具有所述节点信息的第二响应;

向所述第一节点发送注册关于至少一个资源的通知的注册请求,其中所述第一节点充当第一证明节点并且监视所述至少一个资源;以及从所述第一节点接收具有所述至少一个资源的状态的通知。

11.如权利要求10所述的计算机系统,其特征在于,所述资源是所述第一节点的资源。

12.如权利要求11所述的计算机系统,其特征在于,所述通知指示所述第一节点的故障。

13.如权利要求12所述的计算机系统,其特征在于,所述方法进一步包括:在接收到来自所述第一节点的响应之际,向所述第一节点发送用于访问存储在所述第一节点上的信息的访问请求。

14.如权利要求10所述的计算机系统,其特征在于,所述节点信息标识所述多个节点中的充当用于监视资源的证明节点的至少两个节点。

15.如权利要求14所述的计算机系统,其特征在于,所述节点信息标识用于访问所述多个节点的访问次序。

16.如权利要求15所述的计算机系统,其特征在于,所述资源是网络资源或群集资源。

17.如权利要求15所述的计算机系统,其特征在于,所述第二请求包括接收与所述第一节点或所述第一节点上的资源中的至少一者的状态有关的通知的请求。

18.一种用于提供客户端通信服务的计算机系统,所述计算机系统包括服务器并且包括:至少一个处理器;

操作地连接到所述至少一个处理器并包括指令的存储器,所述指令在由所述至少一个处理器执行时使得所述至少一个处理器执行一种方法,所述方法包括:建立用于提供对存储在所述服务器上的文件信息的访问的会话;

存储标识多个服务器中的提供证明服务的至少两个其他服务器且进一步标识所述至少两个服务器的次序的证明信息;

提供所述多个服务器中的提供所述证明信息的服务器的列表;

监视关于至少一个资源的事件;

接收注册关于所述至少一个资源的通知的注册请求;以及发送具有所述至少一个资源的状态的通知。

19.如权利要求18所述的计算机系统,其特征在于,所述至少一个资源是群集资源并且所述计算机系统从运行在所述群集上的群集服务接收事件。

20.如权利要求19所述的计算机系统,其特征在于,所述通知指示所述至少一个资源的故障。

说明书 :

一种提供、接收状态通知的计算机系统

[0001] 本发明专利申请是申请日为2012年3月28日、申请号为201210086941.2、名称为“提供证明服务”的发明专利申请的分案申请。

技术领域

[0002] 本发明涉及提供证明服务。

背景技术

[0003] 服务器群集常用于提供故障转移和信息到客户端的高可用性。群集通常具有执行用于管理群集故障转移和负载平衡的功能的群集服务。所述群集服务通常提供快速的故障检测以提供最大的服务可用性。然而,从客户端的角度而言,大多数故障检测是通过网络超时来执行的。如果客户端使用传输控制协议 (TCP)向群集发起诸如文件访问请求或数据库访问请求之类的请求,则故障在达到超时以前一直未被检测到。客户端对来自服务器的确认等待一预定义的时间段,或者如果客户端已经发出操作并且接收到确认,则该客户端对来自该服务器的响应等待一预定义的时间段。因此,为了检测服务器故障所需的时间可以在相对快速到30秒或更长时间的范围内变化。客户端为了更快速地检测故障,其必须为活动的(即频繁地发送请求)以确定该服务器已经发生故障。一种用于保证快速检测的方式是客户端不断地发送保活(keep-alive)分组以帮助防止空闲客户端在服务器发生故障的情况下不接收网络断开这一情况。然而,保活分组消耗网络带宽。
[0004] 各实施例正是对于这些和其它考虑事项而做出的。而且,尽管讨论了相对具体的问题,但是应当理解,各实施例不应被限于解决本背景技术中所标识的具体问题。

发明内容

[0005] 提供本概述来以简化形式介绍将在以下详细描述部分中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0006] 描述了用于提供证明服务的实施例,所述证明服务向经注册的客户端发送对资源状态的通知。实施例提供了包含各个消息的协议,所述消息用于注册和接收关于例如群集或网络中的资源之类的资源的状态的通知。在一个实施例中,该协议包含供客户端向群集中的节点请求证明信息的消息。该证明信息可以标识出该群集中的提供证明服务的节点。该协议附加地包含用于向证明服务注册关于网络或群集资源的状态或状态改变的通知的消息。在一个实施例中,该消息用于注册节点故障的通知。该协议还可以包含供证明服务发送具有该资源的状态信息的通知的消息。实施例还提供了用于从证明服务注销的消息。
[0007] 各实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并对用于执行计算机过程的指令的计算机程序编码的计算机存储介质。计算机程序产品还可以是计算系统可读并对用于执行计算机过程的指令的计算机程序编码的载体上的传播信号。

附图说明

[0008] 参考以下附图描述非限制性和非穷尽的实施例。
[0009] 图1示出了可用于实现实施例的系统。
[0010] 图2示出了客户端和节点群集按照一些实施例使用证明协议来交换消息的框图。
[0011] 图3示出了客户端和文件服务器群集按照一些实施例使用文件访问协议和证明协议来通信的框图。
[0012] 图4示出了示出可在图3所示环境内进行交换的消息序列的顺序图。
[0013] 图5示出了按照一些实施例的接收和提供对资源状态信息的通知的操作流程。
[0014] 图6示出了按照一些实施例的接收和提供对群集资源的状态通知的操作流程。
[0015] 图7示出了适于实现各实施例的计算环境的框图。

具体实施方式

[0016] 以下将参考形成本发明一部分并示出各具体示例性实施例的附图更详尽地描述各个实施例。然而各实施例被实现为许多不同的形式并且不应将其解释为限制在此处描述的实施例;相反地,提供这些实施例以使得本公开变得透彻和完整,并且将这些实施例的范围完全传达给本领域普通技术人员。因此,这些实施例可采用硬件实现形式、全软件实现形式或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是局限性的。
[0017] 图1示出了可用于实现一些实施例的系统100。系统100包括客户端102 和106以及服务器群集106。客户端102和104通过网络108与服务器群集106 通信。服务器群集106存储信息,该信息被客户端102和104上的应用访问。客户端102和104与群集106建立会话以访问群集106上的信息。尽管在图1 中,仅有客户端102和104被示为与群集106通信,但是在其他实施例中,可以存在两个以上客户端从服务器群集106访问信息。
[0018] 如图1所示,服务器群集106包括服务器106A、106B和106C,所述服务器提供存储在群集106上的信息的高可用性和冗余性二者。在实施例中,群集 106可以具有文件系统、数据库、或者由客户端102和104访问的其他信息。尽管图1中示出了3个服务器,但是在其他实施例中,群集106可以包括3个以上服务器或3个以下服务器。
[0019] 根据一个实施例,附加于存储由客户端102和104访问的信息,群集106 还提供证明服务。证明服务允许客户端102和104接收关于由群集106所监控的资源的状态的通知。所述资源可以是群集资源或网络资源。在一个实施例,服务器106A、106B和106C中的每个都能够提供证明服务。也就是说,只要客户端102和104未使用服务器来访问群集资源,则所述客户端就可以向服务器106A、106B或106C中的任何服务器注册证明服务。在其他实施例中,可能仅有群集106的服务器中的一部分提供证明服务。例如,在该实施例中,仅仅106B和106C将运行证明服务。在又一实施例中,群集106可以包括专用于提供证明服务的服务器。对于这些实施例而言,尽管未示出,但是群集106可以包括如下的服务器:所述服务器被专门配置为运行证明服务并且将不提供对客户端102和104的访问。
[0020] 来自群集106的提供证明服务的服务器从群集106中的资源和/或从网络资源接收事件。服务器处理和存储来自这些事件的信息以跟踪这些资源的状态。响应于这些事件,服务器将向已经向证明服务注册以接收关于资源的状态信息的客户端发出通知。作为一个示例,这些事件可以由运行在群集106上以提供负载平衡和故障检测的群集服务来生成。
[0021] 如上所述,客户端102和104与群集106通信以向证明服务请求通知。在实施例中,提供由证明服务和客户端102和104使用的证明协议。该协议包含用于允许客户端102和104向群集106中的服务器请求关于证明服务的信息的消息。该信息可以标识出群集106中的哪些服务器提供证明服务。该协议还包含用于注册来自证明服务的通知的消息。由证明服务发送给客户端102和104 的关于资源状态的消息还根据证明协议被格式化。
[0022] 为了示出一个实施例,客户端102建立与群集106的服务器的会话。例如,客户端102可以建立与服务器106A的会话以访问存储在服务器106A上的数据库。由于客户端102从服务器106访问信息,因此其可能想要具有对服务器106A 上的任何故障的及早指示。故障的及早检测将允许及早恢复,这减少了客户端 102上的应用可能必须等待的时间量。及早检测和恢复还减小了被保留以供客户端102重连到的资源对其他客户端不可用的时间窗口。
[0023] 为了向证明服务注册,客户端102首先向服务器106A发送根据证明协议被格式化的消息以获得关于群集106上的哪个或哪些服务器运行证明服务的信息。服务器106A用如下的信息进行响应:该信息包含运行证明服务的服务器 106B和106C的标识以及为了连接到这些服务器中的任意一个所需的任何信息。在该示例中,基于从服务器106A接收的信息,客户端102向服务器106B 发送注册请求以接收服务器106A上的资源的状态或状态改变的通知。当服务器106A上的资源发生故障时、以及之后当该服务器可用于重连时,该客户端将被通知。该状态可以如服务器106A是在线还是离线那样简单。在其他实施例中,通知可以具有更精细的粒度,比如是服务器106A的盘或适配器发生了故障、还是被离线。
[0024] 在一些实施例中,客户端102可以具有预先确定的方法以用于选择特定的用于联系的服务器以向证明服务注册。例如,客户端可以随机地、以循环方式或者基于其从群集接收的信息来选择服务器。
[0025] 在客户端102已经向服务器106B注册关于服务器106A上的资源的通知,所述资源的状态的由服务器106B检测到的改变将导致:具有指示所述资源的状态改变的信息的通知被发送给客户端102。例如,该通知可以指示:服务器 106A为离线。响应于该通知,客户端102可以停止向服务器106A发送针对信息的请求并且尝试连接到群集106中的另一服务器。
可替代地,客户端102可以等待表示服务器106A返回在线的随后通知,使得其可以重连并且再次开始从服务器106A访问信息。
[0026] 下面的描述仅仅是图1所示的实施例可以如何操作的一个示例。下面将更详细地描述,实施例可以包括不同的步骤或操作。这些实施例是使用任何合适的软件或硬件组件或模块来实现的。
[0027] 现在转到图2,图2中示出了示出客户端202和204以及节点群集206的软件环境200的框图。按照一些实施例,所述客户端和节点群集使用证明协议来交换信息。示出了图2以图解说明用于使用证明协议的环境的一般性示例。图2的描述旨在是一般性的并且适用于任何数目的情况,比如客户端202和204 访问存储在节点群集206上的文件系统,其中节点群集206是具有分布式文件系统的服务器群集。作为另一示例,环境200可以用在客户端202和204访问存储在节点群集206上的数据库的情况下。
[0028] 如图2所示,客户端202和204访问由节点群集206提供的信息。节点群集206包括3个节点、即节点1、节点2和节点3。如图2所示,节点1、2和 3中的每个都包括与客户端202和204通信的各个组件。例如,每个节点都包括客户端访问模块,该客户端访问模块与客户端
202和204通信以及建立用于允许所述客户端访问存储在该节点群集上的信息的会话。
[0029] 在图2所示的实施例中,节点1、2和3还包括证明管理组件,该证明管理组件作为配备在节点群集206上的证明服务的一部分与客户端202和204通信。该证明管理模块提供关于节点群集206中的哪些节点运行证明服务的信息,使得客户端202和204可以向该证明服务注册。另外,证明管理组件还为客户端注册针对资源状态的通知,并且还与图2所示的监控组件通信,该监控组件从节点和网络资源接收和处理事件。该监控组件处理事件并且将状态和状态改变信息提供给证明管理组件,该证明管理组件进而通知注册了资源的状态或状态改变的通知的任何客户端。在一些实施例中,该监控组件可以使用由群集服务提供的API来监控该群集中的资源的状态。
[0030] 在图2所示的实施例中,客户端202已经建立与节点1的会话,并且使用信道208向节点1的客户端访问组件发送访问请求。客户端202还发起了与节点1的单独的信道(未示出)以接收关于证明服务的信息,比如哪些服务器提供该证明服务。与节点1建立的该单独信道允许节点1传递关于证明服务的信息而不干扰由客户端202发送的访问请求。
[0031] 在图2中,客户端202已经向节点2上的证明管理组件所提供的证明服务进行了注册。如图2所示,与证明管理组件的通信通过单独的信道210进行。因此,包括状态通知的任何类型的证明信息都不干扰通过信道208的访问请求。以虚线示出的信道216示出了客户端202为了在节点1的资源发生故障的情况下发送访问请求所建立的单独的信道。在一些实施例中,证明管理组件提供如下信息:该信息指示新资源以供客户端202在故障情况下发送访问请求、以及用于连接到该新资源的推荐网络路径和推荐网络路径的数目。
[0032] 类似地,客户端204已经建立与节点2的会话,并且通过信道212向节点 2的客户端访问组件发送访问请求。客户端204已经注册了访问服务,并且使用信道214与节点3的证明管理组件通信。
[0033] 在一个实施例中,该证明管理组件提供附加的功能。在一些实施例中,所述组件提供负载平衡功能。也就是说,附加于发送关于资源状态的通知,证明管理组件还可以基于用于节点206上的负载平衡的算法来发送客户端202和 204连接到不同资源的请求。例如,如图2所示,客户端202与节点1的客户端访问组件通信。附加地,客户端202与节点2的证明管理组件通信,所述证明管理组件向客户端202提供对资源的任何状态改变(比如节点1中的资源发生故障)的通知。在该实施例中,节点2的证明管理组件可以确定节点1由于节点1所服务的密集的访问请求量而表现差(例如高等待时间)。作为另一示例,可以进行确定以从节点2卸载客户端,以允许节点2被关闭用于节能或诸如维护之类的其他原因。根据算法,节点2可以向客户端202发送指示其应当开始向可能未被充分利用的节点3发送任何未来访问请求的通知。然后,客户端202如作为信道216的虚线所示的那样建立与节点3的会话以发送未来请求。在其他实施例中,证明管理组件提供如下信息:该信息不仅指示供客户端202 发送访问请求的新资源、而且指示推荐网络路径或推荐网络路径的数目。
[0034] 图3示出了与图2所述环境200类似的环境300。然而,环境300示出了向处于服务器群集306上的文件服务器请求读/写访问的客户端302和304。服务器群集306包括服务器1、服务器2和服务器3,这些服务器中的每个都包括文件服务器、证明管理组件、以及群集监控组件。在图3所示的实施例中,客户端302和304包括应用、证明管理组件和重定向器。图4示出了示出根据实施例的可在环境300内进行交换的消息的一个示例的顺序图。
[0035] 下面对图3和4的描述是在将服务器消息块(SMB)协议用作文件访问协议的情况下作出的。然而,实施例不限于此。包括不同版本的SMB或网络文件系统(NFS)的任何文件访问协议都可以在实施例中用作文件访问协议。SMB 在说明书中仅仅是为了便于图示。
[0036] 参考图4,该顺序图示出了根据一个实施例的在客户端302(图3)、网络 DNS 400和服务器群集306(图3)之间交换的消息。客户端302首先向网络 DNS 400发送请求以解析服务器群集306的IP地址,该服务器群集存储有可以使用一定版本的SMB来访问的文件系统。响应于请求402,网络DNS 400用包括服务器群集306的IP地址的消息404作出响应。
[0037] 在接收到响应消息404以后,客户端302向服务器群集306发送访问请求消息406。该访问请求可以由客户端302上的重定向器来发送。如图3和4所示,服务器1处理来自客户端302的请求。如图3所示,服务器1包括文件服务器组件,该文件服务器组件与客户端302上的重定向器通信以建立文档访问会话。在实施例中,请求406可以是对SMB会话进行协商的第一请求。例如,该请求可以是SMB2协商分组。如图4所示,服务器1发送访问响应408,该访问响应408建立与客户端302的会话。该响应例如可以是SMB2会话设置响应或SMB 2树连接响应。
[0038] 应当注意,尽管图4和相关联的描述提供了单个访问请求406和单个访问响应408,但是在实施例中,这可以仅仅是为了建立会话所发送的多个消息中的两个消息。能够理解,为了使用SMB2协议建立会话,可以在客户端302上的重定向器与服务器1上的文件服务器之间交换多个消息。这些消息可以包括下列各项中的一个或多个:SMB2协商消息、SMB2会话设置消息和/或SMB2 树连接消息。在会话已经建立以后,客户端302开始通过所建立的信道308(图 3)向群集306的服务器1发送访问请求(未示出),例如文件和/或目录读/写。
[0039] 客户端302上的证明管理组件检测到服务器1是群集306的一部分。在实施例中,该检测可以作为对响应消息408的处理的一部分或者通过其他界外 (out of bounds)装置来进行。作为确定服务器1是群集306的一部分的结果,客户端302上的证明管理组件在实施例中被配置为注册群集306所提供的证明服务。结果,客户端302上的证明管理组件使用新信道310(图3)来发送从服务器1请求证明信息的请求410。
[0040] 在实施例中,该请求根据针对证明服务专门配置的证明协议被格式化。该证明协议可以包含与证明服务相关的多个消息。例如,在实施例中,证明协议至少包含:请求证明信息的证明请求;证明注册消息,该消息用于注册关于群集中的资源的通知;以及证明资源改变消息,该消息用于向客户端通知资源的状态改变(例如资源的在线或离线状态)。这些消息仅仅是一些示例,并且在实施例中,证明服务可以包含其他消息。在一个实施例中,证明协议将远程过程调用(RPC)与作为传输的传输控制协议(TCP)一起使用。
[0041] 再次参考图4,服务器1的证明管理组件用包含证明信息的响应412来响应请求410。响应412根据证明协议被格式化,并且将包含标识出群集306中的提供证明服务的其他服务器的信息。在实施例中,响应412还包含客户端302 为了连接到群集306的其他服务器之一上的证明服务所需的其他信息。在该示例中,响应412中的证明信息包含至少将服务器
2标识为提供证明服务的信息。
[0042] 在一些实施例中,证明信息以特定格式被结构化。例如,证明信息可以被排名。也就是说,提供证明服务的服务器可以以特定顺序被列出。然后,客户端302可以以列表中的第一服务器开始,并且如果该服务器不可用于提供证明服务,则该客户端于是可以尝试该列表中的下一服务器。该排名可以基于考虑到一定参数的多种不同算法,一些非限制性示例包括:已经注册了证明服务的客户端的数目;提供证明服务的服务器;以及特定服务器和网络连接的硬件和软件特性,所述特性可以指示处理较大数量的客户端的能力。
[0043] 响应于从服务器1接收的证明信息,客户端302将使用信道310(图3) 来向服务器2发送注册请求414。注册请求414也根据证明协议被格式化,并且包括标识出客户端302希望接收与之有关通知的资源的信息。在一个实施例中,客户端302可能希望知道服务器1为离线的,使得其具有对服务器1的故障的及早指示。故障的检测将允许及早的恢复,这减少了客户端302上的应用等待操作(读/写)被处理所花的时间量。在该示例中,客户端302向服务器2 的证明管理组件注册关于服务器1的在线/离线状态的通知。服务器2发送确认注册请求的状态响应416。在实施例中,响应416将包括客户端302已注册接收与之有关通知的资源的当前状态。
[0044] 在一些实施例中,在操作416以后,证明服务器(服务器2)可能经历故障,服务器故障417是以虚线示出的。在这种情况下,客户端302将必须重新选择可替代的服务器,包括在一些实施例中发送类似于消息410的另一消息并且(从服务器1或不同服务器)接收类似于消息412的另一消息。客户端302 还将发送类似于请求414的证明注册请求以注册来自可替代服务器的证明服务器。
[0045] 在其他实施例中,客户端可以建立多个证明服务器连接。也就是说,客户端可以向群集306中的一个以上的服务器注册证明服务。所述多个连接将允许客户端即使在所述服务器之一发生故障的情况下仍然能够继续访问证明服务。在实施例中,客户端可以指定所述连接之一作为主要连接,并且仅在主要连接发生故障的情况下次要地使用其他连接。
[0046] 如果在某个时刻存在服务器1的服务器故障418,则服务器2将检测该故障。如上所述,服务器2可以通过接收在群集306上运行的群集服务器所生成的事件来检测该故障。一旦服务器2检测到服务器故障418,则服务器2将向客户端302发送对该故障的通知420。响应于该故障,客户端302在该实施例中被配置为暂停任何进一步的文件访问请求422。能够理解,如果客户端302 发送了任何附加的访问请求,则这些请求将由于服务器1的故障而不被处理。在实施例中,服务器2的证明服务还被配置为将消息424发送给客户端,该消息指示:在服务器3处存储在资源可用于处理来自客户端302的访问请求。在接收到消息424以后,客户端302将继续向服务器3发送文件访问请求426。客户端302上的重定向器通过信道312(图
3)将文件访问请求426发送给服务器3的文件服务器组件。
[0047] 在其他实施例中,客户端302被配置为暂停访问请求,直到服务器1返回在线。服务器2的证明服务将被配置为在服务器1变为可用时向客户端302发送消息424,该消息424指示:服务器1可用于处理来自客户端302的访问请求。
[0048] 尽管未示出,但是在一些实施例中,当客户端302开始向服务器3发送文件访问请求时,其还将改变从中接收证明服务的服务器。例如,在向服务器3 发送文件访问请求以后,客户端302可以开始向服务器3发送针对证明信息的请求这一过程。服务器3可以用与服务器1所发送的响应412类似的信息来响应,该响应包含关于哪些服务器正提供证明服务的信息。该信息可以是不同的,例如可以标识出不同的服务器。之前被标识为提供证明服务的服务器可能后来已经发生故障并且不再可用,或者其他服务器已经变为在线。而且在一些实施例中,证明管理组件被配置为提供具有可用于提供证明服务的服务器的排名的证明信息。因此,服务器3所提供的证明信息可以不同于之前由服务器2提供的证明信息。响应于服务器3发送的证明信息,客户端302可以决定是否向不同服务器请求注册证明服务。
[0049] 图5和6示出根据各实施例的操作流程500、550、600和650。操作流程 500、550、600和650可在任何合适的计算环境中执行。例如,操作流程可以由诸如图1-3所示的系统和环境来执行。因此,操作流程500、550和600的描述可参考图1-3的组件至少之一。然而,对图1-3的组件的任何这类参考都是仅仅出于描述性目的,并且应当理解,图1-3的实施方式是操作流程500、550、 600和650的非限制性环境。
[0050] 此外,尽管以特定次序顺序地示出和描述了操作流程500、550、600和650,但在其它实施例中,能以不同的顺序、多次和/或并行执行各操作。此外,在某些实施例中,一个或多个操作可被省略或组合。
[0051] 操作流程500和550在图5中被一起示出以表示:操作流程500中的步骤可以具有操作流程550中的相应步骤。操作流程500示出了用于接收针对资源的状态通知的步骤。操作流程550示出了用于提供针对资源的状态通知的步骤。在实施例中,诸如客户端102和104(图1)或客户端202、204(图2)之类的上述客户端可以实现操作流程500。实现操作流程500的客户端可以是任何类型的客户端,包括膝上型计算机、台式计算机、智能电话设备、或平板计算机。在实施例中,诸如图2中所示的节点1、节点2和节点3之类的节点实现操作流程550。这些节点可以是运行群集服务的节点群集的一部分。
[0052] 流程500始于操作502,在操作502,发送连接到第一节点的请求。第一节点是存储有被访问的信息的节点群集的一部分。在一些实施例中,在操作502 发送的请求是请求建立与第一节点的会话以便访问存储在该节点群集上的信息。在操作502以后,流程500转到操作504,在操作504,接收响应,该响应指示已经建立与第一节点的会话。尽管在流程500中未示出,但是在实施例中,在操作504以后,向第一节点发送访问请求以访问存储在第一节点上的信息。
[0053] 如图5中的实施例中所示,操作流程从操作504转到操作506,在操作506,将针对证明信息的第二请求发送给第一节点。该证明信息标识出:该群集中的什么节点提供可注册的证明服务以提供针对资源的通知。该资源例如可以是网络资源或群集资源。
[0054] 在步骤508,接收证明信息。然后,可以将该证明信息用于确定该群集中的什么节点提供证明服务。在操作510将证明信息用于发送注册关于资源的通知的注册请求。在一个实施例中,该资源可以是从中访问信息的第一节点。该请求可以是接收关于第一节点或第一节点上的资源的状态的通知。例如,该通知可以指示:第一节点是在线还是离线。
[0055] 流程500从操作510转到操作512,在操作512,接收关于该资源的通知。然后,流程500在514处结束。在一些实施例中,可能存在响应于在步骤512 接收到通知所执行的附加步骤,比如暂停访问请求、重连到群集中的另一节点、以及继续对群集中的其他节点的访问请求。
[0056] 在实施例中,在操作512接收的通知不是状态通知,而是负载平衡通知。所述负载平衡通知可以指示:未来访问请求应当被发送给不同的服务器。在一些实施例中,该通知可以具体地标识出应当使用的不同网络、网络资源或群集资源。在这些实施例中,将响应于在操作512接收到通知而执行多个操作。
[0057] 流程550具有与参照流程500所描述的步骤相对应的步骤。如上所述,在实施例中,图2中所示的节点1、节点2和节点3可以实现流程550。流程550 始于操作552,在操作502,接收连接到节点群集中的节点的请求。该请求可以是请求建立会话以用于访问存储在该节点群集上的信息。流程从操作552转到操作554,在操作554,发送响应,该响应指示:已经建立会话以允许访问存储在该节点群集中的第一节点上的信息。在一些实施例中,跟随在操作554 之后的将是在流程550中未示出的附加步骤。例如,一旦已经如在操作554所发送的响应中所指示的那样建立了会话,则就可以存在多个访问请求被接收以访问在节点群集中的第一节点中所存储的信息。
[0058] 在操作554以后,在操作556接收针对证明信息的第二请求。该证明信息可以包含标识出:节点群集中的什么节点提供证明服务。流程550转到操作558,在操作558,发送包含证明信息的响应。在实施例中,该证明信息被结构化为使得其不仅包括对节点群集中提供证明服务的节点的指示,而且被排名以指示对一些节点的偏好。
[0059] 在操作560,接收注册资源的状态通知的请求。在实施例中,该请求是针对网络资源的状态请求的。在其他实施例中,该请求是针对群集资源的状态通知的,比如该群集中的节点是在线还是离线。应当理解,在实施例中,在操作 560接收的请求是从不同于发送第一请求(操作552)和第二请求(操作556) 的客户端接收的。尽管在流程550期间接收的请求可以于不同客户端来发送,但是操作552-564在实施例中是由单个节点执行的。
[0060] 在操作560之后,流程转到操作562,在操作562,监控资源。操作562 可以包括:监控包括群集资源和网络资源的多个资源。这些资源即使在不存在接收关于资源的通知的当前请求的情况下仍然被监控。操作562可以包括从网络资源或从群集服务接收和处理事件。
[0061] 在操作562之后,流程转到操作564,在操作564,发送关于该资源的通知。该通知提供关于在操作560接收的注册请求中所指示的资源的状态的信息。在一个实施例中,该通知可以指示:第一节点为离线。在操作564之后,流程在514处结束。在实施例中,流程550可以包括在操作564之后执行的附加步骤。作为一个示例,可以有附加的消息被发送,所述附加的消息指示:之前为离线的资源现在为在线并可用于访问;或者另一资源是可用的。
[0062] 应当理解,在一些实施例中,操作552-558是在一个位置执行的,并且操作560-564是在不同位置执行的。例如,操作552-558可以在节点群集的与执行560-564的节点不同的节点上执行。在其他实施例中,单个节点可以执行所有操作552-564,然而,操作552-558可以针对第一客户端执行,而操作560-564 可以针对第二客户端执行。换言之,节点可以服务于来自第一客户端的访问信息的请求,并且还向第二客户端提供证明服务。
[0063] 操作流程600示出了用于接收来自群集的群集资源的状态通知的步骤,所述群集向客户端提供分布式文件系统。操作流程650示出了用于接收提供文件系统的群集上的群集资源的状态通知的步骤。在实施例中,诸如客户端102和 104(图1)或客户端302、304(图3)之类的上述客户端可以实现操作流程 600。在实施例中,服务器群集306的诸如图3所示的服务器1、服务器2和服务器3之类的服务器实现操作流程650。
[0064] 流程600始于操作602,在操作602,发送连接到服务器群集上的文件系统的请求。该服务器群集包括一个以上服务器并且存储被客户端访问的文件信息。在一些实施例中,在操作602发送的请求是请求建立与该服务器群集中的服务器的会话以便访问存储在该群集上的文件。在实施例中,该会话是利用诸如一定版本的SMB或NFS之类的文件访问协议而建立的。在操作602以后,流程转到操作604,在操作604,接收响应,该响应指示:已经建立与该群集中的服务器的会话。操作602和604可以仅仅是为了对会话进行协商所执行的一系列操作中的两个操作。也就是说,在其他实施例中,可能有多个操作在操作602与604之间执行。
[0065] 在操作604之后,在操作606向服务器发送访问请求以从存储在服务器群集中的文件系统访问信息。该访问请求例如可以包括读/写请求,所述读/写请求根据诸如一定版本的SMB或一定版本的NFS之类的特定文件访问协议被格式化。
[0066] 如图6中的实施例中所示,操作流程从操作606转到操作608,在操作608,向该服务器发送针对证明服务信息的第二请求。该证明服务信息尤其是标识出:该群集中的什么服务器提供可注册的证明服务以提供针对群集资源的通知。在操作608发送的请求可以根据与在操作602-606中使用的文件访问协议不同的证明协议被格式化。
[0067] 在步骤610,接收证明服务信息。然后,可以将该证明服务信息用于确定该群集中的什么服务器提供证明服务。在操作612将证明服务信息用于发送注册关于群集资源的通知的注册请求。在一个实施例中,该资源可以是在操作604 与之建立会话并使用在操作606发送的请求从中访问信息的服务器。该注册请求可以指示:该客户端希望接收关于该服务器的状态的通知。
[0068] 流程600从操作612转到操作614,在操作512,接收关于该资源的通知。在一些实施例中,可能存在响应于在步骤614接收到通知所执行的附加步骤,比如暂停访问请求、重连到群集中的另一服务器、以及继续对群集中的其他服务器的访问请求。在操作614以后,在操作616发送注销的请求。然后,流程 600在618处结束。
[0069] 流程650具有与参照流程600所描述的步骤相对应的步骤。流程650始于操作652,在操作652,发送连接到服务器群集的请求。在实施例中,该请求是请求建立会话以用于访问存储在该服务器群集上的文件信息。该操作发生在服务器群集的文件服务器上。流程从操作652转到操作654,在操作654,发送响应,该响应指示:已经建立会话以允许访问存储在该服务器群集中的文件服务器上的文件。如上所述,操作652和操作654可以仅仅是为了建立会话所执行的的两个操作。在其他实施例中,可以有多个其他操作在操作652与654 之间执行以用于建立会话。
[0070] 跟随在操作656之后的是操作654,在操作654,接收文件访问请求。该文件访问请求可以是请求对存储在该服务器上的文件信息进行读或写。在实施例中,在操作652-656发送和接收的消息根据诸如一定版本的SMB或一定版本的NFS之类的特定文件访问协议被格式化。
[0071] 在操作656以后,在操作658接收针对证明信息的请求。该请求是针对关于服务器群集中的什么服务器提供证明服务的证明信息的。流程650转到操作 660,在操作660,发送响应,该响应包含证明信息,该证明信息具有对服务器群集中提供证明服务的服务器的指示。应当理解,在实施例中,在操作658接收的请求是从不同于发送第一请求(操作652)和第二请求(操作658)的客户端接收的。尽管在流程650期间接收的请求可以于不同客户端来发送,但是操作652-668在实施例中是由单个节点执行的。
[0072] 在操作662,接收注册群集资源的状态通知的请求。在实施例中,该请求是针对群集资源的状态通知的,比如服务于文件访问请求并且已经与之建立会话的服务器是在线还是离线。在操作662之后,流程转到操作664,在操作562,监控资源。操作664可以包括:利用由在群集上运行的群集服务所提供的API。操作664可以包括:接收和处理从群集服务接收的事件。
[0073] 在操作664之后,流程转到操作666,在操作564,发送关于该资源的通知。该通知提供关于在操作662接收的注册请求中所指示的资源的状态的信息。在一个实施例中,该通知可以指示:服务器现在为离线。在操作666之后,流程转到操作668,在操作668,接收注销的请求。在操作668接收的请求指示:诸如在操作662接收的注册请求之类的之前注册应当被注销。流程在操作618 处结束。
[0074] 应当注意,在实施例中,操作652-658是在一个服务器上执行的,并且操作660-664是在不同服务器上执行的。例如,操作652-658可以在服务器群集的第一服务器上执行,并且操作660-664可以在服务器群集的第二服务器上执行。在其他实施例中,单个服务器可以执行所有操作652-664,然而,操作652-658 可以针对第一客户端执行,并且操作660-664可以针对第二客户端执行。换言之,服务器可以服务于来自第一客户端的访问信息的请求,并且还向第二客户端提供证明服务。
[0075] 图7示出可用于实现本文所描述的各实施例的通用计算机系统700。计算机系统700仅是计算环境的一个示例,而非旨在对计算机和网络架构的使用范围或功能提出任何限制。计算机系统700也不应被解释成对于在示例计算机系统700中所示出的任一组件或其组合有任何依赖或要求。在实施例中,系统700 可用作上面参照图1所述的客户端和/或服务器。
[0076] 在其最基本配置中,系统700通常包括至少一个处理单元702和存储器 704。取决于计算设备的确切配置和类型,存储器704可以是易失性(如RAM)、非易失性(如ROM、闪存等)或是两者的某种组合。该最基本配置在图7中由虚线706来示出。系统存储器704存储在系统700上执行的应用程序。例如,存储器704可以存储关于所监控的资源的信息720。存储器704还可以包括针对通知的客户端注册722。
[0077] 本文所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储和不可移动存储708都是计算机存储介质示例(即,存储器存储)。计算机存储介质可包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘 (DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可用于存储信息且可由计算设备700访问的任何其他介质。任何此类计算机存储介质可以是设备700的一部分。计算设备700还可以具有输入设备714,如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备716。上述设备是示例,并且可使用其他设备。
[0078] 本文所使用的术语计算机可读介质还可包括通信介质。通信媒介可由诸如载波或其他传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。
[0079] 本说明书通篇引述了“一个实施例”或“实施例”,这意味着在至少一个实施例中包括特定描述的特征、结构或特性。因此,对这样短语的使用可指的是一个以上的实施例。而且,在一个或多个实施例中,可以用任何合适的方式组合所描述的特征、结构或特性。
[0080] 然而,本领域技术人员会认识到本实施例也可在没有一个或多个具体细节的情况下实施,或者采用其它方法、资源、材料等来实现。在其他情况中,仅为了避免模糊实施例的各方面,未详细示出和描述公知的结构、资源或操作。
[0081] 虽然示出和描述了示例实施例和应用,但是应该理解本实施例不限于上述精确配置和资源。可以对此处公开的方法和系统的排列、操作以及细节作出对本领域技术人员显而易见的各种修改、改变和变化,而不背离所要求保护的本实施例的范围。