在线状态检测方法及装置与流程

文档序号:15930109发布日期:2018-11-14 01:32阅读:324来源:国知局

本申请涉及数据处理技术领域,具体而言,涉及一种在线状态检测方法及装置。

背景技术

在互联网中,一般是基于互联网协议发送数据请求,以请求获取数据信息。

当前检测终端在线的方式是,在终端登录时,服务端将新上线的终端的信息添加到一个队列的末端,采用一个队列来保存所有终端的信息。每个终端会在间隔一个检测间隔时长向服务器发送心跳包,而服务器会每隔一个检测间隔时长去检测所有终端未接收到终端心跳包的时间。如果服务器检测到未接收到心跳包的时间大于检测超时时间,则判断该终端为离线状态。

现有的这种终端检测方式中,服务器在每次检测时,都需要检测所有保存在队列中的终端的心跳间隔时间,因此,这种终端检测方法对cpu的资源消耗非常高。尤其是当终端的数量较多时,这种终端检测方法对cpu的资源消耗更是明显,使得cpu占用率极高,检测过程进行缓慢。



技术实现要素:

为了克服现有技术中的上述不足,本申请的目的在于提供一种在线状态检测方法,应用于服务器,所述服务器配置有用于保存终端的信息的多个第一队列,所述第一队列的数量为预设的检测超时时间与检测间隔时长的商,所述方法包括:

每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列;

针对所述目标第一队列中记录的每个终端,获取未接收到该终端发送的心跳包的时长作为无心跳包时长,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线;

当检测到新上线的终端时,将所述新上线的终端的信息存储到当前的目标第一队列中。

可选地,所述在线状态检测方法中,所述服务器内还配置有第二队列,所述第二队列的成员与所述第一队列一一对应;

所述每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列的步骤包括,

每隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员,将所述目标第二队列成员所对应的所述第一队列作为所述目标第一队列。

可选地,所述在线状态检测方法中,所述第二队列包括头部成员和尾部成员;

所述每间隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员的步骤包括:

指针对象每隔所述检测间隔时长依次指向一个所述第二队列的成员,将所述指针对象指向的所述第二队列的成员作为所述目标第二队列成员,将所述目标第二队列成员对应的所述第一队列作为所述目标第一队列;

当所述指针对象指向所述尾部成员时,所述指针对象在间隔所述检测间隔时长后重新指向所述头部成员。

可选地,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线的步骤为:

当所述无心跳包时长超过所述检测超时时间时,则判断该终端保持在线状态;

当所述无心跳包时长没有超过所述检测超时时间时,则判断该终端不是保持在线状态。

可选地,所述在线状态检测方法还包括:针对每个在线的终端获取并记录该终端的所述无心跳包时长。

可选地,所述在线状态检测方法还包括:

当检测到所述第一队列中存在所述无心跳包时长超过所述检测超时时间的终端时,将该终端的信息从所述第一队列中删除。

可选地,所述在线状态检测方法还包括,当接收到终端的下线信息时,将该终端的信息从所述第一队列中删除。

可选地,所述在线状态检测方法中,所述检测间隔时长为1秒,所述检测超时时间为10秒,所述第一队列的数量为10个。

本申请的另一目的在于提供一种在线状态检测装置,应用于服务器,所述服务器配置有保存终端的信息的多个第一队列,所述第一队列的数量为预设的检测超时时间与检测间隔时长的商;

所述在线状态检测装置包括:

第一查找模块,用于每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列;

状态检测模块,用于针对所述目标第一队列中记录的每个终端,获取未接收到该终端发送的心跳包的时长作为无心跳包时长,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线;

信息添加模块,用于在检测到新上线的终端时,将所述新上线的终端的信息存储到当前的目标第一队列中。

可选地,所述服务器还配置有第二队列,所述第二队列的成员与所述第一队列一一对应;所述在线状态检测装置还包括第二查找模块,所述第二查找模块用于每隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员,将所述目标第二队列成员对应的所述第一队列作为所述目标第一队列。

相对于现有技术而言,本申请具有以下有益效果:

本申请中,采用多个第一队列来保存终端信息,并每隔检测间隔时长循环依次将多个第一队列中的一个作为目标第一队列,根据所述目标第一队列中保存的终端信息获取所述目标第一队列中每个终端的无心跳包时长,以判断所述无心跳包时长对应的终端是否为在线状态;并检测所述目标第一队列;在检测到新上线的终端时,将所述新上线的终端的信息存储到所述目标第一队列中。如此,使得被检测的第一队列中的终端都是可能存在无心跳时间超过检测超时时间的,从而,降低了在线状态检测过程中cpu(centralprocessingunit/processor,中央处理器)的资源消耗,提高了在线状态检测的效率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的在线状态检测方法的流程示意图;

图2为本申请实施例提供的在线状态检测装置的功能模块示意图;

图3为本申请实施例提供的环形队列的结构示意图;

图4为本申请实施例提供的t1时刻环形队列与第一队列的对应示意图;

图5为本申请实施例提供的t2时刻环形队列与第一队列的对应示意图;

图6为本申请实施例提供的t3时刻环形队列与第一队列的对应示意图。

图标:110-第一查找模块;111-状态检测模块;112-信息添加模块;113-第二查找模块。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

如图1所示,图1是本申请较佳实施例提供的在线状态检测方法的流程示意图。

本申请的在线状态检测方法,应用于服务器,所述服务器配置有用于保存终端的信息的多个第一队列,所述第一队列的数量为预设的检测超时时间与检测间隔时长的商。检测超时时间是指预先设定的用于判断多久未收到终端心跳包即判断该终端保持不在线状态的时长。检测间隔时长是指从检测一个队列开始,到开始检测下一个队列之间的时间长度,检测间隔时长也与终端发送相邻两个心跳包之间的间隔时间相等。

所述方法包括:

步骤s110,每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列。这样,在将第一队列中所包含的队列都检测完后,再次从第一队列中最开始时被检测的队列开始,每间隔一个检测间隔时长依次对第一队列中的队列进行检测,从而,第一队列中的每个队列都是间隔一个检测超时时间被重新作为目标第一队列。

步骤s111,针对所述目标第一队列中记录的每个终端,获取未接收到该终端发送的心跳包的时长作为无心跳包时长,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线。

每次检测终端的无心跳包时长时,针对目标第一队列中记录的每个终端进行检测,而不对目标第一队列以外的第一队列进行检测,可以降低每次在线状态检测时cpu的资源消耗,提高在线状态检测的效率。

步骤s112,当检测到新上线的终端时,将所述新上线的终端的信息存储到当前的目标第一队列中。

本步骤中,当检测到新上线的终端时,将新上线的终端保存在当前正在被检测的目标第一队列中。由于第一队列的数量等于检测超时时间与检测间隔时长的商,因此,当下次再检查当前被检测的目标第一队列时,该目标第一队列中的终端都是可能存在无心跳包时长大于或者等于检测超时时间的,即终端超时。

因此,本实施例由于每次间隔检测间隔时长循环依次将第一队列作为目标第一队列并对目标第一队列进行检测,如此,使得每次被检测的目标第一队列中的终端都是存在超时可能的终端,而不用在每次检测超时的终端时,都对存储在队列中的所有终端进行检测,能降低cpu资源的消耗,提高在线状态检测的效率。

为了方便查找第一队列,本实施例中,可选地,所述在线状态检测方法中,所述服务器内还配置有第二队列,所述第二队列的成员与所述第一队列一一对应。

所述每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列的步骤包括,

每隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员,将所述目标第二队列成员所对应的所述第一队列作为所述目标第一队列。

本实施例中,将第二队列的成员与第一队列中的队列一一对应,在将第一队列中的队列作为目标第一队列时,只要找到与目标第一队列对应第的二队列的成员即可。

在本实施例中,可选地,所述在线状态检测方法中,所述第二队列包括头部成员和尾部成员。

所述每间隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员的步骤包括:

指针对象每隔所述检测间隔时长依次指向一个所述第二队列的成员,将所述指针对象指向的所述第二队列的成员作为所述目标第二队列成员,将所述目标第二队列成员对应的所述第一队列作为所述目标第一队列。

当所述指针对象指向所述尾部成员时,所述指针对象在间隔所述检测间隔时长后重新指向所述头部成员。

当然,如果是在初始化过程,则在初始化时将指针对象指向头部成员,然后再进行以下步骤:指针对象每隔所述检测间隔时长依次指向一个所述第二队列的成员,将所述指针对象指向的所述第二队列的成员作为所述目标第二队列成员,将所述目标第二队列成员对应的所述第一队列作为所述目标第一队列。

当所述指针对象指向所述尾部成员时,所述指针对象在间隔所述检测间隔时长后重新指向所述头部成员。

本实施例中,将第二队列配置为环形队列,使环形队列的队列成员与多个第一队列一一对应。利用指针对象来确定目标第二队列成员,并在指针对象指向所述尾部成员时,间隔检测间隔时长后使指针对象重新指向尾部成员。

由于上线后的终端,如果是保持在线的状态,会持续地向服务器发送心跳包。故本实施例中,可选地,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线的步骤为:

当所述无心跳包时长超过所述检测超时时间时,则判断该终端保持在线状态。

当所述无心跳包时长没有超过所述检测超时时间时,则判断该终端不是保持在线状态。

通过对比无心跳包时长是否超过检测超时时间来判断终端是否保持在线,具有简便快捷的特点。

本实施例中,可选地,所述在线状态检测方法还包括:针对每个在线的终端获取并记录该终端的所述无心跳包时长。采用单独的线程来获取并记录终端的无心跳包时长,使得获取并记录终端的无心跳包时长与检测终端的无心跳包时长可以同时进行。

本实施例中,可选地,所述在线状态检测方法还包括:

当检测到所述第一队列中存在所述无心跳包时长超过所述检测超时时间的终端时,将该终端的信息从所述第一队列中删除。

本实施例通过将没有保持在线的终端的信息从第一队列中删除,能够保证第一队列中所存储的都是保持在线的终端的信息,从而避免第一队列中所存储终端的信息数量过大,使得在检测终端时,所检测的终端不会是已经确定为不是保持在线的终端,从而提高在线状态检测的效率,降低了在线状态检测时cpu的资源消耗以及存储空间。

本实施例中,可选地,所述在线状态检测方法还包括,步骤s113,当接收到终端的下线信息时,将该终端的信息从所述第一队列中删除。根据终端的下线信息来删除终端在第一队列中的对应信息,能够在终端下线时及时将终端的信息从第一队列中删除,从而,在检测第一队列中的终端时,不会检测已经下线的终端。如此,进一步提高了在线状态检测的效率,降低了在线状态检测时cpu的资源消耗以及存储空间。

本实施例中,可选地,所述在线状态检测方法中,所述检测间隔时长为1秒,所述检测超时时间为10秒,所述第一队列的数量为10个。

如图2所示,图2是本申请较佳实施例提供的在线状态检测方法的流程示意图。

本申请的在线状态检测装置,应用于服务器,所述服务器配置有保存终端的信息的多个第一队列,所述第一队列的数量为预设的检测超时时间与检测间隔时长的商。检测超时时间是指预先设定的用于判断多久未收到终端心跳包,即判断该终端为保持不在线状态的时长阈值。检测间隔时长是指从检测一个队列开始,到开始检测下一个队列之间的时间长度。在服务器内配置保存有终端的信息的多个第一队列,无需另外设置单独的结构配置第一队列。

所述在线状态检测装置包括:

第一查找模块110,用于每间隔所述检测间隔时长循环依次将所述多个第一队列中的一个作为目标第一队列。

本申请中的第一查找模块110用于执行图2所示的步骤s110

状态检测模块111,用于针对所述目标第一队列中记录的每个终端,获取未接收到该终端发送的心跳包的时长作为无心跳包时长,根据所述检测超时时间和所述无心跳包时长判断该终端是否保持在线。

本申请中的状态检测模块111用于执行图2所示的步骤s111。

信息添加模块112,用于在检测到新上线的终端时,将所述新上线的终端的信息存储到当前的目标第一队列中。

本申请中的信息添加模块112用于执行图2所示的步骤s112。

可选地,所述服务器还配置有第二队列,所述第二队列的成员与所述第一队列一一对应;所述在线状态检测装置还包括第二查找模块113,所述第二查找模块113用于每隔所述检测间隔时长循环依次将所述第二队列中的一个成员作为目标第二队列成员,将所述目标第二队列成员对应的所述第一队列作为所述目标第一队列。

以下结合一个具体的终端在线检测过程来对本申请所述的在线检测方法做一个详细的描述。

在终端在线状态检测过程中,将检测间隔时长设置为1秒,即终端每隔1秒向服务器发送一次心跳包。将检测超时时间设置为10秒,将检测超时时间除以检测间隔时长得到第一队列的数量为10个。如图3所示,设置第二队列,使第二队列的成员数与第一队列的队列数相等,即10个,将第二队列设置为环形队列。第二队列中包括头部成员(head)、尾部成员(tail),同时,设置指针对象(cur)指向环形队列的元素。使环形队列中的每个成员分别对应一个第一队列。从环形队列的头部成员开始,直至环形队列的尾部成员,对环形队列的每个成员从0,1,2,3,4,5,6,7,8,9依次编号。

初始化时,将指针对象指向环形队列的头部成员(编号为0的队列成员)。

初始化后,指针对象每隔检测间隔时长指向当前指向的队列成员的下一个队列成员,即每隔检测间隔时长将当前指针对象指向的队列成员的下一个队列成员作为目标第二队列成员。

如图4所示,初始化后的t1时刻,指针对象指向编号为5的成员。环形队列中,编号为2的成员对应的第一队列存储有终端c2_0,c2_1的信息。编号为3的成员对应的第一队列存储有终端c3_0,c3_1的信息。编号为5的成员对应的第一队列存储有终端c5_0,c5_1的信息。此时,检测到终端c5_2上线,于是,将终端c5_2的信息保存在编号为5的成员所对应的第一队列的队列尾部。在t1加1秒的时刻,指针对象则指向编号为6的成员。

如图5所示,t2时刻(t1加7秒的时刻),指针对象指向编号为2的成员,此时,编号为2的成员所对应的第一队列中已经存储有终端c2_0,c2_1,c2_2,c2_3的信息。因此,t2时刻,检测编号为2的成员所对应的第一队列保存的终端,即检测终端c2_0,c2_1,c2_2,c2_3。

t3时刻,指针对象指向编号为9的成员(尾部成员),此时,对编号为9的成员所对应的第一队列中的终端进行检测。在t3加1秒的时刻,指针对象指向编号为0的成员(头部成员),然后,指针对象再每隔1秒依次指向当前指针所指向成员的下一个成员。

在t4时刻,所述环形队列所对应的第一队列如图6所示。此时,环形队列中编号为1的成员对应的第一队列存储有终端c1_0,c1_1的信息。环形队列中编号为2的成员对应的第一队列存储有终端c2_0,c2_1,c2_2,c2_3的信息。环形队列中编号为3的成员对应的第一队列存储有终端c3_0,c3_1的信息。环形队列中编号为4的成员对应的第一队列存储有终端c4_0,c4_1的信息。环形队列中编号为5的成员对应的第一队列存储有终端c5_0,c5_1,c5_2的信息。环形队列中编号为6的成员对应的第一队列存储有终端c6_0,c6_1的信息。环形队列中编号为7的成员对应的第一队列存储有终端c7_0,c7_1的信息。环形队列中编号为8的成员对应的第一队列存储有终端c8_0,c8_1的信息。

综上所述,本申请采用多个第一队列来保存终端信息,并每隔检测间隔时长依次将多个第一队列中的一个作为目标第一队列,根据所述目标第一队列中保存的终端信息获取所述目标第一队列中每个终端的无心跳包时长,以判断所述无心跳包时长对应的终端是否为在线状态;并检测所述目标第一队列;在检测到新上线的终端时,将所述新上线的终端的信息存储到所述目标第一队列中。如此,使得被检测的第一队列都是可能存在无心跳包时长超过检测超时时间的,从而,降低了在线状态检测过程中的cpu的资源消耗,提高了服务器的响应效率。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

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