分布式健康检查方法及装置
技术领域
本公开涉及一种计算机技术领域,特别是涉及一种分布式健康检查方法、装置和计算机可读存储介质。
背景技术
在实际应用中,有些系统(例如负载均衡器)使用健康检查机制来探测服务或服务器的可用性。目前采用的具体方法是,健康检查系统定期发送探测请求(例如TCP连接请求,ping请求,http/https或者别的各种各样的请求)给运行服务(例如web服务)的服务器,以探测服务或者服务器的可用性。如果服务器不能响应探测请求,负载均衡器将会把这个服务器从健康列表里删除,后续客户端发送的服务请求将不会再发给这个不可用的服务器。如果健康检查系统探测到以前不可用的服务器已经恢复服务,这个服务器将会被加回服务器健康列表,并且后续的客户端请求将会发给这个服务器。
目前的检查系统中,负载均衡器可能负责检查成千上万的服务器的健康状况,如果定期发送探测请求给成千上万的服务器,并且处理服务器的响应,这对负载均衡器是很大的消耗,大大降低负载均衡器的性能。
发明内容
本公开解决的技术问题是提供一种分布式健康检查方法,以至少部分地解决现有技术中负载均衡器消耗大、性能低的技术问题。此外,还提供一种分布式健康检查装置、分布式健康检查硬件装置、计算机可读存储介质和分布式健康检查终端。
为了实现上述目的,根据本公开的第一个方面,提供以下技术方案:
一种分布式健康检查方法,包括:
向运行在宿主机上的至少一个虚拟服务器发送健康检查请求;
根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告;
向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表。
进一步的,根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告,包括:
若接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将发送响应消息的虚拟服务器的状态标记为健康;
若未接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将未发送响应消息的虚拟服务器的状态标记为非健康;
根据所述至少一个虚拟服务器的状态标记生成健康检查报告。
进一步的,所述方法还包括:
若检测到发生故障的虚拟服务器恢复正常,则向所述负载均衡器发送通知消息,以使负载均衡器将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述方法还包括:
接收控制器周期性发送的心跳检测报文;
向所述控制器响应所述心跳检测报文;或
若未向所述控制器响应所述心跳检测报文,则接收所述控制器发送的重启请求,根据所述重启请求进行重启。
进一步的,执行主体为所述宿主机或运行在所述宿主机上的健康检查代理。
为了实现上述目的,根据本公开的第二个方面,提供以下技术方案:
一种分布式健康检查方法,包括:
接收宿主机发送的健康检查报告;其中,所述健康检查报告为所述宿主机根据至少一个虚拟服务器针对健康检查请求的响应情况生成,所述至少一个虚拟服务器运行在所述宿主机上,所述健康检查请求由所述宿主机发送;
根据所述健康检查报告更新虚拟服务器列表。
进一步的,所述根据所述健康检查报告更新虚拟服务器列表,包括:
查询所述健康检查报告中记录的虚拟服务器的状态标记;
根据所述状态标记从所述虚拟服务器列表中删除状态标记为非健康的虚拟服务器。
进一步的,所述方法还包括:
接收所述宿主机在检测到发生故障的虚拟服务器恢复正常时发送的通知消息;
将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述方法还包括:
接收控制器发送的删除请求;
从所述虚拟服务器列表中删除运行在所述宿主机上的所有虚拟服务器。
进一步的,执行主体为负载均衡器或运行在所述负载均衡器中的健康检查模块。
为了实现上述目的,根据本公开的第三个方面,提供以下技术方案:
一种分布式健康检查装置,包括:
请求发送模块,用于向运行在宿主机上的至少一个虚拟服务器发送健康检查请求;
报告生成模块,用于根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告;
报告发送模块,用于向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表。
进一步的,所述报告生成模块具体用于:若接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将发送响应消息的虚拟服务器的状态标记为健康;若未接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将未发送响应消息的虚拟服务器的状态标记为非健康;根据所述至少一个虚拟服务器的状态标记生成健康检查报告。
进一步的,所述报告发送模块还用于:若检测到发生故障的虚拟服务器恢复正常,则向所述负载均衡器发送通知消息,以使负载均衡器将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述装置还包括:
报文接收模块,用于接收控制器周期性发送的心跳检测报文;
报文响应模块,用于向所述控制器响应所述心跳检测报文;
所述报文接收模块,还用于若所述报文响应模块未向所述控制器响应所述心跳检测报文,则接收所述控制器发送的重启请求,根据所述重启请求进行重启。
进一步的,所述分布式健康检查装置配置在所述宿主机或运行在所述宿主机上的健康检查代理中。
为了实现上述目的,根据本公开的第四个方面,提供以下技术方案:
一种分布式健康检查装置,包括:
报告接收模块,用于接收宿主机发送的健康检查报告;其中,所述健康检查报告为所述宿主机根据至少一个虚拟服务器针对健康检查请求的响应情况生成,所述至少一个虚拟服务器运行在所述宿主机上,所述健康检查请求由所述宿主机发送;
列表更新模块,用于根据所述健康检查报告更新虚拟服务器列表。
进一步的,所述列表更新模块具体用于:查询所述健康检查报告中记录的虚拟服务器的状态标记;根据所述状态标记从所述虚拟服务器列表中删除状态标记为非健康的虚拟服务器。
进一步的,所述报告接收模块还用于:接收所述宿主机在检测到发生故障的虚拟服务器恢复正常时发送的通知消息;
所述列表更新模块还用于:将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述报告接收模块还用于:接收控制器发送的删除请求;
所述列表更新模块还用于:从所述虚拟服务器列表中删除运行在所述宿主机上的所有虚拟服务器。
进一步的,所述分布式健康检查装置配置在负载均衡器或运行在所述负载均衡器中的健康检查模块中。
为了实现上述目的,根据本公开的第五个方面,提供以下技术方案:
一种分布式健康检查系统,包括:本公开的第三个方面所述的分布式健康检查装置和本公开的第四个方面所述的分布式健康检查装置。
进一步的,本公开的第三个方面所述的分布式健康检查装置配置在宿主机或运行在所述宿主机上的健康检查代理中;和/或,本公开的第四个方面所述的分布式健康检查装置配置在负载均衡器或运行在所述负载均衡器中的健康检查模块中。
进一步的,所述分布式健康检查系统还包括:控制器。
为了实现上述目的,根据本公开的第六个方面,提供以下技术方案:
一种电子设备,包括:
存储器,用于存储非暂时性计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现上述第一个方面任意一项所述的分布式健康检查方法。
为了实现上述目的,根据本公开的第七个方面,提供以下技术方案:
一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行上述第一个方面任意一项所述的分布式健康检查方法。
为了实现上述目的,根据本公开的第八个方面,提供以下技术方案:
一种电子设备,包括:
存储器,用于存储非暂时性计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现上述第二个方面任意一项所述的分布式健康检查方法。
为了实现上述目的,根据本公开的第九方面,提供以下技术方案:
一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行上述第二个方面任意一项所述的分布式健康检查方法。
为了实现上述目的,根据本公开的第十个方面,还提供以下技术方案:
一种分布式健康检查终端,包括上述任一分布式健康检查装置。
本公开实施例通过生成健康检查报告,向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表,而无需通过负载均衡器向服务器发送探测请求给成千上万的服务器,并且处理服务器的响应,可以大大降低负载均衡器的消耗,提高负载均衡器的性能。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为根据本公开第一个实施例的分布式健康检查方法的流程示意图;
图2为根据本公开第二个实施例的分布式健康检查方法的流程示意图;
图3为根据本公开第三个实施例的分布式健康检查方法的流程示意图;
图4为根据本公开第四个实施例的分布式健康检查装置的结构示意图;
图5为根据本公开第五个实施例的分布式健康检查装置的结构示意图;
图6为根据本公开第六个实施例的分布式健康检查系统的结构示意图;
图7为根据本公开第七个实施例的电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
实施例一
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例提供一种分布式健康检查方法。该方法的执行主体可以为宿主机或运行在所述宿主机上的健康检查代理。如图1所示,该分布式健康检查方法主要包括如下步骤S11至步骤S13。
步骤S11:向运行在宿主机上的至少一个虚拟服务器发送健康检查请求。
其中,宿主机为安装虚拟机软件的计算机,即为主机。
其中,虚拟服务器为虚拟机,相对宿主机而言其为子机,其安装在宿主机上,必须在宿主机上才能运行。并且,虚拟服务器有一整套硬件设备、有自己操作系统以及应用软件,其可以利用虚拟机工具构造出来。
其中,健康检查请求用于探测虚拟服务器是否正常运行。
步骤S12:根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告。
其中,健康检查报告中包含虚拟服务器的健康情况。
具体的,如果虚拟服务器处于健康状态,则其可以接收健康检查请求,并反馈响应消息;如果虚拟服务器处于非健康状态,则其可能无法接收健康检查请求,或者即使能够接收健康检查请求也无法反馈响应消息。基于上述原理生成健康检查报告。
步骤S13:向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表。
其中,虚拟服务器列表中记录的虚拟服务器可以全是健康的虚拟服务器,也可以全是非健康的虚拟服务器,也可以两者全都记录。
具体的,负载均衡器接收健康检查报告后,根据所述健康检查报告更新虚拟服务器列表。例如,若虚拟服务器列表中记录的虚拟服务器全是健康的虚拟服务器,则负载均衡器根据所述健康检查报告删除虚拟服务器列表中记录的非健康的虚拟服务器;若虚拟服务器列表中记录的虚拟服务器全是非健康的虚拟服务器,则负载均衡器根据所述健康检查报告删除虚拟服务器列表中记录的健康的虚拟服务器;若虚拟服务器列表中记录的虚拟服务器既包含非健康的虚拟服务器又包含健康的虚拟服务器,则负载均衡器根据所述健康检查报告更新虚拟服务器列表中状态发生变化的虚拟服务器的状态,例如,若某台虚拟服务器的历史状态为健康,而健康检查报告中记录的该虚拟服务器的状态为非健康,则健康检查报告将该虚拟服务器的状态更新为非健康。
本实施例通过生成健康检查报告,向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表,而无需通过负载均衡器向服务器发送探测请求给成千上万的服务器,并且处理服务器的响应,可以大大降低负载均衡器的消耗,提高负载均衡器的性能。
在一个可选的实施例中,步骤S12具体包括:
步骤S121:若接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将发送响应消息的虚拟服务器的状态标记为健康。
步骤S122:若未接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将未发送响应消息的虚拟服务器的状态标记为非健康。
步骤S123:根据所述至少一个虚拟服务器的状态标记生成健康检查报告。
如果虚拟服务器处于健康状态,则其可以接收健康检查请求,并反馈响应消息;如果虚拟服务器处于非健康状态,则其可能无法接收健康检查请求,或者即使能够接收健康检查请求也无法反馈响应消息。本实施例基于上述原理对虚拟服务器的健康状态进行标记,并生成健康检查报告。
在一个可选的实施例中,所述方法还包括:
步骤S14:若检测到发生故障的虚拟服务器恢复正常,则向所述负载均衡器发送通知消息,以使负载均衡器将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
在一个可选的实施例中,所述方法还包括:
步骤S15:接收控制器周期性发送的心跳检测报文。
步骤S16:向所述控制器响应所述心跳检测报文。
步骤S17:若未向所述控制器响应所述心跳检测报文,则接收所述控制器发送的重启请求,根据所述重启请求进行重启。
其中,心跳检测报文用于检测宿主机或运行在所述宿主机上的健康检查代理是否处于正常工作状态。
具体的,如果健康检查代理或者宿主机发生故障或者网络不可达,那么负载均衡器将不会再接收任何健康检查报告,从而导致负载均衡器把网络请求发送至已经掉线的虚拟服务器,从而造成部分网络请求失败。这里可以使用心跳机制来解决这个问题,即控制器周期性(例如每隔一小时)发送心跳检测报文给每一个健康检查代理或宿主机来探测是否依然在正常运行。如果健康检查代理或宿主机不再响应心跳探测报文,那么控制器会给宿主机发送一条消息来重启健康检查代理或宿主机。如果重启成功,健康检查代理或宿主机会主动发送一条心跳响应报文给控制器,告诉控制器自己已经恢复服务。如果控制器依然没有接收健康检查代理或宿主机发送的心跳响应报文,控制器通知负载均衡器将运行在此宿主机上所有的虚拟服务器从虚拟服务器列表中删除。
实施例二
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例还提供一种分布式健康检查方法,该方法的执行主体可以为负载均衡器或运行在所述负载均衡器中的健康检查模块。如图2所示,具体包括:
S21:接收宿主机发送的健康检查报告;其中,所述健康检查报告为所述宿主机根据至少一个虚拟服务器针对健康检查请求的响应情况生成,所述至少一个虚拟服务器运行在所述宿主机上,所述健康检查请求由所述宿主机发送。
S22:根据所述健康检查报告更新虚拟服务器列表。
其中,虚拟服务器列表中记录的虚拟服务器可以全是健康的虚拟服务器,也可以全是非健康的虚拟服务器,也可以两者全都记录。
具体的,负载均衡器接收健康检查报告后,根据所述健康检查报告更新虚拟服务器列表。例如,若虚拟服务器列表中记录的虚拟服务器全是健康的虚拟服务器,则负载均衡器根据所述健康检查报告删除虚拟服务器列表中记录的非健康的虚拟服务器;若虚拟服务器列表中记录的虚拟服务器全是非健康的虚拟服务器,则负载均衡器根据所述健康检查报告删除虚拟服务器列表中记录的健康的虚拟服务器;若虚拟服务器列表中记录的虚拟服务器既包含非健康的虚拟服务器又包含健康的虚拟服务器,则负载均衡器根据所述健康检查报告更新虚拟服务器列表中状态发生变化的虚拟服务器的状态,例如,若某台虚拟服务器的历史状态为健康,而健康检查报告中记录的该虚拟服务器的状态为非健康,则健康检查报告将该虚拟服务器的状态更新为非健康。
本实施例通过生成健康检查报告,负载均衡器根据健康检查报告更新虚拟服务器列表,而无需通过负载均衡器向服务器发送探测请求给成千上万的服务器,并且处理服务器的响应,可以大大降低负载均衡器的消耗,提高负载均衡器的性能。
在一个可选的实施例中,步骤S22具体包括:
步骤S221:查询所述健康检查报告中记录的虚拟服务器的状态标记。
其中,状态标记包括健康状态标记和非健康状态标记。
步骤S222:根据所述状态标记从所述虚拟服务器列表中删除状态标记为非健康的虚拟服务器。
在一个可选的实施例中,所述方法还包括:
步骤S23:接收所述宿主机在检测到发生故障的虚拟服务器恢复正常时发送的通知消息。
步骤S24:将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
具体的,如果虚拟服务器故障恢复,宿主机或健康检查代理将会告知负载均衡器将该虚拟服务器加回到虚拟服务器列表中,以继续提供服务。
在一个可选的实施例中,所述方法还包括:
步骤S25:接收控制器发送的删除请求。
步骤S26:从所述虚拟服务器列表中删除运行在所述宿主机上的所有虚拟服务器。
关于本步骤,具体参见上述实施例一中步骤S17的相关描述,这里不再赘述。
实施例三
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例还提供一种分布式健康检查方法,本实施例为宿主机、和运行在所述宿主机上的虚拟服务器、负载均衡器的交互实施例,如图3所示,具体包括:
S31:宿主机向运行在宿主机上的至少一个虚拟服务器发送健康检查请求。
S32:所述至少一个虚拟服务器接收所述健康检查请求,并向所述宿主机发送响应消息。
S33:宿主机确定是否接收到响应消息。
若接收到响应消息,则执行步骤S34,若未接收到响应消息,则执行步骤S35。
S34:宿主机将发送该响应消息的虚拟服务器的状态标记为健康。
S35:宿主机将未发送响应消息的虚拟服务器的状态标记为非健康。
S36:宿主机根据所述至少一个虚拟服务器的状态标记生成健康检查报告,并向负载均衡器发送健康检查报告。
S37:负载均衡器接收宿主机发送的健康检查报告,根据所述健康检查报告更新虚拟服务器列表。
本实施例通过将健康检查功能转移到宿主机上,宿主机负责检查运行在它上的虚拟服务器的健康状况,不需要负载均衡器对虚拟服务器做健康检查,它极大地减少了负载均衡器和虚拟服务器之间的传输流量节省了带宽并且减少了负载均衡器上内存等计算资源的消耗,提高了负载均衡器地性能。
本领域技术人员应能理解,在上述各个实施例的基础上,还可以进行明显变型(例如,对所列举的模式进行组合)或等同替换。
在上文中,虽然按照上述的顺序描述了分布式健康检查方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
下面为本公开装置实施例,本公开装置实施例可用于执行本公开方法实施例实现的步骤,为了便于说明,仅示出了与本公开实施例相关的部分,具体技术细节未揭示的,请参照本公开方法实施例。
实施例四
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例提供一种分布式健康检查装置。该装置可以执行上述实施例一所述的分布式健康检查方法实施例中的步骤。如图4所示,该装置40主要包括:请求发送模块41、报告生成模块42和报告发送模块43;其中,
请求发送模块41用于向运行在宿主机上的至少一个虚拟服务器发送健康检查请求;
报告生成模块42用于根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告;
报告发送模块43用于向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表。
进一步的,所述报告生成模块42具体用于:若接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将发送响应消息的虚拟服务器的状态标记为健康;若未接收到虚拟服务器发送的针对所述健康检查请求的响应消息,则将未发送响应消息的虚拟服务器的状态标记为非健康;根据所述至少一个虚拟服务器的状态标记生成健康检查报告。
进一步的,所述报告发送模块43还用于:若检测到发生故障的虚拟服务器恢复正常,则向所述负载均衡器发送通知消息,以使负载均衡器将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述装置还包括:报文接收模块44和报文响应模块45;其中,
报文接收模块44用于接收控制器周期性发送的心跳检测报文;
报文响应模块45用于向所述控制器响应所述心跳检测报文;
所述报文接收模块44还用于若所述报文响应模块未向所述控制器响应所述心跳检测报文,则接收所述控制器发送的重启请求,根据所述重启请求进行重启。
进一步的,所述分布式健康检查装置配置在所述宿主机或运行在所述宿主机上的健康检查代理中。
有关分布式健康检查装置实施例的工作原理、实现的技术效果等详细说明可以参考前述分布式健康检查方法实施例中的相关说明,在此不再赘述。
实施例五
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例提供一种分布式健康检查装置。该装置可以执行上述实施例二所述的分布式健康检查方法实施例中的步骤。如图5所示,该装置50主要包括:报告接收模块51和列表更新模块52;其中,
报告接收模块51用于接收宿主机发送的健康检查报告;其中,所述健康检查报告为所述宿主机根据至少一个虚拟服务器针对健康检查请求的响应情况生成,所述至少一个虚拟服务器运行在所述宿主机上,所述健康检查请求由所述宿主机发送;
列表更新模块52用于根据所述健康检查报告更新虚拟服务器列表。
进一步的,所述列表更新模块52具体用于:查询所述健康检查报告中记录的虚拟服务器的状态标记;根据所述状态标记从所述虚拟服务器列表中删除状态标记为非健康的虚拟服务器。
进一步的,所述报告接收模块51还用于:接收所述宿主机在检测到发生故障的虚拟服务器恢复正常时发送的通知消息;
所述列表更新模块52还用于:将恢复正常的虚拟服务器添加至所述虚拟服务器列表中。
进一步的,所述报告接收模块51还用于:接收控制器发送的删除请求;
所述列表更新模块52还用于:从所述虚拟服务器列表中删除运行在所述宿主机上的所有虚拟服务器。
进一步的,所述分布式健康检查装置配置在负载均衡器或运行在所述负载均衡器中的健康检查模块中。
有关分布式健康检查装置实施例的工作原理、实现的技术效果等详细说明可以参考前述基于移动终端的表格数据存储方法实施例中的相关说明,在此不再赘述。
实施例六
为了解决现有技术中负载均衡器消耗大、性能低的技术问题,本公开实施例提供一种分布式健康检查系统。该系统主要包括:分布式健康检查装置40和分布式健康检查装置50;其中,
分布式健康检查装置40和分布式健康检查装置50的工作原理分别参见上述实施例四和实施例五,这里不再赘述。
进一步的,分布式健康检查装置40配置在宿主机或运行在所述宿主机上的健康检查代理中;和/或,分布式健康检查装置50配置在负载均衡器或运行在所述负载均衡器中的健康检查模块中。
进一步的,所述分布式健康检查系统还包括:控制器61。
下面以图6所示的分布式健康检查系统为例,对本实施例分布式健康检查系统的工作原理进行详细说明。其中,分布式健康检查装置40配置在运行在所述宿主机上的健康检查代理中;及分布式健康检查装置50配置在运行在所述负载均衡器中的健康检查模块中。
健康检查模块是负载均衡器的子系统,用于接收运行在每个宿主机上的健康检查代理发送的健康检查报告,并且根据接收的健康检查报告更新虚拟服务器列表。如果健康检查代理报告运行在宿主机1上的虚拟服务器1服务不可用,健康检查模块将会把虚拟服务器1从虚拟服务器列表中删除,如果虚拟服务器1故障恢复,健康检查代理将会告知健康检查模块将虚拟服务器1加回到虚拟服务器列表中继续提供服务。
这里有一个特殊情况:如果健康检查代理甚至宿主机故障或者网络不可达,健康检查模块将不会再接收任何健康报告,负载均衡器就会把请求发给已经掉线的虚拟服务器,造成部分请求失败。这里使用心跳机制来解决这个问题,控制器周期性地(每隔一小时)发送心跳检测报文给每一个健康检查代理来探测健康检查代理是否依然在运行。如果健康检查代理不再响应心跳探测报文,那么控制器会给宿主机发送一条消息来重启健康检查代理。如果健康检查代理重启成功,它会主动发送一条心跳响应报文给控制器,告诉控制器自己已经恢复服务。如果控制器依然没有接收健康检查代理发送的心跳响应报文,那它会告诉健康检查模块将运行在此宿主机上所有的虚拟服务器从虚拟服务器列表中删除。
健康检查代理运行在每个宿主机上,它定期的对运行在此宿主机上的虚拟服务器做健康检查,当虚拟服务器状态变化时还负责将最新的状态报告给健康检查模块,并且健康检查代理还负责响应控制器发过来的心跳报文。
控制器用于配置健康检查模块和健康检查代理,让健康检查模块和健康检查健康检查代理建立网络连接,并且还负责发送心跳检测报文来检查健康检查代理是否正常,当宿主机宕机时,控制器还需要告诉健康检查模块从虚拟服务器列表中删掉相应的虚拟服务器。
实施例七
下面参考图7,其示出了适于用于实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储装置708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:向运行在宿主机上的至少一个虚拟服务器发送健康检查请求;根据所述至少一个虚拟服务器针对所述健康检查请求的响应情况生成健康检查报告;向负载均衡器发送健康检查报告,以使所述负载均衡器更新虚拟服务器列表。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或或流程图中的每个方框、以及框图和/或或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。