CN103684911A - 一种网站的在线用户统计方法和装置 - Google Patents

一种网站的在线用户统计方法和装置 Download PDF

Info

Publication number
CN103684911A
CN103684911A CN201310652889.7A CN201310652889A CN103684911A CN 103684911 A CN103684911 A CN 103684911A CN 201310652889 A CN201310652889 A CN 201310652889A CN 103684911 A CN103684911 A CN 103684911A
Authority
CN
China
Prior art keywords
user
timer
heap
heartbeat message
online
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310652889.7A
Other languages
English (en)
Other versions
CN103684911B (zh
Inventor
左文建
曲文庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310652889.7A priority Critical patent/CN103684911B/zh
Publication of CN103684911A publication Critical patent/CN103684911A/zh
Priority to PCT/CN2014/083637 priority patent/WO2015081715A1/zh
Application granted granted Critical
Publication of CN103684911B publication Critical patent/CN103684911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)

Abstract

本发明公开了一种网站的在线用户统计方法和装置。所述方法包括:创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。本发明的技术方案,大大提高了在线用户统计的效率和性能。

Description

一种网站的在线用户统计方法和装置
技术领域
本发明涉及互联网技术领域,具体涉及一种网站的在线用户统计方法和装置。
背景技术
目前,各类网站都需要统计网站的实时在线用户,并触发用户上线、下线的事件。但同时在线用户数达到万级时,实时统计将变得是一件困难的事情。
例如:在线用户向在线统计服务发送心跳,当第一次发送心跳,即表示用户上线,当超过3次心跳间隔,未收到心跳信号即判定用户下线。如果网站平台当前有120万用户在线,每10秒发送一次心跳。那么在线统计服务要求达到12万QPS(每秒查询率,Query Per Second)。普通的WEB服务(1000QPS)将需要120组服务才可以承接。
现有技术中,将用户的心跳信息以session的方式,记录到数据库中。用户再次发送心跳时延长session生命周期,当无心跳信息并且经过一定时间后,自动删除session,这需要逐个查询数据库中的各session生命周期,查询量非常大。这种方案基于数据库进行存储,大量的查询导致性能低下。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种网站的在线用户统计方法和装置。
依据本发明的一个方面,提供了一种网站的在线用户统计方法,该方法包括:
创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。
可选地,该方法进一步包括:根据用户标识将用户分为多个组,设置与所述多个组一一对应的多个处理线程;
在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程;
所述根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知的步骤由对应的处理线程进行处理。
可选地,所述将该心跳消息转发给对应的处理线程包括:根据UDP协议将心跳消息转发给对应的处理线程。
可选地,所述在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程的步骤,由Nginx服务器完成。
可选地,所述创建用于存储在线用户的定时器的堆包括:在内存中创建用于存储在线用户的定时器的堆。
可选地,该方法进一步包括:利用哈希表建立堆中定时器和用户标识之间的对应关系。
可选地,所述创建用于存储在线用户的定时器的堆包括:
创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;
或者,
创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
依据本发明的另一个方面,提供了一种网站的在线用户统计装置,该装置包括:
堆创建单元,适于创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
在线用户统计单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并触发用户状态事件接口单元发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
用户状态事件接口单元,适于根据在线用户统计单元的触发发送用户的上线通知和下线通知。
可选地,所述在线用户统计单元包括:心跳消息接收单元和多个心跳消息处理单元;其中,根据用户标识将用户分为多个组,所述多个心跳消息处理单元与所述多个组一一对应;
心跳消息接收单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的心跳消息处理单元;
心跳消息处理单元,适于所接收根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知。
可选地,所述心跳消息接收单元,适于根据UDP协议将心跳消息转发给对应的心跳消息处理单元。
可选地,所述心跳消息接收单元是在Nginx服务器上实现的。
可选地,所述堆创建单元,适于在内存中创建用于存储在线用户的定时器的堆。
可选地,所述堆创建单元,进一步创建用于保存堆中定时器和用户标识之间的对应关系的哈希表。
可选地,所述堆创建单元,适于创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;或者,适于创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
根据本发明的这种创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知的技术方案,由于采用堆来存储在线用户的定时器,根据堆的特性,当定时器将要超时时会自动到达堆顶,因此能够方便地获知下线用户,无需逐个查询,大大提高了性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种网站的在线用户统计方法的流程图;
图2示出了根据本发明又一个实施例的一种网站的在线用户统计方法的示意图;
图3示出了根据本发明一个实施例的一种网站的在线用户统计装置的结构图;
图4示出了根据本发明一个实施例的图3所示在线用户统计单元320的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种网站的在线用户统计方法的流程图。如图1所示,其中,该方法包括:
步骤S110,创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
步骤S120,在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
步骤S130,当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。
在图1所示的方法中,由于采用堆来存储在线用户的定时器,根据堆的特性,当定时器将要超时时会自动到达堆顶,因此能够方便地获知下线用户,无需逐个查询,大大提高了性能。
需要说明的是,上述步骤S120和步骤S130之间没有严格的先后顺序之分,都是在满足条件时执行。例如步骤S120是在接收到包含用户标识的心跳消息时执行,步骤S130是当堆中的定时器超时到达堆顶时执行。
以下以图2为例,对上述方法进行进一步的说明。
图2示出了根据本发明又一个实施例的一种网站的在线用户统计方法的示意图。该方法需要创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器。如图2所示,该方法的流程包括:
步骤S210,心跳消息接收线程接收到在线用户的包含用户标识的心跳消息。其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息。
步骤S220,将包含用户标识的心跳消息发送给处理线程。
步骤S230,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器。
步骤S240,根据是否存在该用户的定时器分为两种情况:
S2401,如果该用户的定时器不存在,则在堆中添加该用户的定时器,并发送该用户的上线通知;
S2402,如果该用户的定时器存在,则延迟该定时器一定时间。
步骤S250-S270,当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。
这里所述的堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者。最小堆:根结点的键值是所有堆结点键值中最小者。
图2所示的方法中,由于采用堆来存储在线用户的定时器,根据堆的特性,当定时器将要超时时会自动到达堆顶,因此能够方便地获知下线用户,无需逐个查询,大大提高了性能。
在本发明的一个实施例中,图2所示的方法进一步包括:根据用户标识将用户分为多个组,设置与所述多个组一一对应的多个处理线程;心跳消息接收线程在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程;根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知的步骤由对应的处理线程进行处理。
这种将用户基于用户标识分为多个组,并设置多个处理线程来分别处理多个组的用户的心跳消息的方案,使得对心跳消息的处理更加及时,能承担的QPS更高。
在本发明的一个实施例中,心跳消息接收线程将该心跳消息转发给对应的处理线程包括:根据UDP协议将心跳消息转发给对应的处理线程。这有效提高了内部的数据传输效率。
在本发明的一个实施例中,图2所示方法中的所述在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程的步骤,由Nginx服务器完成。Nginx服务器的性能高,可以提高处理效率。
在本发明的一个实施例中,图2所示方法中,在内存中创建用于存储在线用户的定时器的堆。这样,对定时器的查询和读取速度更加快速。
在本发明的一个实施例中,图2所示方法进一步包括:利用哈希表建立堆中定时器和用户标识之间的对应关系。这样,能够实现更加快速的查询。
在本发明的一个实施例中,在图2所示方法中,创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;或者,创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
图3示出了根据本发明一个实施例的一种网站的在线用户统计装置的结构图。如图3所示,该网站的在线用户统计装置300包括:
堆创建单元310,适于创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
在线用户统计单元320,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并触发用户状态事件接口单元发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
用户状态事件接口单元330,适于根据在线用户统计单元的触发发送用户的上线通知和下线通知。
图3所示的装置,由于采用堆来存储在线用户的定时器,根据堆的特性,当定时器将要超时时会自动到达堆顶,因此能够方便地获知下线用户,无需逐个查询,大大提高了性能。
图4示出了根据本发明一个实施例的图3所示在线用户统计单元320的结构图。如图4所示,在本发明的一个实施例中,所述在线用户统计单元320包括:心跳消息接收单元3200和多个心跳消息处理单元;在图4中画出了三个心跳消息处理单元,分别用3201、3202和3203进行标记。其中,根据用户标识将用户分为多个组,所述多个心跳消息处理单元与所述多个组一一对应;
心跳消息接收单元3200,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的心跳消息处理单元;
心跳消息处理单元,适于所接收根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知。
这种将用户基于用户标识分为多个组,并设置多个心跳消息处理单元来分别处理多个组的用户的心跳消息的方案,使得对心跳消息的处理更加及时,能承担的QPS更高。
在本发明的一个实施例中,所述心跳消息接收单元3200,适于根据UDP协议将心跳消息转发给对应的心跳消息处理单元。这有效提高了内部的数据传输效率。
在本发明的一个实施例中,所述心跳消息接收单元3200是在Nginx服务器上实现的。Nginx服务器的性能高,可以提高处理效率。
在本发明的一个实施例中,所述堆创建单元310,适于在内存中创建用于存储在线用户的定时器的堆。这样,对定时器的查询和读取速度更加快速。
在本发明的一个实施例中,所述堆创建单元310,进一步创建用于保存堆中定时器和用户标识之间的对应关系的哈希表。
在本发明的一个实施例中,所述堆创建单元310,适于创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;或者,适于创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
综上所述,根据本发明的这种创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知的技术方案,由于采用堆来存储在线用户的定时器,根据堆的特性,当定时器将要超时时会自动到达堆顶,因此能够方便地获知下线用户,无需逐个查询,大大提高了性能。
并且,本发明中的采用Nginx服务器、在内存中创建堆等的方案进一步提高了性能,可以以很少的服务器,对百万级同时在线用户进行实时统计,并且触发用户上下线事件。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网站的在线用户统计装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种网站的在线用户统计方法,该方法包括:
创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。
A2、如A1所述的方法,其中,该方法进一步包括:根据用户标识将用户分为多个组,设置与所述多个组一一对应的多个处理线程;在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程;所述根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知的步骤由对应的处理线程进行处理。
A3、如A2所述的方法,其中,所述将该心跳消息转发给对应的处理线程包括:根据UDP协议将心跳消息转发给对应的处理线程。
A4、如A2所述的方法,其中,
所述在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程的步骤,由Nginx服务器完成。
A5、如A1所述的方法,其中,所述创建用于存储在线用户的定时器的堆包括:在内存中创建用于存储在线用户的定时器的堆。
A6、如A1所述的方法,其中,该方法进一步包括:利用哈希表建立堆中定时器和用户标识之间的对应关系。
A7、如A1所述的方法,其中,所述创建用于存储在线用户的定时器的堆包括:创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;或者,创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
本发明还公开了B8、一种网站的在线用户统计装置,该装置包括:堆创建单元,适于创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;在线用户统计单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并触发用户状态事件接口单元发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;用户状态事件接口单元,适于根据在线用户统计单元的触发发送用户的上线通知和下线通知。
B9、如B8所述的装置,其中,所述在线用户统计单元包括:心跳消息接收单元和多个心跳消息处理单元;其中,根据用户标识将用户分为多个组,所述多个心跳消息处理单元与所述多个组一一对应;心跳消息接收单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的心跳消息处理单元;心跳消息处理单元,适于所接收根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知。
B10、如B9所述的装置,其中,所述心跳消息接收单元,适于根据UDP协议将心跳消息转发给对应的心跳消息处理单元。
B11、如B9所述的装置,其中,所述心跳消息接收单元是在Nginx服务器上实现的。
B12、如B8所述的装置,其中,所述堆创建单元,适于在内存中创建用于存储在线用户的定时器的堆。
B13、如B8所述的装置,其中,所述堆创建单元,进一步创建用于保存堆中定时器和用户标识之间的对应关系的哈希表。
B14、如B8至B13中任一项所述的装置,其中,所述堆创建单元,适于创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;或者,适于创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。

Claims (10)

1.一种网站的在线用户统计方法,其中,该方法包括:
创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并发送该定时器所对应的用户的下线通知。
2.如权利要求1所述的方法,其中,该方法进一步包括:根据用户标识将用户分为多个组,设置与所述多个组一一对应的多个处理线程;
在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程;
所述根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知的步骤由对应的处理线程进行处理。
3.如权利要求2所述的方法,其中,所述将该心跳消息转发给对应的处理线程包括:
根据UDP协议将心跳消息转发给对应的处理线程。
4.如权利要求2所述的方法,其中,
所述在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的处理线程的步骤,由Nginx服务器完成。
5.如权利要求1所述的方法,其中,所述创建用于存储在线用户的定时器的堆包括:
在内存中创建用于存储在线用户的定时器的堆。
6.如权利要求1所述的方法,其中,该方法进一步包括:利用哈希表建立堆中定时器和用户标识之间的对应关系。
7.如权利要求1所述的方法,其中,所述创建用于存储在线用户的定时器的堆包括:
创建用于存储在线用户的定时器的最小堆,最小堆中的定时器是递减定时器;
或者,
创建用于存储在线用户的定时器的最大堆,最大堆中的定时器是递增定时器。
8.一种网站的在线用户统计装置,其中,该装置包括:
堆创建单元,适于创建用于存储在线用户的定时器的堆,堆中的每个节点对应一个在线用户的定时器;
在线用户统计单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并触发用户状态事件接口单元发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知;其中,对于每个在线用户每隔预设时间发送一次该用户的心跳消息;
用户状态事件接口单元,适于根据在线用户统计单元的触发发送用户的上线通知和下线通知。
9.如权利要求8所述的装置,其中,所述在线用户统计单元包括:心跳消息接收单元和多个心跳消息处理单元;其中,根据用户标识将用户分为多个组,所述多个心跳消息处理单元与所述多个组一一对应;
心跳消息接收单元,适于在接收到包含用户标识的心跳消息时,根据心跳消息中的用户标识将该心跳消息转发给对应的心跳消息处理单元;
心跳消息处理单元,适于所接收根据心跳消息中的用户标识查看堆中是否存在该用户的定时器;如果存在则延迟该定时器一定时间;如果不存在则在堆中添加该用户的定时器,并发送该用户的上线通知;当堆中的定时器超时到达堆顶时,从堆中删除该定时器,并触发用户状态事件接口单元发送该定时器所对应的用户的下线通知。
10.如权利要求9所述的装置,其中,
所述心跳消息接收单元,适于根据UDP协议将心跳消息转发给对应的心跳消息处理单元。
CN201310652889.7A 2013-12-05 2013-12-05 一种网站的在线用户统计方法和装置 Active CN103684911B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310652889.7A CN103684911B (zh) 2013-12-05 2013-12-05 一种网站的在线用户统计方法和装置
PCT/CN2014/083637 WO2015081715A1 (zh) 2013-12-05 2014-08-04 一种网站的在线用户统计方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310652889.7A CN103684911B (zh) 2013-12-05 2013-12-05 一种网站的在线用户统计方法和装置

Publications (2)

Publication Number Publication Date
CN103684911A true CN103684911A (zh) 2014-03-26
CN103684911B CN103684911B (zh) 2017-05-03

Family

ID=50321290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310652889.7A Active CN103684911B (zh) 2013-12-05 2013-12-05 一种网站的在线用户统计方法和装置

Country Status (2)

Country Link
CN (1) CN103684911B (zh)
WO (1) WO2015081715A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015081715A1 (zh) * 2013-12-05 2015-06-11 北京奇虎科技有限公司 一种网站的在线用户统计方法和装置
WO2016086345A1 (zh) * 2014-12-01 2016-06-09 华为技术有限公司 心跳包定时器的识别方法和设备
CN106571973A (zh) * 2016-09-28 2017-04-19 杭州鸿雁智能科技有限公司 心跳包超时管理方法及系统
CN106789913A (zh) * 2016-11-23 2017-05-31 北京云中融信网络科技有限公司 用户账号管理方法及装置
CN107704533A (zh) * 2017-09-21 2018-02-16 上海斐讯数据通信技术有限公司 一种用户终端在线量统计方法及系统
CN111182464A (zh) * 2019-11-28 2020-05-19 贵阳朗玛信息技术股份有限公司 一种在线采样的方法及装置
CN112738547A (zh) * 2020-12-31 2021-04-30 杭州当虹科技股份有限公司 一种实时统计直播在线人数的系统
CN113014446A (zh) * 2021-02-10 2021-06-22 北京字跳网络技术有限公司 异常离线用户检测方法、装置、服务器、存储介质和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1474241A (zh) * 2002-08-07 2004-02-11 华为技术有限公司 海量定时器的调度方法
US20080059444A1 (en) * 2004-04-05 2008-03-06 Appliede, Inc. Knowledge archival and recollection systems and methods
CN101394307A (zh) * 2008-11-07 2009-03-25 阿里巴巴集团控股有限公司 一种统计在线用户数量的方法、装置及系统
CN101729571A (zh) * 2009-12-28 2010-06-09 广州游家信息技术有限公司 网络在线用户人数统计方法、服务器和系统
CN101917437A (zh) * 2010-08-20 2010-12-15 迈普通信技术股份有限公司 基于sip的用户离线检测方法以及sip用户状态检测系统
CN102647314A (zh) * 2012-05-16 2012-08-22 深圳市乐唯科技开发有限公司 一种客户端在线状态判定方法及其系统
US8296262B1 (en) * 2009-05-04 2012-10-23 United Services Automobile Association (Usaa) Systems and methods for real-time online monitoring of computing devices
CN102761438A (zh) * 2012-05-18 2012-10-31 江苏金马扬名信息技术有限公司 一种网站统计在线用户人数的方法、服务器和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103684911B (zh) * 2013-12-05 2017-05-03 北京奇虎科技有限公司 一种网站的在线用户统计方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1474241A (zh) * 2002-08-07 2004-02-11 华为技术有限公司 海量定时器的调度方法
US20080059444A1 (en) * 2004-04-05 2008-03-06 Appliede, Inc. Knowledge archival and recollection systems and methods
CN101394307A (zh) * 2008-11-07 2009-03-25 阿里巴巴集团控股有限公司 一种统计在线用户数量的方法、装置及系统
US8296262B1 (en) * 2009-05-04 2012-10-23 United Services Automobile Association (Usaa) Systems and methods for real-time online monitoring of computing devices
CN101729571A (zh) * 2009-12-28 2010-06-09 广州游家信息技术有限公司 网络在线用户人数统计方法、服务器和系统
CN101917437A (zh) * 2010-08-20 2010-12-15 迈普通信技术股份有限公司 基于sip的用户离线检测方法以及sip用户状态检测系统
CN102647314A (zh) * 2012-05-16 2012-08-22 深圳市乐唯科技开发有限公司 一种客户端在线状态判定方法及其系统
CN102761438A (zh) * 2012-05-18 2012-10-31 江苏金马扬名信息技术有限公司 一种网站统计在线用户人数的方法、服务器和系统

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015081715A1 (zh) * 2013-12-05 2015-06-11 北京奇虎科技有限公司 一种网站的在线用户统计方法和装置
WO2016086345A1 (zh) * 2014-12-01 2016-06-09 华为技术有限公司 心跳包定时器的识别方法和设备
US10673726B2 (en) 2014-12-01 2020-06-02 Huawei Technologies Co., Ltd. Heartbeat packet timer identification method, and device
CN106571973A (zh) * 2016-09-28 2017-04-19 杭州鸿雁智能科技有限公司 心跳包超时管理方法及系统
CN106789913A (zh) * 2016-11-23 2017-05-31 北京云中融信网络科技有限公司 用户账号管理方法及装置
CN106789913B (zh) * 2016-11-23 2020-02-07 北京云中融信网络科技有限公司 用户账号管理方法及装置
CN107704533A (zh) * 2017-09-21 2018-02-16 上海斐讯数据通信技术有限公司 一种用户终端在线量统计方法及系统
CN107704533B (zh) * 2017-09-21 2021-11-19 上海云淞信息技术有限公司 一种用户终端在线量统计方法及系统
CN111182464A (zh) * 2019-11-28 2020-05-19 贵阳朗玛信息技术股份有限公司 一种在线采样的方法及装置
CN111182464B (zh) * 2019-11-28 2024-01-26 贵阳朗玛信息技术股份有限公司 一种在线采样的方法及装置
CN112738547A (zh) * 2020-12-31 2021-04-30 杭州当虹科技股份有限公司 一种实时统计直播在线人数的系统
CN113014446A (zh) * 2021-02-10 2021-06-22 北京字跳网络技术有限公司 异常离线用户检测方法、装置、服务器、存储介质和系统

Also Published As

Publication number Publication date
WO2015081715A1 (zh) 2015-06-11
CN103684911B (zh) 2017-05-03

Similar Documents

Publication Publication Date Title
CN103684911A (zh) 一种网站的在线用户统计方法和装置
CN111835760B (zh) 报警信息处理方法及装置、计算机存储介质、电子设备
CN110222091A (zh) 一种海量数据实时统计分析方法
CN107147724A (zh) 一种消息推送方法、服务器及计算机可读存储介质
WO2018001078A1 (zh) 一种url匹配方法、装置及存储介质
CN111555963A (zh) 消息推送方法、装置、电子设备及存储介质
CN104253741A (zh) 一种信息发送方法、相关装置及系统
CN102891897A (zh) 网页分享方法和服务器及客户端
CN109756528B (zh) 频率控制方法及装置、设备、存储介质、服务器
CN108390933B (zh) 消息分发方法、装置、服务器及存储介质
CN102984270A (zh) 一种消息推送服务器及方法
CN110995513A (zh) 物联网系统中的数据发送、接收方法、物联网设备及平台
CN105095299A (zh) 图片抓取方法和系统
CN103324713A (zh) 多级服务器中的数据处理方法、装置和数据处理系统
CN103634203A (zh) 消息异步传输方法、装置和系统
CN114048201A (zh) 一种基于分布式流计算引擎Flink的关键字段实时去重方法
CN102957696A (zh) 一种数据处理方法和装置
CN102970377A (zh) 消息推送系统和方法
CN101707598B (zh) 识别洪水攻击的方法、装置及系统
CN111177601A (zh) 页面渲染处理方法、装置、设备及可读存储介质
CN105100216A (zh) 一种多业务的监控方法和装置
CN102413197A (zh) 访问统计处理方法及装置
CN107563942B (zh) 一种物流数据批量处理方法、物流处理系统以及处理装置
CN112966005B (zh) 定时消息发送方法、装置、计算机设备以及存储介质
CN104618219A (zh) 一种进行跨机房数据同步的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220322

Address after: 100016 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right