来自各个在线用户终端的打点请求。通过多台前端打点服务器并行处理的方式能够提高服务器的处理速度,缩短服务器的响应时间,从而更好地服务于更多的用户终端。
[0036]步骤S320:每台前端打点服务器将根据打点请求中包含的打点数据获得的用户在线状态信息发送给供多台前端打点服务器共享的后端存储数据库。
[0037]其中,打点请求中包含的打点数据可以包括:用户终端标识以及该用户终端当前在线的应用类型标识;其中,所述用户终端当前在线的应用类型标识为一个或多个,且每个应用类型标识中进一步包含一种或多种应用信息。
[0038]步骤S330:由后端存储数据库对用户在线状态信息进行统计及存储。
[0039]其中,后端存储数据库为一台或多台SSDB服务器,由于SSDB服务器为高性能数据库服务器,其能够提供内存式存储服务,且支持扩容,能够在存储容量不足时通过挂接一台SSDB服务器来实现扩容存储方案,从而实现存储容量的自由扩展。因此,通过后端存储数据库能够存储海量的用户在线状态信息。
[0040]图4示出了本发明一个具体实施例提供的用户在线状态统计方法的流程图。该具体实施例可应用于图2所示的系统中。如图4所示,该方法包括如下步骤:
[0041]步骤S410:每个在线用户终端在其在线期间,每隔预设时间间隔发送一次打点请求。
[0042]例如,假设一个在线用户终端于上午9:00时启动了网络游戏“黑暗之光”以及网络直播“熊猫直播”,并在9:30时退出了网络游戏“黑暗之光”,继续观看网络直播“熊猫直播”,并在9:40时退出了网络直播“熊猫直播”。因此,在9:00-9:30的这段时间里,该在线用户终端每隔240秒向服务器发送一次打点请求,每次发送的打点请求中所包含的打点数据包括如下内容:(1)该在线用户终端的用户终端标识,用以唯一识别该用户,例如为用户名或用户ID ;(2)该用户终端当前在线的应用类型标识一:网络游戏“黑暗之光”,在该应用类型标识中,进一步包括下述多种应用信息:游戏名称“黑暗之光”、游戏区服S1、游戏平台二;(3)该用户终端当前在线的应用类型标识二:网络直播“熊猫直播”,在该应用类型标识中,进一步包括下述应用信息:房间号四;(4)发送本次打点请求时的时间戳信息。在9:30-9:40的这段时间里,该在线用户终端仍然每隔240秒向服务器发送一次打点请求,但每次发送的打点请求中包含的打点数据中仅包括如下内容:(1)该在线用户终端的用户终端标识,用以唯一识别该用户,例如为用户名或用户ID;(2)该用户终端当前在线的应用类型标识:网络直播“熊猫直播”,在该应用类型标识中,进一步包括下述一种应用信息:房间号四;(3)发送打点请求时的时间戳信息。
[0043]步骤S420:分发服务器接收各个在线用户终端发来的打点请求,并根据预设策略将每次接收到的打点请求分发给多台前端打点服务器中的一台前端打点服务器处理。
[0044]其中,预设策略可以是以下策略中的一个或多个:(1)按照预设顺序将各次接收到的打点请求轮流发送给各台前端打点服务器。例如,假设并行工作的前端打点服务器为A、B、C三台服务器,预设顺序可以是A-B-C依次循环。⑵按照随机方式将各次接收到的打点请求随机发送给各台前端打点服务器。具体地,可以通过一定的随机算法来确定随机发送的目的地址。(3)预先设置各个用户终端和/或各类应用与各台前端打点服务器之间的映射关系,根据映射关系将打点请求发送给对应的前端打点服务器。例如,可以根据用户终端所处的地域性或用户等级等特征将用户终端划分为多个类别,每一前端打点服务器固定负责设定类别的用户终端发来的打点请求;和/或,也可以根据打点请求中包含的应用类型标识对打点请求进行分类,每一前端打点服务器固定负责包含设定应用类型标识的打点请求。上述几种策略既可以单独使用,也可以结合使用。除上述三种策略外,本领域技术人员还可以灵活设定其他策略,只要能够使每一次发送的打点请求落在多台前端打点服务器中的某一台上即可。
[0045]步骤S430:前端打点服务器根据分发服务器发来的打点请求中包含的打点数据获取用户在线状态信息,并将获取到的用户在线状态信息发送给后端存储数据库。
[0046]继续参照步骤S410中提到的例子来描述前端打点服务器获取用户在线状态信息的方式:由于在9:00-9:30的这段时间里,上述在线用户终端每隔240秒向服务器发送一次打点请求,且在每次发送的打点请求中均包含网络游戏“黑暗之光”以及网络直播“熊猫直播”的应用类型标识,因此,前端打点服务器确定该用户终端在9:00-9:30的这段时间里处于网络游戏“黑暗之光”以及网络直播“熊猫直播”同时在线状态;在9:30-9:40的这段时间里,该在线用户终端仍每隔240秒向服务器发送一次打点请求,但在每次发送的打点请求中仅包含网络直播“熊猫直播”的应用类型标识,因此,服务器确定该用户终端在9:30-9:40的这段时间里处于网络直播“熊猫直播”在线状态;在9:40之后,该用户终端不再向服务器发送打点请求,服务器判断该用户终端长时间没有发送打点请求,因而确定其已处于离线状态。具体地,服务器可以预先设定一个超时阈值(例如10分钟),将超过该超时阈值没有发送打点请求的用户终端确定为离线状态。
[0047]另外,前端打点服务器每次接收到打点请求并进行处理时,可以通过设置在本台服务器内存中的定时器来确定本次接收到打点请求的时间信息,并将该时间信息一并保存在该用户的用户在线状态信息中。具体地,在某一用户的用户在线状态信息中包括:该用户终端标识以及与该用户终端标识对应的在线时间段信息、在线应用类型标识等。前端打点服务器将生成的各个用户的用户在线状态信息发送给后端存储数据库,由后端存储数据库进行统一存储。
[0048]步骤S440:后端存储数据库对前端打点服务器发来的用户在线状态信息进行存储。
[0049]其中,后端存储数据库为多台能够扩容的SSDB服务器,供各台前端打点服务器所共享。由于SSDB服务器能够将原本存储在内存中的数据内容存储在磁盘上,因此避免了对内存的大量占用,且存储容量也不再受到内存容量的制约,能够存储更多的数据内容。而且,SSDB服务器可支持扩容,当一台SSDB服务器的容量不够用时,可以通过挂接一台SSDB服务器的方式实现扩容。因此,通过SSDB服务器实现的后端存储数据库能够存储海量的用户在线状态信息,使本系统能够统计的同时在线的用户数量不再受到内存容量的制约。具体存储时,后端存储数据库可以通过键值对(key-value)的方式来存储用户在线状态信息,例如,将用户终端标识作为键(key),将该用户终端标识对应的在线状态作为值(value),通过这种方式来存储数据能够提高查询速度。
[0050]步骤S450:通过查询服务器接收查询请求,查询后端存储数据库中存储的用户在线状态信息,并返回与该查询请求相对应的查询结果。其中,查询请求包括:用于查询指定用户终端当前是否在线的查询请求、用于查询指定用户终端在线时间段的查询请求、以及用于查询指定应用在指定时间段内的在线用户数的查询请求等。
[0051]在本发明提供的用户在线状态统计系统及方法中,通过多台前端打点服务器接收来自各个在线用户终端的打点请求,并将根据打点请求中包含的打点数据获得的用户在线状态信息存储到供多台前端打点服务器所共享的后端存储数据库中。由此可见,在本发明中,一方面,前端打点服务器的数量为多台,从而能够以并行方式处理各个在线用户终端发来的打点请求,大幅提高了打点服务器的处理速度,缩短了响应时间,能够同时服务于更多的用户终端。另一方面,通过后端存储方式代替了传统的内存存储方式,其中后端存储数据库通过一台或多台SSDB服务器实现,且能够供多台前端打点服务器所共享。由于SSDB服务器本身就是一种高性能的数据库服务器,其存储容量远大于普通服务器的内存容量,且SSDB服务器还能够支持扩容,当一台SSDB服务器的存储容量不够用时,能够再挂接一个SSDB服务器,从而实现存储容量的自由扩展,由此能够存储海量的用户在线状态信息。因而,本发明中的用户在线状态统计系统及方法能够适应互联网用户大规模增长的需求。
[0052]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0053]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0054]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图: