CN113360783B - 用户在线列表更新方法、装置及计算机设备 - Google Patents

用户在线列表更新方法、装置及计算机设备 Download PDF

Info

Publication number
CN113360783B
CN113360783B CN202110687434.3A CN202110687434A CN113360783B CN 113360783 B CN113360783 B CN 113360783B CN 202110687434 A CN202110687434 A CN 202110687434A CN 113360783 B CN113360783 B CN 113360783B
Authority
CN
China
Prior art keywords
user
time
event
list
updating
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.)
Active
Application number
CN202110687434.3A
Other languages
English (en)
Other versions
CN113360783A (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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202110687434.3A priority Critical patent/CN113360783B/zh
Publication of CN113360783A publication Critical patent/CN113360783A/zh
Application granted granted Critical
Publication of CN113360783B publication Critical patent/CN113360783B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9536Search customisation based on social or collaborative filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种用户在线列表更新方法、装置及计算机设备,该方法包括:采集每一个用户的用户事件,记录为第一时间用户事件集;根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单;根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。本申请还提供一种计算机可读存储介质。本申请能够有效提高用户在线列表更新的更新效率以及实时性。

Description

用户在线列表更新方法、装置及计算机设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种用户在线列表更新方法、装置及计算机设备。
背景技术
随着计算机网络技术的发展以及智能终端的普及,人们的日常交互和沟通也扩展到了网络。人们通常通过网络社区进行各种线上聚会活动,比如视频直播间,聊天室等等。一般来说,大多数的网络社区还会手机该网络社区的用户信息,并以用户在线列表等方式进行展现,让网络社区的用户都能知道彼此的存在,加强了互动感。
在现有技术中,对于网络社区的用户在线列表的生成,需要直播服务器为每隔一段时间拉取一次所有连接到该直播服务器的用户端的用户信息,也就是全量数据,所以用户在线列表的更新频率取决于拉取全量数据的时间间隔,实时性不强。而且,如果并发的连接数很多,每次合并列表的时候会消耗大量计算资源。
也就是说,现有技术中的用户在线列表生成方式,实时性差,效率较低。
发明内容
本申请提出一种用户在线列表更新方法、装置及计算机设备,能够解决现有技术中用户在线列表更新过程中实时性差、更新效率低下的问题。
首先,为实现上述目的,本申请提供一种用户在线列表更新方法,所述方法包括:
采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件;根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID;根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
在一个例子中,所述采集每一个用户的用户事件,记录为第一时间用户事件集包括:通过网关服务器采集每一个用户对应的用户终端触发的用户事件,存储到预设的用户事件队列;对所述用户事件队列中的用户事件进行分拣以得到所述第一时间用户事件集。
在一个例子中,所述根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息包括:根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除,所述目标用户为所述第一时间用户事件集中的任一用户;和/或根据所述第一时间用户事件集中的所述目标用户的断开连接事件对所述第二用户清单中的所述目标用户的用户信息进行删除;和/或根据所述第一时间用户事件集中的所述目标用户的连接事件在所述第二用户清单中增加所述目标用户的用户信息。
在一个例子中,所述根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除包括:若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持;若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除。
在一个例子中,以预设的生命周期将每一个用户对应的用户信息挂载到时间轮的时间格,其中,所述生命周期是心跳周期的预设倍数的时间,所述时间格为根据预设的单位时间将所述时间轮划分而成的;所述若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持,包括:将所述时间轮上的所述目标用户的用户信息重新挂载到第二时间格,所述第二时间格对应的时间比所述第一时间格对应的视角增加了一个所述生命周期;所述若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除,包括:在所述时间轮滚动到所述目标用户的用户信息对应的第一时间格时,将所述时间轮上的所述目标用户的用户信息删除。
在一个例子中,所述级联哈希表包括级联的房间表、用户表和节点表,所述根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单包括:根据所述第一用户信息对所述第二用户清单对应的房间表、用户表和节点表中的用户数据进行更新,从而得到第一用户清单。
在一个例子中,所述排序规则包括:根据在线时长、用户等级、用户网龄中的至少一项对所述第一用户清单中的用户ID进行排序。
此外,为实现上述目的,本申请还提供一种用户在线列表更新装置,所述装置包括:
采集模块,用于采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件;第一更新模块,用于根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;第二更新模块,用于根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID;第三更新模块,用于根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
进一步地,本申请还提出一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的用户在线列表更新方法的步骤。
进一步地,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的用户在线列表更新方法的步骤。
相较于现有技术,本申请所提出的用户在线列表更新方法、装置、计算机设备及计算机可读存储介质,能够采集每一个用户的用户事件,记录为第一时间用户事件集;根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单;根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。通过采集用户事件,根据用户事件更新用户清单,最后再对用户清单的用户ID进行排序以获得用户在线列表,从而实现增量更新用户清单,以实现快速更新用户在线列表。因此,提高了用户在线列表更新的更新效率以及实时性。
附图说明
图1是本申请一实施例的应用环境示意图;
图2是本申请用户在线列表更新方法一具体实施例的流程示意图;
图3是是本申请一示例性例子中对于用户事件进行存储的流程效果图;
图4是本申请一示例性例子中通过级联哈希表结合时间轮的方式用户清单进行更新的流程效果图;
图5是本申请用户在线列表更新装置一实施例的程序模块示意图;
图6是本申请计算机设备一可选的硬件架构的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
图1是本申请一实施例的应用环境示意图。参阅图1所示,多个用户端通过网关服务器连接到事件服务器,事件服务器连接到计算机设备1。所述计算机设备1通过所述网关服务器采集连接到每一个用户端的用户事件,记录为第一时间用户事件集,并存储得到所述事件服务器,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件。接着,根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID。最后,所述计算机设备1根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
当然,在一示例性例子中,所述网关服务器与所述事件服务器之间,还可以设置一个消息队列服务器(图1中未示出),所述消息队列服务器用于将网关服务器采集到的用户事件以消息队列的方式进行存储并分拣,然后再由所述事件服务器对所述消息队列服务器中的用户事件进行消费。
在本实施例中,所述计算机设备1可作为手机、平板、便携设备、PC机或者直播服务器,或者其他具有显示功能的电子设备等;所述事件服务器可作为手机、平板、便携设备、PC机或者服务器等具有存储和数据处理功能的电子设备。所述用户端则可作为手机、平板、便携设备、PC机或者服务器等。其中,所述网关服务器和所述事件服务器也可以与所述计算机设备1集成为一个电子设备。
当然,在其他实施例中,所述网关服务器也可以不直接与所述计算机设备1连接,所述计算机设备1可以通过所述事件服务器获取到所述网关服务器上采集的用户事件。
实施例一
图2是本申请用户在线列表更新方法一实施例的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以图1中的计算机设备1为执行主体进行示例性描述。
如图2所示,所述用户在线列表更新方法可以包括步骤S200~S206。
步骤S200,采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件。
具体的,多个用户端通过网关服务器连接到网络社区所在的服务器,比如直播服务器,然后所述计算机设备1则需要统计出所述网关服务器中的用户在线列表。因此,所述计算机设备1首先需要采集每一个用户的用户事件,记录为第一时间用户事件集,然后再将所述第一时间用户事件集存储到预设的存储单元,比如存储到事件服务器。
在本实施例中,所述计算机设备1采集每一个用户的用户事件,记录为第一时间用户事件集包括:通过网关服务器采集每一个用户对应的用户终端触发的用户事件,存储到预设的用户事件队列;对所述用户事件队列中的用户事件进行分拣以得到所述第一时间用户事件集。接着,所述计算机设备1将所述第一时间用户事件集存储到事件服务器。具体的,所述计算机设备1将从所述网关服务器获取到的所有用户对应的用户端的用户事件全部采集,并存储到预设的用户事件队列,比如预设的队列服务器,所述队列服务器可以对存储到所述队列服务器的用户事件进行分拣,包括将不同用户的用户事件进行归类;然后,所述事件服务器则可以从所述队列服务器中分别拉取每一个用户对应的用户事件进行分别存储;所有用户的新增的用户事件,则记录为第一时间用户事件集。
参阅图3所示,是本申请一示例性例子中对于用户事件进行存储的流程效果图。在本实施例中,所述计算机设备1通过网关服务器接收不同用户端触发的不同用户事件,包括建立连接事件、断开连接事件和心跳包事件。接着,所述用户事件被存储到预设的消息队列,也就是用户事件队列;然后再将消息队列中的用户事件进行分拣并存储到不同的事件服务器。
步骤S202,根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息。
步骤S204,根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID。
具体的,所述第二用户清单或者所述第一用户清单均包括当前连接到网络社区的当前在线用户的用户信息,因此,所述计算机设备1将所述第一时间用户事件集存储到所述事件服务器之后,则会进一步根据所述第一时间用户事件集对预先存储在所述存储单元中的第二用户清单进行更新,得到第一用户清单。在本实施例中,所述计算机设备1根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息包括:根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除,所述目标用户为所述第一时间用户事件集中的任一用户;和/或根据所述第一时间用户事件集中的所述目标用户的断开连接事件对所述第二用户清单中的所述目标用户的用户信息进行删除;和/或根据所述第一时间用户事件集中的所述目标用户的连接事件在所述第二用户清单中增加所述目标用户的用户信息。
其中,所述计算机设备1根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除包括:若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持;若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除。
在一示例性例子中,以预设的生命周期将每一个用户对应的用户信息挂载到时间轮的时间格,其中,所述生命周期是心跳周期的预设倍数的时间,所述时间格为根据预设的单位时间将所述时间轮划分而成的;所述若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持,包括:将所述时间轮上的所述目标用户的用户信息重新挂载到第二时间格,所述第二时间格对应的时间比所述第一时间格对应的视角增加了一个所述生命周期;所述若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除,包括:在所述时间轮滚动到所述目标用户的用户信息对应的第一时间格时,将所述时间轮上的所述目标用户的用户信息删除。
在一示例性例子中,所述级联哈希表包括级联的房间表、用户表和节点表,所述计算机设备1根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单包括:根据所述第一用户信息对所述第二用户清单对应的房间表、用户表和节点表中的用户数据进行更新,从而得到第一用户清单。
参阅图4所示,是本申请一示例性例子中通过级联哈希表结合时间轮的方式用户清单进行更新的流程效果图。
在本实施例中,用户进入网络社区,比如直播间时,用户端则会与网关服务器建立TCP或者WebSocket长连接,当用户离开直播间时断开连接。网关服务器维护与用户端的长连接,为每个长连接生成一个UUID(Universally Unique Identifier,通用唯一识别码),每隔一个心跳周期,比如30秒发送一个心跳包,用户端收到心跳包以后回复一个心跳包,也就是产生了一个心跳包事件。如果预设时间阈值内,比如45秒内没有收到用户端的心跳包,网关服务器主动断开连接。建立连接、断开连接、接收到心跳包三种事件,即建立连接事件、断开连接事件和心跳包事件作为数据源,以用户ID(Identity Document,身份证标识号)作为用户事件队列的哈希键,将用户事件类型(对应于上述的建立连接事件、断开连接事件和心跳包事件)、房间ID、长连接对应的UUID等信息存储到所述用户事件队列。
事件服务器从用户事件队列中消费用户事件,以用户ID作为用户事件队列的哈希键,所以每一位用户产生的事件都会由一台固定的事件服务器处理。
事件服务器通过级联哈希表存储用户数据,用户数据具体体现为用户清单,可用于执行快速搜索。所述级联哈希表包括级联的房间表、用户表和节点表,节点表中存储有节点。其中,房间表存储从房间ID到用户表的映射,如图4所示,房间ID为1001,其“用户表”这一列存储指针地址,该指针指向该房间对应的用户,用户表存储从用户ID到节点表的映射,如图4所示,用户ID为100001,其“节点表”这一列存储指针地址,该指针指向该用户对应的节点表;一个用户可能基于同一个用户账号使用多个用户端加入到所述直播间,每个用户端与所述网关服务器之间建立一个TCP长连接,每个TCP长连接对应于节点表中的一行数据,节点表保存长连接的UUID到数据节点的映射。同时,为了快速回溯,节点保存了节点表的引用,节点表保存了用户表的引用,用户表保存了房间表的引用,节点过期时可以级联删除每个哈希表中对应与该节点的数据。
另外,所述事件服务器通过时间轮控制所述级联哈希表中节点的生命周期,如图4所示,例如,时间轮周期为60s(0-59),每个时间格表示1s,在每个时间格中利用双向链表存储节点表中节点。事件服务器可以根据新存储的用户事件对已存储的级联哈希表中的用户数据(即用户清单)进行更新。
例如,如果新存储的用户事件为建立连接事件或者心跳包事件时,所述事件服务器则可以根据用户事件中包含的房间ID、用户ID和连接的UUID到所述级联哈希表里寻找对应的节点。如果用户表中不存在该用户ID,表明产生了新用户上线操作,此时在哈希表的节点表中添加该新用户的节点,同时在时间轮上面设置45秒后过期。例如:当前时间指向时间轮第2个格子,往前数45个格子,在第47个格子对应的双向链表中增加删除该节点的任务;如果用户表中存在该用户ID,但节点表中不存在该UUID,则表明是该用户在其它用户端上已加入到所述直播间,则在哈希表中添加数据节点,然后在时间轮上面设置45秒后过期;如果用户ID和UUID均存在,则在时间轮上续期45秒,例如:当前时间指向时间轮第3个格子,往前数45个格子,在第48个格子对应的双向链表中增加该节点。
如果新存储的用户事件为断开连接事件时,或者时间轮上面数据节点过期时,例如当前时间为3s,数据节点挂载在时间轮的时间格的时间为2s,那么该数据节点过期,所述事件服务器则把对应的节点同时从所述级联哈希表和时间轮中移除,此时如果级联哈希表中出现了空的表,则把对应的表删除。
本申请中,事件服务器通过级联哈希表结合时间轮的方式对用户清单进行存储,并根据新存储的用户事件对用户清单进行维护,可以解决以下问题:
用户端异常断开:由于此时用户端已经处于离线状态,不会再发送后续消息,45秒后由于一直没收到心跳包,所以会被时间轮删除,用户清单自动修正。
网关服务器宕机:这种情况下用户端感知到TCP连接断开,会自动重连其他网关服务器,重新发送连接事件,后续逻辑不受影响。
事件服务器宕机:多台事件服务器消费消息队列,事件服务器宕机后,与消息队列建立的TCP长连接会断开,对应的任务会被到其他事件服务器接管。业务服务器通过事件服务器提供的判断用户是否在线的接口、获取房间全量在线用户接口定期校对和修正数据,防止事件服务器投递的用户状态扭转信息丢失。
步骤S206,根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
具体的,所述计算机设备1根据所述第一时间用户事件集对预先存储在所述存储单元中的第二用户清单进行更新,得到第一用户清单之后,则会根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。在一具体实施例中,所述排序规则包括:根据在线时长、用户等级、用户网龄中的至少一项对所述第一用户清单中的用户ID进行排序。也就是说,所述计算机设备1可以从所述事件服务器中获取到包括当前在线用户的用户清单,然后对所述用户清单上的用户进行排序,从而生成用户在线列表。
在一示例性例子中,所述事件服务器提供用户清单查询或获取的数据接口,然后,所述计算机设备1通过该数据接口以及根据用户ID的哈希键可以从所述事件服务器查询出该用户ID所在的直播间的房间ID,并找到用户表,然后获取到用户表里面全量用户ID,也就是当前在线用户的用户清单。
综上所述,本申请提出的用户在线列表更新方法,能够采集每一个用户的用户事件,记录为第一时间用户事件集;根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单;根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。通过采集用户事件,根据用户事件更新用户清单,最后再对用户清单的用户ID进行排序以获得用户在线列表,从而实现增量更新用户清单,以实现快速更新用户在线列表。因此,提高了用户在线列表更新的更新效率以及实时性。
实施例二
图5示意性示出了根据本申请实施例二的用户在线列表更新装置的框图,该用户在线列表更新装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图5所示,该用户在线列表更新装置400可以包括采集模块410、第一更新模块420、第二更新模块430和第三更新模块440,其中:
采集模块410,用于采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件。
第一更新模块420,用于根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息。
第二更新模块430,用于根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID。
第三更新模块430,用于根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。所述排序规则包括:根据在线时长、用户等级、用户网龄中的至少一项对所述第一用户清单中的用户ID进行排序。
在一示例性例子中,采集模块410,还用于:通过网关服务器采集每一个用户对应的用户终端触发的用户事件,存储到预设的用户事件队列;对所述用户事件队列中的用户事件进行分拣以得到所述第一时间用户事件集。
在一示例性例子中,第一更新模块420,还用于:根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除,所述目标用户为所述第一时间用户事件集中的任一用户;和/或根据所述第一时间用户事件集中的所述目标用户的断开连接事件对所述第二用户清单中的所述目标用户的用户信息进行删除;和/或根据所述第一时间用户事件集中的所述目标用户的连接事件在所述第二用户清单中增加所述目标用户的用户信息。
在一示例性例子中,第一更新模块420,还用于:若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持;若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除。其中,以预设的生命周期将每一个用户对应的用户信息挂载到时间轮的时间格,其中,所述生命周期是心跳周期的预设倍数的时间,所述时间格为根据预设的单位时间将所述时间轮划分而成的;所述若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持,包括:将所述时间轮上的所述目标用户的用户信息重新挂载到第二时间格,所述第二时间格对应的时间比所述第一时间格对应的视角增加了一个所述生命周期;所述若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除,包括:在所述时间轮滚动到所述目标用户的用户信息对应的第一时间格时,将所述时间轮上的所述目标用户的用户信息删除。
在一示例性例子中,所述级联哈希表包括级联的房间表、用户表和节点表,第二更新模块430,还用于:根据所述第一用户信息对所述第二用户清单对应的房间表、用户表和节点表中的用户数据进行更新,从而得到第一用户清单。
实施例三
图6示意性示出了根据本申请实施例三的适于实现用户在线列表更新方法的计算机设备1对应的计算机设备的硬件架构示意图。本实施例中,所述计算机设备1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是具有网关功能的机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,所述计算机设备1至少包括但不限于:可通过***总线相互通信链接存储器510、处理器520、网络接口530。其中:
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是所述计算机设备1的内部存储模块,例如所述计算机设备的硬盘或内存。在另一些实施例中,存储器510也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器510还可以既包括所述计算机设备1的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于所述计算机设备的操作***和各类应用软件,例如用户在线列表更新方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制所述计算机设备的总体操作,例如执行与所述计算机设备1进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在所述计算机设备与其他设备之间建立通信链接。例如,网络接口530用于通过网络将所述计算机设备与外部终端相连,在所述计算机设备与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯***(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有部件510-530的所述计算机设备1,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器510中的用户在线列表更新方法的程序代码,或者用户在线列表更新方法的程序代码,还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本申请实施例。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件;根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID;根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作***和各类应用软件,例如实施例中用户在线列表更新方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (10)

1.一种用户在线列表更新方法,其特征在于,所述方法包括:
采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件;
根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;
根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID;
根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表;
其中,所述方法还包括:
当网关服务器宕机时,通过用户终端自动重连其他的网关服务器,并发送建立连接事件。
2.如权利要求1所述的用户在线列表更新方法,其特征在于,所述采集每一个用户的用户事件,记录为第一时间用户事件集包括:
通过网关服务器采集每一个用户对应的用户终端触发的用户事件,存储到预设的用户事件队列;
对所述用户事件队列中的用户事件进行分拣以得到所述第一时间用户事件集。
3.如权利要求1所述的用户在线列表更新方法,其特征在于,所述根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息包括:
根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除,所述目标用户为所述第一时间用户事件集中的任一用户;和/或
根据所述第一时间用户事件集中的所述目标用户的断开连接事件对所述第二用户清单中的所述目标用户的用户信息进行删除;和/或
根据所述第一时间用户事件集中的所述目标用户的连接事件在所述第二用户清单中增加所述目标用户的用户信息。
4.如权利要求3所述的用户在线列表更新方法,其特征在于,所述根据所述第一时间用户事件集中的目标用户的心跳包事件对所述第二用户清单中的所述目标用户的用户信息进行保持或删除包括:
若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持;
若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除。
5.如权利要求4所述的用户在线列表更新方法,其特征在于,
以预设的生命周期将每一个用户对应的用户信息挂载到时间轮的时间格,其中,所述生命周期是心跳周期的预设倍数的时间,所述时间格为根据预设的单位时间将所述时间轮划分而成的;
所述若所述第一时间用户事件集中包括所述目标用户的心跳包事件,对所述目标用户的用户信息进行保持,包括:
将所述时间轮上的所述目标用户的用户信息重新挂载到第二时间格,所述第二时间格对应的时间比所述第一时间格对应的视角增加了一个所述生命周期;
所述若所述第一时间用户事件集中在设定的时间内未出现所述目标用户的心跳包事件,对所述目标用户的用户信息进行删除,包括:
在所述时间轮滚动到所述目标用户的用户信息对应的第一时间格时,将所述时间轮上的所述目标用户的用户信息删除。
6.如权利要求1-5中任一项所述的用户在线列表更新方法,其特征在于,所述级联哈希表包括级联的房间表、用户表和节点表,所述根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单包括:
根据所述第一用户信息对所述第二用户清单对应的房间表、用户表和节点表中的用户数据进行更新,从而得到第一用户清单。
7.如权利要求1所述的用户在线列表更新方法,其特征在于,所述排序规则包括:
根据在线时长、用户等级、用户网龄中的至少一项对所述第一用户清单中的用户ID进行排序。
8.一种用户在线列表更新装置,其特征在于,所述装置包括:
采集模块,用于采集每一个用户的用户事件,记录为第一时间用户事件集,其中,所述用户事件包括建立连接事件、断开连接事件和心跳包事件;其中,当网关服务器宕机时,通过用户终端自动重连其他的网关服务器,并发送建立连接事件;
第一更新模块,用于根据所述第一时间用户事件集对预设的时间轮上的第二用户信息进行更新,得到第一用户信息;
第二更新模块,用于根据所述第一用户信息对级联哈希表中的第二用户清单进行更新,得到第一用户清单,其中,所述第二用户清单是根据第二时间用户事件集对应的第二用户信息生成的,所述第二时间用户事件集对应的第二时间是早于所述第一时间用户事件集对应的第一时间,所述第一用户清单包括用户ID;
第三更新模块,用于根据所述第一用户清单中的用户ID以及预设的排序规则更新用户在线列表。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-7中任一项所述的用户在线列表更新方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-7中任一项所述的用户在线列表更新方法的步骤。
CN202110687434.3A 2021-06-21 2021-06-21 用户在线列表更新方法、装置及计算机设备 Active CN113360783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110687434.3A CN113360783B (zh) 2021-06-21 2021-06-21 用户在线列表更新方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110687434.3A CN113360783B (zh) 2021-06-21 2021-06-21 用户在线列表更新方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN113360783A CN113360783A (zh) 2021-09-07
CN113360783B true CN113360783B (zh) 2023-03-14

Family

ID=77535471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110687434.3A Active CN113360783B (zh) 2021-06-21 2021-06-21 用户在线列表更新方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN113360783B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292341B (zh) * 2022-10-08 2022-12-27 广州市保伦电子有限公司 一种设备列表实时排序的方法、装置、***及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105227386A (zh) * 2014-06-13 2016-01-06 阿里巴巴集团控股有限公司 用于分群体统计在线用户数的方法、装置及***
CN106911749A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 通知用户上下线的方法和装置
CN107087232A (zh) * 2017-04-07 2017-08-22 Ut斯达康(深圳)技术有限公司 用户的实时状态检测方法及***
CN108304504A (zh) * 2018-01-18 2018-07-20 吉浦斯信息咨询(深圳)有限公司 一种用户在线状态快速查询方法及***
CN109428924A (zh) * 2017-08-29 2019-03-05 阿里巴巴集团控股有限公司 应用的在线状态维护方法、接入层组件、应用***及设备
CN111866160A (zh) * 2020-07-28 2020-10-30 网易(杭州)网络有限公司 多机控制方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8818940B2 (en) * 2011-03-29 2014-08-26 Salesforce.Com, Inc. Systems and methods for performing record actions in a multi-tenant database and application system
CN103259878B (zh) * 2013-04-18 2015-09-30 山东省计算中心(国家超级计算济南中心) 一种针对无线局域网特定目标用户的mac地址捕获方法
CN107577717B (zh) * 2017-08-09 2020-11-03 创新先进技术有限公司 一种保障数据一致性的处理方法、装置及服务器
CN110198325B (zh) * 2018-02-26 2022-04-12 北京京东尚科信息技术有限公司 通信方法、装置和***、网络服务器和存储介质
CN111510466B (zh) * 2019-01-30 2022-09-23 阿里巴巴集团控股有限公司 客户端的数据更新方法、装置、电子设备及可读介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105227386A (zh) * 2014-06-13 2016-01-06 阿里巴巴集团控股有限公司 用于分群体统计在线用户数的方法、装置及***
CN106911749A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 通知用户上下线的方法和装置
CN107087232A (zh) * 2017-04-07 2017-08-22 Ut斯达康(深圳)技术有限公司 用户的实时状态检测方法及***
CN109428924A (zh) * 2017-08-29 2019-03-05 阿里巴巴集团控股有限公司 应用的在线状态维护方法、接入层组件、应用***及设备
CN108304504A (zh) * 2018-01-18 2018-07-20 吉浦斯信息咨询(深圳)有限公司 一种用户在线状态快速查询方法及***
CN111866160A (zh) * 2020-07-28 2020-10-30 网易(杭州)网络有限公司 多机控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113360783A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
CN111966289B (zh) 基于Kafka集群的分区优化方法和***
CN112422684B (zh) 目标消息的处理方法及装置、存储介质、电子装置
CN112367345B (zh) 数据处理方法、服务端设备及计算机可读存储介质
CN113064707B (zh) 一种消息处理方法、装置及设备
CN112422497B (zh) 消息传递方法、装置及计算机设备
US20200004785A1 (en) Automatic grouping based on user behavior
CN113360783B (zh) 用户在线列表更新方法、装置及计算机设备
CN104580084A (zh) 一种分享多媒体文件的方法、终端及***
US20210096962A1 (en) Data backup method, device and system
US20060020708A1 (en) System and method for peer-to-peer communication
CN117579611A (zh) 数据传输方法、装置、存储介质及电子装置
CN113765690A (zh) 集群切换方法、***、装置、终端、服务器及存储介质
CN113810775B (zh) 语音视频连线***和方法
CN113965538B (zh) 设备状态消息处理方法、装置及存储介质
CN112256454B (zh) 消息延时处理方法和***
CN112751907B (zh) 信息处理方法、装置和存储介质及电子装置
CN110971535B (zh) 一种通信拥塞控制方法及装置、设备和存储介质
CN112437146A (zh) 一种设备状态同步方法、装置及***
CN107465751B (zh) 通信方法、装置、客户端及计算机存储介质
CN112818144A (zh) 媒体内容分享方法、装置、存储介质及电子设备
CN112491583A (zh) 一种数据采集和分析的方法及装置
CN115378831B (zh) 一种消息中间件服务器的监测方法和装置
CN112769889B (zh) 服务数据的推送方法、装置、存储介质以及电子装置
CN112968933B (zh) 数据传输方法、装置、服务器及存储介质
CN111355768B (zh) 一种视频数据传输方法、装置与电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant