状态判定方法、电子设备、系统及介质与流程

文档序号:18105112发布日期:2019-07-06 11:36阅读:143来源:国知局
状态判定方法、电子设备、系统及介质与流程

本发明涉及通信技术领域,尤其涉及状态判定方法、电子设备、系统及介质。



背景技术:

超文本传输协议(hypertexttransferprotocol,http)及/或超文本传输安全协议(hypertexttransferprotocolsecure,https)是互联网上应用最广泛的网络通信协议,基于浏览器web(worldwideweb,全球广域网)端的应用程序均依赖此协议来跟服务端进行通信。该协议基于“客户端请求-服务器响应”模式,因此,通过该协议无法判断客户端的状态。虽然服务端有非常多的成熟的开源网络服务器可以提供网络服务,客户端发起请求,服务端就会返回对应的文件、数据、接口服务等。在这种模式下互联网应用提供商可以快速以极低的研发技术成本构建一套网络应用。但是,由于该协议是一种无状态的短连接协议,在需要实现类似“在线”这样的持久状态时,将无法满足要求。

现有技术方案中,通常采用基于非浏览器端的长连接tcp(transmissioncontrolprotocol,传输控制协议)技术,或者浏览器端websocket这样的长连接技术来实现。但是,上述解决方式也存在一定的弊端。

在广泛使用的浏览器web应用场景下,无法支持tcp协议,而使用websocket长连接将存在如下问题:

(1)提高客户端和服务器端的技术研发成本;

(2)大量的长连接会过量消耗服务器资源;

(3)部分浏览器端不支持websocket协议;

(4)在非浏览器的场景,例如手机应用程序(app)端通过超文本传输协议及/或超文本传输安全协议来访问服务端时,无法直接使用websocket协议。



技术实现要素:

本发明的主要目的在于提供状态判定方法、电子设备、系统及介质,旨在解决采用超文本传输协议及/或超文本传输安全协议时,客户端状态判定的问题。

为实现上述目的,本发明提供一种状态判定方法,所述方法包括:

当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求;

从所述心跳请求中获取心跳参数;

在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果;

根据所述检测结果,判定所述心跳参数对应的目标客户端的状态。

优选地,所述心跳参数包括所述目标客户端的标识、所述目标客户端的类型,所述方法还包括:

获取可连接的所有客户端;

确定所述所有客户端中每个客户端的标识及类型;

根据每个客户端的标识及类型,建立每个客户端的标记值;

存储每个标记值至所述缓存服务器中;

为每个标记值配置心跳周期及缓存有效期。

优选地,所述根据所述检测结果,判定所述心跳参数对应的目标客户端的状态包括:

当检测到所述目标标记值存在时,确定所述目标客户端处于在线状态;或者

当检测到所述目标标记值不存在时,确定所述目标客户端处于离线状态。

优选地,在根据所述检测结果,判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

从所述缓存服务器中获取所述目标标记值的目标心跳周期及目标缓存有效期;

计算所述目标缓存有效期与所述目标心跳周期的差值;

以所述差值为最小值,及以所述目标心跳周期为最大值,构建所述目标客户端的状态所对应的误判时间范围。

优选地,所述方法还包括:

获取所述心跳请求接受失败的次数;

当所述次数小于或者等于配置值时,继续判定所述目标客户端的状态。

优选地,在判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

计算预设时间范围内,所述目标客户端处于在线状态的总时长;及/或

计算所述预设时间范围内,所述目标客户端处于在线状态的在线天数,确定所述预设时间范围所包括的总天数,根据所述在线天数及所述总天数,计算所述目标客户端在所述预设时间范围内的在线率;及/或

获取所述所有客户端,判定所述所有客户端中每个客户端的状态,根据每个客户端的状态确定所述所有客户端中处于在线状态的在线客户端数量,及处于离线状态的离线客户端数量。

为实现上述目的,本发明进一步提供一种电子设备,所述电子设备包括:

存储器,存储至少一个指令;及

处理器,执行所述存储器中存储的指令以实现所述状态判定方法。

优选地,所述电子设备为组成内容分发网络或者区块链网络的节点。

为实现上述目的,本发明进一步提供一种状态判定系统,所述系统包括:

接受单元,用于当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求;

获取单元,用于从所述心跳请求中获取心跳参数;

检测单元,用于在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果;

判定单元,用于根据所述检测结果,判定所述心跳参数对应的目标客户端的状态。

优选地,所述心跳参数包括所述目标客户端的标识、所述目标客户端的类型,所述获取单元,还用于获取可连接的所有客户端;

所述系统还包括:

确定单元,用于确定所述所有客户端中每个客户端的标识及类型;

建立单元,用于根据每个客户端的标识及类型,建立每个客户端的标记值;

存储单元,用于存储每个标记值至所述缓存服务器中;

配置单元,用于为每个标记值配置心跳周期及缓存有效期。

优选地,所述判定单元根据所述检测结果,判定所述心跳参数对应的目标客户端的状态包括:

当检测到所述目标标记值存在时,确定所述目标客户端处于在线状态;或者

当检测到所述目标标记值不存在时,确定所述目标客户端处于离线状态。

优选地,所述获取单元,还用于在根据所述检测结果,判定所述心跳参数对应的目标客户端的状态后,从所述缓存服务器中获取所述目标标记值的目标心跳周期及目标缓存有效期;

所述系统还包括:

计算单元,用于计算所述目标缓存有效期与所述目标心跳周期的差值;

构建单元,用于以所述差值为最小值,及以所述目标心跳周期为最大值,构建所述目标客户端的状态所对应的误判时间范围。

优选地,所述获取单元,还用于获取所述心跳请求接受失败的次数;

所述判定单元,还用于当所述次数小于或者等于配置值时,继续判定所述目标客户端的状态。

优选地,所述计算单元,还用于在判定所述心跳参数对应的目标客户端的状态后,计算预设时间范围内,所述目标客户端处于在线状态的总时长;及/或

所述计算单元,还用于计算所述预设时间范围内,所述目标客户端处于在线状态的在线天数;

所述确定单元,还用于确定所述预设时间范围所包括的总天数;

所述计算单元,还用于根据所述在线天数及所述总天数,计算所述目标客户端在所述预设时间范围内的在线率;及/或

所述获取单元,还用于获取所述所有客户端;

所述判定单元,还用于判定所述所有客户端中每个客户端的状态;

所述确定单元,还用于根据每个客户端的状态确定所述所有客户端中处于在线状态的在线客户端数量,及处于离线状态的离线客户端数量。

为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有状态判定程序,所述状态判定程序可被一个或者多个处理器执行,以实现所述的状态判定方法。

为实现上述目的,本发明进一步提供一种计算机程序产品,包括计算机指令,当其在计算机上运行时,使得计算机可以执行所述状态判定方法。

综上所述,本发明能够当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求,从而以短连接协议建立连接,并从所述心跳请求中获取心跳参数,进一步在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果,并根据所述检测结果,判定所述心跳参数对应的目标客户端的状态,从而实现短连接协议下,客户端状态的有效判定。

附图说明

图1为本发明一实施例的流程示意图;

图2为本发明一实施例揭露的电子设备的内部结构示意图;

图3为本发明状态判定系统的功能模块示意图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

主要元件符号说明

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

本发明提供一种状态判定方法。

参照图1,图1为本发明一实施例的流程示意图。根据不同的需求,该流程示意图中步骤的顺序可以改变,某些步骤可以省略。

所述状态判定方法应用于一个或者多个电子设备中,所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,所述电子设备的硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。

所述电子设备可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)、游戏机、交互式网络电视(internetprotocoltelevision,iptv)、智能式穿戴式设备等。

所述电子设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云。

所述电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。

在一实施例中,该方法包括:

s10,当检测到心跳请求时,采用超文本传输协议(hypertexttransferprotocol,http)及/或超文本传输安全协议(hypertexttransferprotocolsecure,https)接受所述心跳请求。

在本发明的至少一个实施例中,所述心跳请求是基于一种心跳机制,所述心跳机制是指定时发送一个自定义的结构体(心跳包,即所述心跳请求),让对方知道自己还活着,以确保连接的有效性的机制。

具体地,所述心跳请求一般都是很小的包,或者是只包含包头的一个空包。

在本发明的至少一个实施例中,所述超文本传输协议及/或超文本传输安全协议是一种短连接协议。并且,在采用所述超文本传输协议及/或超文本传输安全协议连接时,无法获取到客户端的在线或者离线状态,也就无法进行用户使用状态或者客户端连接状态的统计分析。

在本发明的至少一个实施例中,所述方法还包括:

所述电子设备获取可连接的所有客户端,并确定所述所有客户端中每个客户端的标识及类型,进一步地,所述电子设备根据每个客户端的标识及类型,建立每个客户端的标记值,并存储每个标记值至缓存服务器(cacheserver)中,所述电子设备为每个标记值配置心跳周期及缓存有效期。

例如:所述标记值可以配置为key,并以任意值为value。此时,如果一个客户端的标识为a,且所述客户端的类型为x,则将所述客户端的标记值建立为a_x。

具体地,所述缓存服务器是指存放频繁访问内容的服务器。所述缓存服务器能够自动清理冗余数据,避免造成服务器资源紧张,影响服务器的正常运行。

进一步地,客户端根据所述心跳周期,定期发起所述心跳请求,所述心跳周期可以进行自定义配置,本发明不限制。例如:所述心跳周期可以是30秒、1分钟、3分钟等,并且,所述心跳周期的长短将影响所述心跳请求的处理量和离线状态更新的延迟。

相应地,为了更有效地判定客户端的状态,将所述缓存有效期配置为一个大于所述心跳周期的数值。例如:当所述心跳周期为30秒时,所述缓存有效期可以配置为60秒。

在本发明的至少一个实施例中,每个客户端的标识可以包括,但不限于以下一种或者多种情况的组合:

(1)在有用户登陆态的产品中,客户端一般都会有一个表明登陆身份的令牌(token),通过所述token,所述电子设备可以获取当前登陆的用户id(identification)等唯一标识,作为客户端的标识。

(2)在没有用户登陆态的产品中,以配置协议来约定,例如:对于手机和平板电脑等移动设备,可以用设备号作为客户端的标识,而对于web浏览器,可以取客户端ip(internetprotocoladdress,互联网协议地址)作为客户端的标识等。

在本发明的至少一个实施例中,由于一个用户可能同时在pc(personalcomputer,个人计算机)端、web(worldwideweb,全球广域网)浏览器、手机端app、平板端app等不同类型的设备上在线,因此,当需要区分用户在哪种终端上在线时,则要确定客户端的类型,因此,所述电子设备以客户端的类型作为一个参数建立每个客户端的标记值。

s11,从所述心跳请求中获取心跳参数。

在本发明的至少一个实施例中,所述心跳请求中包括所述心跳参数。

进一步地,所述心跳参数包括目标客户端的标识、所述目标客户端的类型。

其中,所述目标客户端是指正在进行状态判定的客户端。

s12,在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果。

在本发明的至少一个实施例中,所述检测结果包括,但不限于以下任意一种情况:

(1)所述目标标记值存在。

(2)所述目标标记值不存在。

可以理解的是,针对不同的检测结果,所述电子设备将对所述目标客户端的状态进行不同的判断。

s13,根据所述检测结果,判定所述心跳参数对应的目标客户端的状态。

在本发明的至少一个实施例中,所述电子设备根据所述检测结果,判定所述心跳参数对应的目标客户端的状态包括:

(1)当检测到所述目标标记值存在时,所述电子设备确定所述目标客户端处于在线状态。

例如:当所述缓存服务器中的键a_x存在时,所述电子设备确定a当前在线,且在线的设备类型为x。

(2)当检测到所述目标标记值不存在时,所述电子设备确定所述目标客户端处于离线状态。

例如:当所述缓存服务器中的键a_x不存在时,所述电子设备确定a在设备类型x上处于离线状态。

通过上述实施方式,所述电子设备能够实现对客户端的状态进行自动判断。

在本发明的至少一个实施例中,在根据所述检测结果,判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

所述电子设备从所述缓存服务器中获取所述目标标记值的目标心跳周期及目标缓存有效期,并计算所述目标缓存有效期与所述目标心跳周期的差值,所述电子设备以所述差值为最小值,及以所述目标心跳周期为最大值,构建所述目标客户端的状态所对应的误判时间范围。

例如:当所述目标客户端下线之后,cache服务器中的a_x最长需要等待60s(下线前刚发送完心跳),且最短需要等待30s(下线前30s即将准备发送心跳)后才会过期,因此这段时间内,所述目标客户端实际已经离线,但是会被判定为在线,具体误判时间范围m跟所述目标心跳周期t和所述目标缓存有效期e相关,公式为:e-t<m<e。

通过上述实施方式,所述电子设备在进行客户端的状态判定时,能够容忍对离线状态判定的延迟性。

在本发明的至少一个实施例中,所述方法还包括:

所述电子设备获取所述心跳请求接受失败的次数,当所述次数小于或者等于配置值时,所述电子设备继续判定所述目标客户端的状态。

可以理解的是,如果某次心跳请求处理失败,所述电子设备可能将客户端判定为离线状态,因此,为了增加心跳请求失败的容错性,以防止误判,所述电子设备配置所述次数,也就是说,当所述次数小于或者等于配置值时,所述电子设备尝试继续判定所述目标客户端的状态,而不是直接将所述目标客户端判定为离线状态。

例如:所述次数可以配置为2或3。

具体地,所述次数可以配置为n=e/t-1,其中,e为缓存有效期,t为心跳周期。

因此,为了增加心跳请求失败的容错性,可以配置较长的e,但是,e的取值越大,n就越大,误判范围越大。经过数据的大量运行,可以将n配置为2或3,此时,e取一个最小值。

例如:t=30s时,当n=2时,e=91s;当n=3时,e=121s。

在本发明的至少一个实施例中,在判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

(1)计算预设时间范围内,所述目标客户端处于在线状态的总时长。

(2)计算所述预设时间范围内,所述目标客户端处于在线状态的在线天数,确定所述预设时间范围所包括的总天数,根据所述在线天数及所述总天数,计算所述目标客户端在所述预设时间范围内的在线率。

(3)获取所述所有客户端,判定所述所有客户端中每个客户端的状态,根据每个客户端的状态确定所述所有客户端中处于在线状态的在线客户端数量,及处于离线状态的离线客户端数量。

通过上述事实方式,能够对单个用户的在线时长、在线率、在线数量等分别进行统计,便于对客户端的在线情况进行分析,以便对异常情况进行及时维护。

综上所述,本发明能够当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求,从而以短连接协议建立连接,并从所述心跳请求中获取心跳参数,进一步在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果,并根据所述检测结果,判定所述心跳参数对应的目标客户端的状态,从而实现短连接协议下,客户端状态的有效判定。

参见图2,在本实施例中,所述电子设备1是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。

所述电子设备1还可以是但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机(personalcomputer,pc)、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)、游戏机、交互式网络电视(internetprotocoltelevision,iptv)、智能式穿戴式设备、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备、桌上型计算机、云端服务器等计算设备等。

所述电子设备1所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。

所述电子设备1可以是组成内容分发网络或者区块链网络的节点。

所述电子设备1可以包括存储器12、处理器13和总线,还可以包括存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如状态判定程序。

本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备1还可以包括输入输出设备、网络接入设备等。

其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器12还可以既包括电子设备1的内部存储单元也包括外部存储设备。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如状态判定程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器13在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器12中存储的程序代码或处理数据,例如执行状态判定程序等。

所述处理器13执行所述电子设备1的操作系统以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个状态判定方法实施例中的步骤,例如图1所示的步骤s10、s11、s12、s13。

或者,所述处理器13执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如:当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求;从所述心跳请求中获取心跳参数;在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果;根据所述检测结果,判定所述心跳参数对应的目标客户端的状态。

该总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一根箭头表示,但并不表示仅有一根总线或一种类型的总线。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备1中的执行过程。例如,所述计算机程序可以被分割成接受单元110、获取单元111、检测单元112、判定单元113、确定单元114、建立单元115、存储单元116、配置单元117、计算单元118及构建单元119。

进一步地,电子设备还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。

可选地,该电子设备1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。

所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。

其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

图2仅示出了具有组件12-13,以及状态判定程序的电子设备1,本领域技术人员可以理解的是,图2示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

结合图1,所述电子设备1中的所述存储器12存储多个指令以实现一种状态判定方法,所述处理器13可执行所述多个指令从而实现:当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求;从所述心跳请求中获取心跳参数;在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果;根据所述检测结果,判定所述心跳参数对应的目标客户端的状态。

根据本发明优选实施例,所述心跳参数包括所述目标客户端的标识、所述目标客户端的类型,所述处理器13还执行多个指令包括:

获取可连接的所有客户端;

确定所述所有客户端中每个客户端的标识及类型;

根据每个客户端的标识及类型,建立每个客户端的标记值;

存储每个标记值至所述缓存服务器中;

为每个标记值配置心跳周期及缓存有效期。

根据本发明优选实施例,所述处理器13还执行多个指令包括:

当检测到所述目标标记值存在时,确定所述目标客户端处于在线状态;或者

当检测到所述目标标记值不存在时,确定所述目标客户端处于离线状态。

根据本发明优选实施例,所述处理器13还执行多个指令包括:

从所述缓存服务器中获取所述目标标记值的目标心跳周期及目标缓存有效期;

计算所述目标缓存有效期与所述目标心跳周期的差值;

以所述差值为最小值,及以所述目标心跳周期为最大值,构建所述目标客户端的状态所对应的误判时间范围。

根据本发明优选实施例,所述处理器13还执行多个指令包括:

获取所述心跳请求接受失败的次数;

当所述次数小于或者等于配置值时,继续判定所述目标客户端的状态。

根据本发明优选实施例,所述处理器13还执行多个指令包括:

计算预设时间范围内,所述目标客户端处于在线状态的总时长;及/或

计算所述预设时间范围内,所述目标客户端处于在线状态的在线天数,确定所述预设时间范围所包括的总天数,根据所述在线天数及所述总天数,计算所述目标客户端在所述预设时间范围内的在线率;及/或

获取所述所有客户端,判定所述所有客户端中每个客户端的状态,根据每个客户端的状态确定所述所有客户端中处于在线状态的在线客户端数量,及处于离线状态的离线客户端数量。

参照图3,为本发明状态判定系统的功能模块示意图。所述状态判定系统11包括接受单元110、获取单元111、检测单元112、判定单元113、确定单元114、建立单元115、存储单元116、配置单元117、计算单元118及构建单元119。本发明所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机程序段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。

当检测到心跳请求时,接受单元110采用超文本传输协议(hypertexttransferprotocol,http)及/或超文本传输安全协议(hypertexttransferprotocolsecure,https)接受所述心跳请求。

在本发明的至少一个实施例中,所述心跳请求是基于一种心跳机制,所述心跳机制是指定时发送一个自定义的结构体(心跳包,即所述心跳请求),让对方知道自己还活着,以确保连接的有效性的机制。

具体地,所述心跳请求一般都是很小的包,或者是只包含包头的一个空包。

在本发明的至少一个实施例中,所述超文本传输协议及/或超文本传输安全协议是一种短连接协议。并且,在采用所述超文本传输协议及/或超文本传输安全协议连接时,无法获取到客户端的在线或者离线状态,也就无法进行用户使用状态或者客户端连接状态的统计分析。

在本发明的至少一个实施例中,所述方法还包括:

获取单元111获取可连接的所有客户端,确定单元114确定所述所有客户端中每个客户端的标识及类型,进一步地,建立单元115根据每个客户端的标识及类型,建立每个客户端的标记值,存储单元116存储每个标记值至缓存服务器(cacheserver)中,配置单元117为每个标记值配置心跳周期及缓存有效期。

例如:所述标记值可以配置为key,并以任意值为value。此时,如果一个客户端的标识为a,且所述客户端的类型为x,则将所述客户端的标记值建立为a_x。

具体地,所述缓存服务器是指存放频繁访问内容的服务器。所述缓存服务器能够自动清理冗余数据,避免造成服务器资源紧张,影响服务器的正常运行。

进一步地,客户端根据所述心跳周期,定期发起所述心跳请求,所述心跳周期可以进行自定义配置,本发明不限制。例如:所述心跳周期可以是30秒、1分钟、3分钟等,并且,所述心跳周期的长短将影响所述心跳请求的处理量和离线状态更新的延迟。

相应地,为了更有效地判定客户端的状态,将所述缓存有效期配置为一个大于所述心跳周期的数值。例如:当所述心跳周期为30秒时,所述缓存有效期可以配置为60秒。

在本发明的至少一个实施例中,每个客户端的标识可以包括,但不限于以下一种或者多种情况的组合:

(1)在有用户登陆态的产品中,客户端一般都会有一个表明登陆身份的令牌(token),通过所述token,所述获取单元111可以获取当前登陆的用户id(identification)等唯一标识,作为客户端的标识。

(2)在没有用户登陆态的产品中,以配置协议来约定,例如:对于手机和平板电脑等移动设备,可以用设备号作为客户端的标识,而对于web浏览器,可以取客户端ip(internetprotocoladdress,互联网协议地址)作为客户端的标识等。

在本发明的至少一个实施例中,由于一个用户可能同时在pc(personalcomputer,个人计算机)端、web(worldwideweb,全球广域网)浏览器、手机端app、平板端app等不同类型的设备上在线,因此,当需要区分用户在哪种终端上在线时,则要确定客户端的类型,因此,所述建立单元115以客户端的类型作为一个参数建立每个客户端的标记值。

所述获取单元111从所述心跳请求中获取心跳参数。

在本发明的至少一个实施例中,所述心跳请求中包括所述心跳参数。

进一步地,所述心跳参数包括目标客户端的标识、所述目标客户端的类型。

其中,所述目标客户端是指正在进行状态判定的客户端。

检测单元112在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果。

在本发明的至少一个实施例中,所述检测结果包括,但不限于以下任意一种情况:

(1)所述目标标记值存在。

(2)所述目标标记值不存在。

可以理解的是,针对不同的检测结果,将对所述目标客户端的状态进行不同的判断。

根据所述检测结果,判定单元113判定所述心跳参数对应的目标客户端的状态。

在本发明的至少一个实施例中,所述判定单元113根据所述检测结果,判定所述心跳参数对应的目标客户端的状态包括:

(1)当检测到所述目标标记值存在时,所述判定单元113确定所述目标客户端处于在线状态。

例如:当所述缓存服务器中的键a_x存在时,所述判定单元113确定a当前在线,且在线的设备类型为x。

(2)当检测到所述目标标记值不存在时,所述判定单元113确定所述目标客户端处于离线状态。

例如:当所述缓存服务器中的键a_x不存在时,所述判定单元113确定a在设备类型x上处于离线状态。

通过上述实施方式,所述判定单元113能够实现对客户端的状态进行自动判断。

在本发明的至少一个实施例中,在根据所述检测结果,判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

所述获取单元111从所述缓存服务器中获取所述目标标记值的目标心跳周期及目标缓存有效期,计算单元118计算所述目标缓存有效期与所述目标心跳周期的差值,构建单元119以所述差值为最小值,及以所述目标心跳周期为最大值,构建所述目标客户端的状态所对应的误判时间范围。

例如:当所述目标客户端下线之后,cache服务器中的a_x最长需要等待60s(下线前刚发送完心跳),且最短需要等待30s(下线前30s即将准备发送心跳)后才会过期,因此这段时间内,所述目标客户端实际已经离线,但是会被判定为在线,具体误判时间范围m跟所述目标心跳周期t和所述目标缓存有效期e相关,公式为:e-t<m<e。

通过上述实施方式,所述判定单元113在进行客户端的状态判定时,能够容忍对离线状态判定的延迟性。

在本发明的至少一个实施例中,所述方法还包括:

所述获取单元111获取所述心跳请求接受失败的次数,当所述次数小于或者等于配置值时,所述判定单元113继续判定所述目标客户端的状态。

可以理解的是,如果某次心跳请求处理失败,所述判定单元113可能将客户端判定为离线状态,因此,为了增加心跳请求失败的容错性,以防止误判,所述配置单元117配置所述次数,也就是说,当所述次数小于或者等于配置值时,所述判定单元113尝试继续判定所述目标客户端的状态,而不是直接将所述目标客户端判定为离线状态。

例如:所述次数可以配置为2或3。

具体地,所述次数可以配置为n=e/t-1,其中,e为缓存有效期,t为心跳周期。

因此,为了增加心跳请求失败的容错性,可以配置较长的e,但是,e的取值越大,n就越大,误判范围越大。经过数据的大量运行,可以将n配置为2或3,此时,e取一个最小值。

例如:t=30s时,当n=2时,e=91s;当n=3时,e=121s。

在本发明的至少一个实施例中,在判定所述心跳参数对应的目标客户端的状态后,所述方法还包括:

(1)所述计算单元118计算预设时间范围内,所述目标客户端处于在线状态的总时长。

(2)所述计算单元118计算所述预设时间范围内,所述目标客户端处于在线状态的在线天数,所述确定单元114确定所述预设时间范围所包括的总天数,根据所述在线天数及所述总天数,所述计算单元118计算所述目标客户端在所述预设时间范围内的在线率。

(3)所述获取单元111获取所述所有客户端,所述判定单元113判定所述所有客户端中每个客户端的状态,所述确定单元114根据每个客户端的状态确定所述所有客户端中处于在线状态的在线客户端数量,及处于离线状态的离线客户端数量。

通过上述事实方式,能够对单个用户的在线时长、在线率、在线数量等分别进行统计,便于对客户端的在线情况进行分析,以便对异常情况进行及时维护。

综上所述,本发明能够当检测到心跳请求时,采用超文本传输协议及/或超文本传输安全协议接受所述心跳请求,从而以短连接协议建立连接,并从所述心跳请求中获取心跳参数,进一步在缓存服务器中检测与所述心跳参数对应的目标标记值,得到检测结果,并根据所述检测结果,判定所述心跳参数对应的目标客户端的状态,从而实现短连接协议下,客户端状态的有效判定。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、移动硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态移动硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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