一种对服务器进行健康检查的方法及设备与流程

文档序号:12377112阅读:157来源:国知局
一种对服务器进行健康检查的方法及设备与流程

本申请涉及计算机领域,尤其涉及一种用于对服务器进行健康检查的技术。



背景技术:

服务器负载均衡是一种将客户端的访问流量均衡到多个后端服务器的技术,以实现对服务器负载的均衡效果。其中,健康检查是负载均衡服务中非常重要的功能,负载均衡器将流量转发到后端服务器上,需要通过健康检查来探测后端服务器是否在正常提供服务。若对处于异常状态的后端服务器的健康检查连续成功的次数达到“健康检查正常阈值”,则认为该后端服务器恢复到正常状态,并开始对它进行流量转发;若对处于正常状态的后端服务器的健康检查连续失败的次数达到“健康检查异常阈值”,则认为该后端服务器处于异常状态,并停止对它的流量转发。

在现有的系统中,通常有一组负载均衡器进行流量转发,假设一组负载均衡器的数量是N,这组中的每个负载均衡器每隔一个时间间隔对后端服务器进行一次健康检查。那么对于后端服务器而言,一个时间间隔内接收到的健康检查次数就为N。如果随着业务流量的增加,需要对负载均衡器进行扩容,即数量由N增大到M,那么后端服务器在一个时间间隔内接收到的健康检查次数也会增大到M。如果后端服务器的性能不够强大,那么健康检查产生的流量就会给后端服务器带来一定的负担;如果后端服务器的配置不够优化,那么健康检查也会造成过多的垃圾日志。因此需要提供一种减少健康检查次数的方法,避免过量的健康检查给后端服务器带来额外的压力。



技术实现要素:

本申请的一个目的是提供一种对服务器进行健康检查的方法及设备。

根据本申请的一个方面,提供了一种在健康检查缓存设备端对服务器 进行健康检查的方法,其中,所述方法包括:根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息;向所述负载均衡器返回所述服务器的健康检查结果的相关信息。

进一步地,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

进一步地,所述方法还包括:根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;及根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。

进一步地,所述对所述服务器的健康检查结果的相关信息进行相应的更新还包括:将所述更新后的健康检查结果发送至分布式缓存设备。

进一步地,所述根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新包括:根据所述负载均衡器所提交的所述服务器的健康检查结果直接更新所述服务器的健康检查结果的相关信息。

进一步地,所述根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新包括:当首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,不更新所述服务器的健康检查结果的相关信息;当再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,更新所述服务器的健康检查结果的相关信息。

进一步地,所述当首次获得所述负载均衡器所提交的所述服务器的健康检查结果时不更新所述服务器的健康检查结果的相关信息还包括:请求所述分布式缓存设备插入一尝试主键,所述尝试主键用于标记有过一次尝试写入,且所述尝试主键在第三预设时间内有效;

所述当再次获得所述负载均衡器所提交的所述服务器的健康检查结果时更新所述服务器的健康检查结果的相关信息还包括:请求所述分布式 缓存设备删除所述尝试主键的指令。

进一步地,所述方法还包括:当所述健康检查结果的最新更新时间与当前时间差超出第一预设时间,则删除所述健康检查结果,并对所述服务器的健康检查结果的相关信息进行相应的更新。

根据本申请的一个方面,提供了一种在负载均衡设备端对服务器进行健康检查的方法,其中,所述方法包括:向健康检查缓存设备发起关于服务器健康检查的询问消息;获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息;处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

进一步地,所述处理所述服务器健康检查结果的相关信息以获得所述服务器的健康检查结果包括:当所述服务器健康检查结果的相关信息中包括所述服务器正在被健康检查的消息,则等待第二预设时间后再次执行所述向健康检查缓存设备发起关于服务器健康检查的询问消息至所述处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果;否则,当所述服务器健康检查结果的相关信息中包括具有所述服务器健康检查结果,则直接获取该健康检查结果;否则,当所述健康检查相关信息中包括不具有所述服务器健康检查结果的信息,则对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

进一步地,所述对所述服务器进行健康检查包括:对所述服务器进行健康检查时,向所述健康检查缓存设备发起所述服务器正在被健康检查的消息;对所述服务器的健康检查结束后,向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息。

进一步地,所述对所述服务器进行健康检查还包括:对所述服务器的健康检查结束后,将获得的所述服务器的健康检查结果提交给所述健康检查缓存设备以备更新。

根据本申请的另一个方面,提供了一种对服务器进行健康检查的健康检查缓存设备,其中,所述设备包括:第一装置,用于根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息;第二装置,用于向所述负载均衡器返回所述服务器的健康检 查结果的相关信息。

进一步地,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

进一步地,所述设备还包括:第三装置,用于根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;及第四装置,用于根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。

进一步地,所述第三装置还包括:第一单元,用于将所述更新后的健康检查结果发送至分布式缓存设备。

进一步地,所述第三装置包括:第二单元,用于根据所述负载均衡器所提交的所述服务器的健康检查结果直接更新所述服务器的健康检查结果的相关信息。

进一步地,所述第三装置包括:第三单元,用于当首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,不更新所述服务器的健康检查结果的相关信息;第四单元,用于当再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,更新所述服务器的健康检查结果的相关信息。

进一步地,所述第三单元还包括:第一子单元,用于请求所述分布式缓存设备插入一尝试主键,所述尝试主键用于标记有过一次尝试写入,且所述尝试主键在第三预设时间内有效;

所述第四单元还包括:第二子单元,用于请求所述分布式缓存设备删除所述尝试主键的指令。

进一步地,所述设备还包括:第五装置,用于当所述健康检查结果的最新更新时间与当前时间差超出第一预设时间,则删除所述健康检查结果,并对所述服务器的健康检查结果的相关信息进行相应的更新。

根据本申请的另一个方面,提供了一种对服务器进行健康检查的负载均衡设备,其中,所述设备包括:第六装置,用于向健康检查缓存设备发 起关于服务器健康检查的询问消息;第七装置,用于获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息;第八装置,用于处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

进一步地,所述第八装置包括:第五单元,用于当所述服务器健康检查结果的相关信息中包括所述服务器正在被健康检查的消息,则等待第二预设时间后再次执行所述第六装置至所述第八装置;否则,第六单元,用于当所述服务器健康检查结果的相关信息中包括具有所述服务器健康检查结果,则直接获取该健康检查结果;否则,第七单元,用于当所述健康检查相关信息中包括不具有所述服务器健康检查结果的信息,则对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

进一步地,所述第七单元包括:第三子单元,用于对所述服务器进行健康检查时,向所述健康检查缓存设备发起所述服务器正在被健康检查的消息;第四子单元,用于对所述服务器的健康检查结束后,向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息。

进一步地,所述第七单元还包括:第五子单元,用于对所述服务器的健康检查结束后,将获得的所述服务器的健康检查结果提交给所述健康检查缓存设备以备更新。

与现有技术相比,本申请的一个实施例中,负载均衡器在对服务器进行健康检查之前,先向健康检查缓存设备发起关于服务器健康检查的询问消息,获取并处理健康检查缓存设备所返回的所述服务器的健康检查结果的相关信息,其中,若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括所述服务器的健康检查结果,则所述负载均衡器直接获取该健康检查结果,而不需要再对所述服务器进行健康检查;若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括不具有所述服务器的健康检查结果且有其他负载均衡器正在对所述服务器进行健康检查,则所述负载均衡器会等待第二预设时间后再发起询问消息;若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括不具有所述服务器的健 康检查结果且没有其他负载均衡器正在对所述服务器进行健康检查,则会触发所述负载均衡器对所述服务器的健康检查,健康检查缓存设备根据所述负载均衡器开始或结束健康检查的消息对所述健康检查结果的相关信息进行相应的更新,并根据在健康检查结束后获取的所述服务器的健康检查结果对健康检查结果的相关信息进行相应的更新,那么后续的负载均衡器可以直接获取该健康检查结果,而不需要进行重复的健康检查。

进一步地,当健康检查缓存设备首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,不更新所述服务器的健康检查结果的相关信息;当健康检查缓存设备再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,更新所述服务器的健康检查结果的相关信息,以保证每台负载均衡器都有机会对后端服务器进行健康检查。

如此,通过健康检查缓存设备对所述服务器的健康检查结果进行缓存,可以减少健康检查的次数,减轻健康检查给服务器带来的压力。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一个实施例的一种对服务器进行健康检查的健康检查缓存设备示意图;

图2示出根据本申请一个方面的一个优选实施例的一种对服务器进行健康检查的健康检查缓存设备示意图;

图3示出根据本申请一个方面的又一个优选实施例的一种对服务器进行健康检查的健康检查缓存设备第三装置示意图;

图4示出根据本申请又一个方面的一个实施例的一种对服务器进行健康检查的负载均衡设备示意图;

图5示出根据本申请又一个方面的又一个实施例一种对服务器进行健康检查的负载均衡设备第八装置示意图;

图6示出根据本申请再一个方面的一个实施例的健康检查缓存设备及负载均衡设备配合的示意图;

图7示出根据本申请再一个方面的一个优选实施例的健康检查缓存设备及负载均衡设备配合的示意图;

图8示出根据本申请另一个方面的一个实施例的一种在健康检查缓存设备端对服务器进行健康检查的方法流程图;

图9示出根据本申请另一个方面的一个优选实施例的一种在健康检查缓存设备端对服务器进行健康检查的方法流程图;

图10示出根据本申请另一个方面的一个实施例的一种在负载均衡设备端对服务器进行健康检查的方法流程图;

图11示出根据本申请另一个方面的一个实施例的对服务器进行健康检查的方法流程图;

图12示出根据本申请另一个方面的一个优选实施例的对服务器进行健康检查的方法流程图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

图1示出根据本申请一个方面的一个实施例的一种对服务器进行健康检查的健康检查缓存设备1,其中,设备1包括第一装置11和第二装置12。

具体地,所述第一装置11根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息;所述第二装置12向所述负载均衡器返回所述服务器的健康检查结果的相关信息。

在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处 理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,例如所述第一装置11持续根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,所述第二装置12持续向所述负载均衡器返回所述服务器的健康检查结果的相关信息,直至所述设备1停止工作。

所述第一装置11根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息。

具体地,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

在此,所述服务器是否正在被健康检查的信息是指:有其他的负载均衡器当前正在对所述服务器进行健康检查的信息。所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息是指:健康检查缓存设备中已有所述服务器的健康检查结果,或健康检查缓存设备中不具有所述服务器的健康检查结果且没有其他负载均衡器正在对所述服务器进行健康检查的信息。

所述第二装置12向所述负载均衡器返回所述服务器的健康检查结果 的相关信息。

具体的,例如,假设所述第一装置11根据负载均衡器A发起关于服务器健康检查的询问消息,若此时另有一台负载均衡器B正在对所述服务器进行健康检查,则所述第二装置12向负载均衡器A返回所述服务器正在被健康检查的信息;若健康检查缓存设备1中已保存有所述服务器的健康检查结果,则所述第二装置12向负载均衡器A返回该健康检查结果;若健康检查缓存设备1中没有所述服务器的健康检查结果,且没有其他负载均衡器正在对所述服务器进行健康检查,则所述第二装置12向负载均衡器A返回不具有所述服务器的健康检查结果的信息。

图2示出根据本申请一个方面的一个优选实施例的一种对服务器进行健康检查的健康检查缓存设备1,其中,所述设备1包括第一装置11’、第二装置12’、第三装置13’和第四装置14’。

在此,所述第一装置11’、第二装置12’与图1中第一装置11、第二装置12的内容相同或基本相同,为简明起见,在此不再赘述。

具体地,所述第三装置13’根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;所述第四装置14’根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。

例如,假设所述第一装置11’根据负载均衡器C所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,所述第二装置12’向负载均衡器C返回不具有所述服务器的健康检查结果的信息,于是负载均衡器C开始对所述服务器进行健康检查,所述第四装置14’根据负载均衡器C正在对所述服务器进行健康检查的消息进行相应的更新,更新后的所述健康检查结果的相关信息包括:不具有所述服务器的健康检查结果,以及所述服务器正在被健康检查。当负载均衡器C对所述服务器的健康检查结束后,所述第三装置13’根据负载均衡器C所提交的所述服务器的健康检查结果进行相应的更新,更新后的所述健康检查结果的相关信息包括:所述服务器的健康检查结果,以及当下没有负载均衡器 对所述服务器进行健康检查。所述第四装置14’根据负载均衡器C对所述服务器的健康检查结束的消息对所述健康检查结果的相关信息进行相应的更新。

优选地,所述第三装置13’还包括第一单元(图中未示出)。所述第一单元将所述更新后的健康检查结果发送至分布式缓存设备。

例如,所述分布式缓存设备可以是Redis(一个开源的键值对缓存和存储系统,用来存储多种类型的键值对数据)。具体地,所述健康检查结果以<key,value>的方式进行存储,其中,key标示一个后端服务器,value标示健康检查的结果,1为正常,0为异常。健康检查缓存设备通过Redis的SET指令,将健康检查结果插入Redis中。假设ip地址为1.1.1.1的服务器的健康检查结果为正常,那么健康检查缓存设备就会给Redis发出指令“SET 1.1.1.11”。如果所述第一装置根据负载均衡器发起关于服务器健康检查的询问消息,则健康检查缓存设备通过Redis的GET指令进行查询。假如要查询ip地址为1.1.1.1的服务器的健康检查结果,那么健康检查缓存设备就会给Redis发出指令“GET 1.1.1.1”。如果“GET 1.1.1.1”的返回结果为空,就表示不具有所述服务器的健康检查结果的信息。本领域技术人员应能理解上述分布式缓存设备及对数据进行写入或读取的方式仅为举例,其他现有的或今后可能出现的分布式缓存设备及对数据进行写入或读取的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在一可选的实施例中,所述第三装置13’可以包括第二单元(图中未示出)。所述第二单元根据所述负载均衡器所提交的所述服务器的健康检查结果直接更新所述服务器的健康检查结果的相关信息。

在此,当所述第二单元在获得所述负载均衡器所提交的所述服务器的健康检查结果时,就会直接更新所述健康检查结果的相关信息。直接更新的方法可以达到快速更新所述健康检查结果的相关信息的目的,减少更新所需要的时间。

图3示出根据本申请一个方面的又一个优选实施例的一种对服务器进行健康检查的健康检查缓存设备第三装置13’示意图,其中,所述第三装 置13’包括第三单元133和第四单元134。

具体地,所述第三单元133用于当首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,不更新所述服务器的健康检查结果的相关信息;所述第四单元134用于当再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,更新所述服务器的健康检查结果的相关信息。

优选地,所述第三单元133还包括:第一子单元(图中未示出),用于请求所述分布式缓存设备插入一尝试主键,所述尝试主键用于标记有过一次尝试写入,且所述尝试主键在第三预设时间内有效;所述第四单元134还包括:第二子单元(图中未示出),用于请求所述分布式缓存设备删除所述尝试主键的指令。

第三预设时间指的是尝试主键的有效时间,若超过第三预设时间,尝试主键会被自动删除,以避免因个别机器故障而导致系统无法正常运行。在此需要注意的是,若在第三预设时间之内收到所述第二子单元请求所述分布式缓存设备删除所述尝试主键的指令,尝试主键也会被删除,因为此时所述第四单元134已完成更新所述服务器的健康检查结果的相关信息。

在此,所述第三预设时间的时间长度不被限制,根据用户设置确定,不再赘述。

假设例如,在实际场景中,负载均衡器A、B、C的启动时间相差1s,对所述服务器的健康检查的时间间隔为10s。假设在对所述服务器的健康检查的每个时间间隔内,第一台负载均衡器A发起查询消息时,所述第二装置12’返回的所述健康检查结果的相关信息包括不具有所述服务器的健康检查结果,则会触发负载均衡器A对服务器的健康检查。当负载均衡器A完成健康检查并且试图将健康检查结果写入健康检查缓存设备时,所述第三单元133不更新所述服务器的健康检查结果的相关信息,即健康检查缓存设备不会将该健康检查结果写入Redis,所述第一单元向Redis发送指令以插入一个尝试主键k_try,来记录有过一次尝试写入所述服务器的健康检查结果。若超过尝试主键k_try的第三预设时间,系统会自动删除k_try。当第二台负载均衡器B发起查询消息时,因为第一台负载均衡器A的健康检查结果没有写入Redis,所以所述第二装置12’返回的所述健康检 查结果的相关信息仍然包括不具有所述服务器的健康检查结果,因此触发第二台负载均衡器B对服务器的健康检查。所述第四单元134更新所述服务器的健康检查结果的相关信息,并删除尝试主键k_try,所述第一单元将健康检查结果发送至Redis进行缓存。此后第三台负载均衡器C或其他负载均衡器发起查询消息,所述第二装置12’返回的所述健康检查结果的相关信息均包括所述服务器的健康检查结果,而不需要再对所述服务器进行健康检查。

当然,本领域技术人员应能理解上述负载均衡器的数量、负载均衡器的启动时间、对所述服务器的健康检查的时间间隔仅为举例,其他现有的或今后可能出现的上述内容相关的变化如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

进一步的,设备1还可以包括第五装置(图中未示出)。所述第五装置用于当所述健康检查结果的最新更新时间与当前时间差超出第一预设时间,则删除所述健康检查结果,并对所述服务器的健康检查结果的相关信息进行相应的更新。

在此,所述第一预设时间的时间长度不被限制,根据用户设置确定,不再赘述。在超出第一预设时间删除所述服务器的健康检查结果后,及时将所述健康检查结果的相关信息更新为包括不具有所述服务器的健康检查结果,从而触发随后的负载均衡器对所述服务器的健康检查,获取新的所述服务器的健康检查结果,保持时效性。

例如,接上例,为了保证在每个时间间隔(interval)内都至少有一台负载均衡器对服务器进行了健康检查,在将所述服务器的健康检查结果写入Redis的同时,还需要利用Redis的EXPIRE指令为健康检查结果<key,value>设置第一预设时间,该第一预设时间也即健康检查结果失效时间为interval。假设interval=10s,那么在为ip地址1.1.1.1的服务器写入健康检查结果之后,健康检查缓存设备还需要给Redis发出指令“EXPIRE1.1.1.110”。在经过10s之后,ip地址1.1.1.1的服务器的健康检查结果就会被从Redis中删除,其他负载均衡器再发起查询消息,会被告知不具有所述服务器的健康检查结果的信息,从而触发负载均衡器再次发起健康检 查。

本领域技术人员应能理解上述第一预设时间及删除所述健康检查结果的方式仅为举例,其他现有的或今后可能出现的每隔一段时间相应地更新所述服务器的健康检查结果的相关信息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图4示出根据本申请又一个方面的一个实施例的一种对服务器进行健康检查的负载均衡设备2,其中,设备2包括第六装置26、第七装置27和第八装置28。

具体地,所述第六装置26向健康检查缓存设备发起关于服务器健康检查的询问消息;所述第七装置27获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息;所述第八装置28处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

在此,所述设备2包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备2仅为举例,其他现有的或今后可能出现的设备2如可适用于本申请,也应包含在本申请保护范 围以内,并在此以引用方式包含于此。

上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,例如所述第六装置26持续向健康检查缓存设备发起关于服务器健康检查的询问消息,所述第七装置27持续获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,所述第八装置28持续处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果,直至所述设备2停止工作。

所述第六装置26向健康检查缓存设备发起关于服务器健康检查的询问消息。

在此,负载均衡设备可以由一台或多台负载均衡器构成,各个负载均衡器独立地向健康检查缓存设备发起关于服务器健康检查的询问消息。

例如,所述负载均衡器可以是支持四层负载均衡的LVS(Linux虚拟服务器),可以是支持七层负载均衡的Nginx,也可以是同时支持四层、七层负载均衡的HAProxy。本领域技术人员应能理解上述负载均衡器的类型仅为举例,其他现有的或今后可能出现的负载均衡器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

所述第七装置27获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息。

在此,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

所述第八装置28处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

具体地,如图5所示,所述第八装置28可以包括:第五单元285、第六单元286和第七单元287。所述第五单元285用于当所述服务器健康检查结果的相关信息中包括所述服务器正在被健康检查的消息,则等待第二预设时间后再次执行所述第六装置至所述第八装置;否则,所述第六单元286用于当所述服务器健康检查结果的相关信息中包括具有所述服务器健 康检查结果,则直接获取该健康检查结果;否则,所述第七单元287用于当所述健康检查相关信息中包括不具有所述服务器健康检查结果的信息,则对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

在此,所述第二预设时间的时间长度不被限制,根据用户设置确定,不再赘述。

例如,假设负载均衡器A通过所述第六装置26向健康检查缓存设备发起关于服务器健康检查的询问消息,若此时另有一台负载均衡器B正在对所述服务器进行健康检查,则所述第八装置28处理的所述第七装置27获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述服务器正在被健康检查,所述第五单元285等待第二预设时间后再次执行所述第六装置26至所述第八装置28;若健康检查缓存设备中已保存有所述服务器的健康检查结果,则所述第八装置28处理所述第七装置27获取的健康检查缓存设备返回的健康检查结果的相关信息,所述第六单元286直接获取该健康检查结果;若健康检查缓存设备中没有所述服务器的健康检查结果,且没有其他负载均衡器正在对所述服务器进行健康检查,则所述第八装置28处理的所述第七装置27获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述健康检查缓存设备不具有所述服务器的健康检查结果,所述第七单元287对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

具体地,所述第七单元287包括第三子单元(图中未示出)和第四子单元(图中未示出)。所述第三子单元在对所述服务器进行健康检查时,向所述健康检查缓存设备发起所述服务器正在被健康检查的消息;所述第四子单元在对所述服务器的健康检查结束后,向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息。

例如,假设负载均衡器C通过所述第六装置26向健康检查缓存设备发起关于服务器健康检查的询问消息,所述第八装置28处理的所述第七装置27获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述健康检查缓存设备不具有所述服务器的健康检查结果,以及没有其他负载均衡器正在对所述服务器进行健康检查,则通过所述第七单元287对所 述服务器进行健康检查。所述第三子单元在负载均衡器C对所述服务器的健康检查开始时,向所述健康检查缓存设备发起所述服务器正在被健康检查的消息,那么其他负载均衡器再向健康检查缓存设备发起关于服务器健康检查的询问消息,则健康检查缓存设备返回的健康检查结果的相关信息包括不具有所述服务器的健康检查结果,以及所述服务器正在被健康检查。所述第四子单元在负载均衡器C对所述服务器的健康检查结束后,向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息,那么其他负载均衡器再向健康检查缓存设备发起关于服务器健康检查的询问消息,则健康检查缓存设备返回的健康检查结果的相关信息包括所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息,以及没有其他负载均衡器正在对所述服务器进行健康检查的信息。

具体地,所述第七单元287还包括第五子单元(图中未示出)。所述第五子单元在对所述服务器的健康检查结束后,将获得的所述服务器的健康检查结果提交给所述健康检查缓存设备以备更新。

在此,所述第五子单元会将所述服务器的健康检查结果提交给健康检查缓存设备,健康检查设备可以直接用该健康检查结果进行更新,也可以首次收到健康检查结果时不更新,第二次收到健康检查结果时再进行更新。

图6示出根据本申请再一个方面的一个实施例的健康检查缓存设备及负载均衡设备配合的示意图。所述健康检查缓存设备1包括第一装置11”和第二装置12”,所述负载均衡设备2包括第六装置26’、第七装置27’和第八装置28’。设备2的第六装置26’向健康检查缓存设备发起关于服务器健康检查的询问消息,设备1的第一装置11”根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,设备1的第二装置12”向所述负载均衡器返回所述服务器的健康检查结果的相关信息,设备2的第七装置27’获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,设备2的第八装置28’处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。在此,设备1的第一装置11”、第二装置12”与图1中设备1的第一 装置11、第二装置12的内容相同或基本相同,并且设备2的第六装置26’、第七装置27’、第八装置28’与图4中设备2的第六装置26、第七装置27、第八装置28的内容相同或基本相同,为简明起见,故在此不再赘述,并以引用的方式包含于此。

图7示出根据本申请再一个方面的一个优选实施例的健康检查缓存设备及负载均衡设备配合的示意图。所述健康检查缓存设备1包括第一装置11”’、第二装置12”’、第三装置13”’和第四装置14”’,所述负载均衡设备2包括第六装置26”、第七装置27”和第八装置28”。设备2的第六装置26”向健康检查缓存设备发起关于服务器健康检查的询问消息,第一装置11”’根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,第二装置12”’向所述负载均衡器返回所述服务器的健康检查结果的相关信息,设备2的第七装置27”获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,设备2的第八装置28”处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果,第三装置13”’根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;第四装置14”’根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。在此,第一装置11”’、第二装置12”’、第三装置13”’、第四装置14”’与图2中第一装置11’、第二装置12’、第三装置13’、第四装置14’的内容相同或基本相同,并且设备2的第六装置26”、第七装置27”、第八装置28”与图4中设备2的第六装置26、第七装置27、第八装置28的内容相同或基本相同,为简明起见,故在此不再赘述,并以引用的方式包含于此。

图8示出根据本申请另一个方面的一个实施例的一种在健康检查缓存设备端对服务器进行健康检查的方法流程图。

该方法包括步骤S81和步骤S82。具体地,在步骤S81中,设备1根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息;在步骤S82中,设备1向所述负载均衡器返 回所述服务器的健康检查结果的相关信息。

在此,所述设备1包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

设备1的各个步骤之间是持续不断工作的。具体地,在步骤S81中,设备1持续根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,在步骤S82中,设备1持续向所述负载均衡器返回所述服务器的健康检查结果的相关信息,直至所述设备1停止工作。

在步骤S81中,设备1根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息。

具体地,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

在此,所述服务器是否正在被健康检查的信息是指:有其他的负载均衡器当前正在对所述服务器进行健康检查的信息。

所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息是指:健康检查缓存设备中已有所述服务器的健康检查结果,或健康检查缓存设备中不具有所述服务器的健康检查结果且没有其他负载均衡器正在对所述服务器进行健康检查的信息。

在步骤S82中,设备1向所述负载均衡器返回所述服务器的健康检查结果的相关信息。

具体的,例如,假设在步骤S81中,设备1根据负载均衡器A发起关于服务器健康检查的询问消息,若此时另有一台负载均衡器B正在对所述服务器进行健康检查,则在步骤S82中,设备1向负载均衡器A返回所述服务器正在被健康检查的信息;若健康检查缓存设备1中已保存有所述服务器的健康检查结果,则在步骤S82中,设备1向负载均衡器A返回该健康检查结果;若健康检查缓存设备1中没有所述服务器的健康检查结果,且没有其他负载均衡器正在对所述服务器进行健康检查,则在步骤S82中,设备1向负载均衡器A返回不具有所述服务器的健康检查结果的信息。

图9示出另一个方面的一个优选实施例的一种在健康检查缓存设备端对服务器进行健康检查的方法流程图。

该方法包括步骤S81’、步骤S82’、步骤S83’和步骤S84’。在此,所述步骤S81’、步骤S82’与图8中步骤S81、步骤S82的内容相同或基本相同,为简明起见,不再赘述。

具体地,在步骤S83’中,设备1根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;在步骤S84’中,设备1根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。

例如,假设在步骤S81’中,设备1根据负载均衡器C所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,在步骤S82’中,设备1向负载均衡器C返回不具有所述服务器的健康检查结 果的信息,于是负载均衡器C开始对所述服务器进行健康检查,在步骤S84’中,设备1根据负载均衡器C正在对所述服务器进行健康检查的消息进行相应的更新,更新后的所述健康检查结果的相关信息包括:不具有所述服务器的健康检查结果,以及所述服务器正在被健康检查。当负载均衡器C对所述服务器的健康检查结束后,在步骤S83’中,设备1根据负载均衡器C所提交的所述服务器的健康检查结果进行相应的更新,更新后的所述健康检查结果的相关信息包括:所述服务器的健康检查结果,以及当下没有负载均衡器对所述服务器进行健康检查。在步骤S84’中,设备1根据负载均衡器C对所述服务器的健康检查结束的消息对所述健康检查结果的相关信息进行相应的更新。

优选地,在步骤S83’中,设备1将所述更新后的健康检查结果发送至分布式缓存设备。

例如,所述分布式缓存设备可以是Redis(一个开源的键值对缓存和存储系统,用来存储多种类型的键值对数据)。具体地,所述健康检查结果以<key,value>的方式进行存储,其中,key标示一个后端服务器,value标示健康检查的结果,1为正常,0为异常。健康检查缓存设备通过Redis的SET指令,将健康检查结果插入Redis中。假设ip地址为1.1.1.1的服务器的健康检查结果为正常,那么健康检查缓存设备就会给Redis发出指令“SET 1.1.1.11”。如果所述第一装置根据负载均衡器发起关于服务器健康检查的询问消息,则健康检查缓存设备通过Redis的GET指令进行查询。假如要查询ip地址为1.1.1.1的服务器的健康检查结果,那么健康检查缓存设备就会给Redis发出指令“GET 1.1.1.1”。如果“GET 1.1.1.1”的返回结果为空,就表示不具有所述服务器的健康检查结果的信息。本领域技术人员应能理解上述分布式缓存设备及对数据进行写入或读取的方式仅为举例,其他现有的或今后可能出现的分布式缓存设备及对数据进行写入或读取的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在一可选的实施例中,在步骤S83’中,设备1根据所述负载均衡器所提交的所述服务器的健康检查结果直接更新所述服务器的健康检查结果 的相关信息。

在此,步骤S83’中,设备1在获得所述负载均衡器所提交的所述服务器的健康检查结果时,就会直接更新所述健康检查结果的相关信息。直接更新的方法可以达到快速更新所述健康检查结果的相关信息的目的,减少更新所需要的时间。

具体地,在步骤S83’中,当首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,设备1不更新所述服务器的健康检查结果的相关信息;在步骤S83’中,当再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,设备1更新所述服务器的健康检查结果的相关信息。

优选地,在步骤S83’中,设备1请求所述分布式缓存设备插入一尝试主键,所述尝试主键用于标记有过一次尝试写入,且所述尝试主键在第三预设时间内有效;在步骤S83’中,设备1请求所述分布式缓存设备删除所述尝试主键的指令。

第三预设时间指的是尝试主键的有效时间,若超过第三预设时间,尝试主键会被自动删除,以避免因个别机器故障而导致系统无法正常运行。在此需要注意的是,若在第三预设时间之内收到设备1请求所述分布式缓存设备删除所述尝试主键的指令,尝试主键也会被删除,因为此时设备1已完成更新所述服务器的健康检查结果的相关信息。

在此,所述第三预设时间的时间长度不被限制,根据用户设置确定,不再赘述。

假设例如,在实际场景中,负载均衡器A、B、C的启动时间相差1s,对所述服务器的健康检查的时间间隔为10s。假设在对所述服务器的健康检查的每个时间间隔内,第一台负载均衡器A发起查询消息时,在步骤S82’中,设备1返回的所述健康检查结果的相关信息包括不具有所述服务器的健康检查结果,则会触发负载均衡器A对服务器的健康检查。当负载均衡器A完成健康检查并且试图将健康检查结果写入健康检查缓存设备时,在步骤S83’中,设备1不更新所述服务器的健康检查结果的相关信息,即健康检查缓存设备不会将该健康检查结果写入Redis,设备1向Redis发送指令以插入一个尝试主键k_try,来记录有过一次尝试写入所述服务 器的健康检查结果。若超过尝试主键k_try的第三预设时间,系统会自动删除k_try。当第二台负载均衡器B发起查询消息时,因为第一台负载均衡器A的健康检查结果没有写入Redis,所以在步骤S82’中设备1返回的所述健康检查结果的相关信息仍然包括不具有所述服务器的健康检查结果,因此触发第二台负载均衡器B对服务器的健康检查。设备1更新所述服务器的健康检查结果的相关信息,并删除尝试主键k_try,设备1将健康检查结果发送至Redis进行缓存。此后第三台负载均衡器C或其他负载均衡器发起查询消息,在步骤S82’中设备1返回的所述健康检查结果的相关信息均包括所述服务器的健康检查结果,而不需要再对所述服务器进行健康检查。

当然,本领域技术人员应能理解上述负载均衡器的数量、负载均衡器的启动时间、对所述服务器的健康检查的时间间隔仅为举例,其他现有的或今后可能出现的上述内容相关的变化如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

进一步的,所述方法还可以包括:当所述健康检查结果的最新更新时间与当前时间差超出第一预设时间,则删除所述健康检查结果,并对所述服务器的健康检查结果的相关信息进行相应的更新。

在此,所述第一预设时间的时间长度不被限制,根据用户设置确定,不再赘述。在超出第一预设时间删除所述服务器的健康检查结果后,及时将所述健康检查结果的相关信息更新为包括不具有所述服务器的健康检查结果,从而触发随后的负载均衡器对所述服务器的健康检查,获取新的所述服务器的健康检查结果,保持时效性。

例如,接上例,为了保证在每个时间间隔(interval)内都至少有一台负载均衡器对服务器进行了健康检查,在将所述服务器的健康检查结果写入Redis的同时,还需要利用Redis的EXPIRE指令为健康检查结果<key,value>设置第一预设时间,该第一预设时间也即健康检查结果失效时间为interval。假设interval=10s,那么在为ip地址1.1.1.1的服务器写入健康检查结果之后,健康检查缓存设备还需要给Redis发出指令“EXPIRE1.1.1.110”。在经过10s之后,ip地址1.1.1.1的服务器的健康检查结果就 会被从Redis中删除,其他负载均衡器再发起查询消息,会被告知不具有所述服务器的健康检查结果的信息,从而触发负载均衡器再次发起健康检查。

本领域技术人员应能理解上述第一预设时间及删除所述健康检查结果的方式仅为举例,其他现有的或今后可能出现的每隔一段时间相应地更新所述服务器的健康检查结果的相关信息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图10示出根据本申请另一个方面的一个实施例的一种在负载均衡设备端对服务器进行健康检查的方法流程图。

该方法包括步骤S106、步骤S107和步骤S108。具体地,在步骤S106中,设备2向健康检查缓存设备发起关于服务器健康检查的询问消息;在步骤S107中,设备2获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息;在步骤S108中,设备2处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

在此,所述设备2包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚 本程序。当然,本领域技术人员应能理解上述设备2仅为举例,其他现有的或今后可能出现的设备2如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

设备2的各个步骤之间是持续不断工作的。具体地,在步骤S106中,设备2持续向健康检查缓存设备发起关于服务器健康检查的询问消息,在步骤S107中,设备2持续获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,在步骤S108中,设备2持续处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果,直至所述设备2停止工作。

在步骤S106中,设备2向健康检查缓存设备发起关于服务器健康检查的询问消息。

在此,负载均衡设备可以由一台或多台负载均衡器构成,各个负载均衡器独立地向健康检查缓存设备发起关于服务器健康检查的询问消息。

例如,所述负载均衡器可以是支持四层负载均衡的LVS(Linux虚拟服务器),可以是支持七层负载均衡的Nginx,也可以是同时支持四层、七层负载均衡的HAProxy。本领域技术人员应能理解上述负载均衡器的类型仅为举例,其他现有的或今后可能出现的负载均衡器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在步骤S107中,设备2获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息。

在此,所述服务器的健康检查结果的相关信息包括:所述服务器是否正在被健康检查的信息;所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息。

在步骤S108中,设备2处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。

具体地,在步骤S108中,当所述服务器健康检查结果的相关信息中包括所述服务器正在被健康检查的消息,则设备2等待第二预设时间后再次执行所述步骤S106至所述步骤S108;否则,当所述服务器健康检查结果的相关信息中包括具有所述服务器健康检查结果,则设备2直接获取该 健康检查结果;否则,用于当所述健康检查相关信息中包括不具有所述服务器健康检查结果的信息,则设备2对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

在此,所述第二预设时间的时间长度不被限制,根据用户设置确定,不再赘述。

例如,假设在步骤S106中负载均衡器A通过设备2向健康检查缓存设备发起关于服务器健康检查的询问消息,若此时另有一台负载均衡器B正在对所述服务器进行健康检查,则步骤S108中设备2处理的步骤S107中获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述服务器正在被健康检查,设备2等待第二预设时间后再次执行所述步骤S106至所述步骤S108;若健康检查缓存设备中已保存有所述服务器的健康检查结果,则步骤S108中设备2处理的步骤S107中获取的健康检查缓存设备返回的健康检查结果的相关信息,设备2直接获取该健康检查结果;若健康检查缓存设备中没有所述服务器的健康检查结果,且没有其他负载均衡器正在对所述服务器进行健康检查,则步骤S108中设备2处理的步骤S107中获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述健康检查缓存设备不具有所述服务器的健康检查结果,设备2对所述服务器进行健康检查,以获得所述服务器的健康检查结果。

具体地,在步骤S108中,在对所述服务器进行健康检查时,设备2向所述健康检查缓存设备发起所述服务器正在被健康检查的消息;在对所述服务器的健康检查结束后,设备2向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息。

例如,假设在步骤S106中负载均衡器C通过设备2向健康检查缓存设备发起关于服务器健康检查的询问消息,步骤S108中设备2处理的步骤S107中获取的健康检查缓存设备返回的健康检查结果的相关信息包括所述健康检查缓存设备不具有所述服务器的健康检查结果,以及没有其他负载均衡器正在对所述服务器进行健康检查,则通过设备2对所述服务器进行健康检查。在负载均衡器C对所述服务器的健康检查开始时,设备2向所述健康检查缓存设备发起所述服务器正在被健康检查的消息,那么其 他负载均衡器再向健康检查缓存设备发起关于服务器健康检查的询问消息,则健康检查缓存设备返回的健康检查结果的相关信息包括不具有所述服务器的健康检查结果,以及所述服务器正在被健康检查。在负载均衡器C对所述服务器的健康检查结束后,设备2向所述健康检查缓存设备发起对所述服务器的健康检查已结束的消息,那么其他负载均衡器再向健康检查缓存设备发起关于服务器健康检查的询问消息,则健康检查缓存设备返回的健康检查结果的相关信息包括所述服务器的健康检查结果或不具有所述服务器的健康检查结果的信息,以及没有其他负载均衡器正在对所述服务器进行健康检查的信息。

具体地,在步骤S108中,在对所述服务器的健康检查结束后,设备2将获得的所述服务器的健康检查结果提交给所述健康检查缓存设备以备更新。

在此,设备2会将所述服务器的健康检查结果提交给健康检查缓存设备,健康检查设备可以直接用该健康检查结果进行更新,也可以首次收到健康检查结果时不更新,第二次收到健康检查结果时再进行更新。

图11示出根据本申请另一个方面的一个实施例的对服务器进行健康检查的方法流程图。所述方法包括步骤S81”~S82”和步骤S106’~S108’。具体地,在步骤S106’中,设备2向健康检查缓存设备发起关于服务器健康检查的询问消息,在步骤S81”中,设备1根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,在步骤S82”中,设备1向所述负载均衡器返回所述服务器的健康检查结果的相关信息,在步骤S107’中,设备2获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,在步骤S108’中,设备2处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果。在此,步骤S81”~S82”与图8中的步骤S81~S82的内容相同或基本相同,并且步骤S106’~S108’与图10中步骤S106~S108的内容相同或基本相同,为简明起见,故在此不再赘述,并以引用的方式包含于此。

图12示出根据本申请另一个方面的一个优选实施例的对服务器进行健康检查的方法流程图。所述方法包括步骤S81”’~S84”’和步骤 S106”~S108”。具体地,在步骤S106”中,设备2向健康检查缓存设备发起关于服务器健康检查的询问消息,在步骤S81”’中,设备1根据负载均衡器所发起的关于服务器健康检查的询问消息获取所述服务器的健康检查结果的相关信息,在步骤S82”’中,设备1向所述负载均衡器返回所述服务器的健康检查结果的相关信息,在步骤S107”中,设备2获取所述健康检查缓存设备所返回的关于服务器健康检查结果的相关信息,在步骤S108”中,设备2处理所述服务器健康检查结果的相关信息,以获得所述服务器的健康检查结果,在步骤S83”’中,设备1根据所述负载均衡器所提交的所述服务器的健康检查结果对所述服务器的健康检查结果的相关信息进行相应的更新;在步骤S84”’中,设备1根据所述负载均衡器所发起的正在对所述服务器进行健康检查或对所述服务器的健康检查结束的消息对所述服务器的健康检查结果的相关信息进行相应的更新。在此,步骤S81”’~S84”’与图9中的步骤S81’~S84’的内容相同或基本相同,并且步骤S106”~S108”与图10中步骤S106~S108的内容相同或基本相同,为简明起见,故在此不再赘述,并以引用的方式包含于此。

综上所述,与现有技术相比,本申请的一个实施例中,负载均衡器在对服务器进行健康检查之前,先向健康检查缓存设备发起关于服务器健康检查的询问消息,获取并处理健康检查缓存设备所返回的所述服务器的健康检查结果的相关信息。

若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括所述服务器的健康检查结果,则所述负载均衡器直接获取该健康检查结果,而不需要再对所述服务器进行健康检查;若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括不具有所述服务器的健康检查结果且有其他负载均衡器正在对所述服务器进行健康检查,则所述负载均衡器会等待第二预设时间后再发起询问消息;若健康检查缓存设备所返回的所述健康检查结果的相关信息中包括不具有所述服务器的健康检查结果且没有其他负载均衡器正在对所述服务器进行健康检查,则会触发所述负载均衡器对所述服务器的健康检查,健康检查缓存设备根据所述负载均衡器开始或结束健康检查的消息对所述健康检查结果的相关信息进行相应 的更新,并根据在健康检查结束后获取的所述服务器的健康检查结果对健康检查结果的相关信息进行相应的更新,那么后续的负载均衡器可以直接获取该健康检查结果,而不需要进行重复的健康检查。

进一步地,当健康检查缓存设备首次获得所述负载均衡器所提交的所述服务器的健康检查结果时,不更新所述服务器的健康检查结果的相关信息;当健康检查缓存设备再次获得所述负载均衡器所提交的所述服务器的健康检查结果时,更新所述服务器的健康检查结果的相关信息,以保证每台负载均衡器都有机会对后端服务器进行健康检查。

如此,通过健康检查缓存设备对所述服务器的健康检查结果进行缓存,可以减少健康检查的次数,减轻健康检查给服务器带来的压力。

此外,在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在 内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1