CN112463864A - 数据处理方法及装置、数据处理系统 - Google Patents

数据处理方法及装置、数据处理系统 Download PDF

Info

Publication number
CN112463864A
CN112463864A CN202011328717.0A CN202011328717A CN112463864A CN 112463864 A CN112463864 A CN 112463864A CN 202011328717 A CN202011328717 A CN 202011328717A CN 112463864 A CN112463864 A CN 112463864A
Authority
CN
China
Prior art keywords
user
time
duration
database
bitmap
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
CN202011328717.0A
Other languages
English (en)
Other versions
CN112463864B (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 CN202011328717.0A priority Critical patent/CN112463864B/zh
Publication of CN112463864A publication Critical patent/CN112463864A/zh
Application granted granted Critical
Publication of CN112463864B publication Critical patent/CN112463864B/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • 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/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Medical Treatment And Welfare Office Work (AREA)

Abstract

本说明书实施例提供数据处理方法及装置、数据处理系统,其中,所述数据处理方法包括从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;所述数据处理方法利用心跳数据对时长位图进行更新,通过对更新后的时长位图中的比特位的统计,可以快速、准确的获取用户的当前在线时长;并且将第二数据库作为用户的当前在线时长的备份缓存,以及将第三数据库作为用户的当前在线时长的备份物理存储,极大的保证了数据的安全性。

Description

数据处理方法及装置、数据处理系统
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种数据处理系统,一种计算设备,以及一种计算机可读存储介质。
背景技术
在电子产品(例如手机、平板电脑等)飞速发展的时代,人们对电子产品越来越依赖,使用电子产品进行视频观看、实时通信、网页浏览或者是游戏操作的时间越来越长,但是长时间使用电子产品会对人们的眼睛以及颈椎等造成很大的伤害,因此需要在用户使用电子产品进行操作时,实时统计用户的在线时长,在用户观看了一个小时、两个小时或者更长时间的情况下给用户发出提醒休息或者提醒运动等提示信息,防止用户沉迷于视频观看或者游戏操作中,那么如何可以快速、准确的计算出用户通过电子产品,进行各种操作时的在线时长就成了急需解决的技术问题。
发明内容
有鉴于此,本说明书施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种数据处理系统,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的无法快速、准确的计算出用户在线时长的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:
从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;
根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;
将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
根据本说明书实施例的第二方面,提供了一种数据处理系统,包括:
第一数据库,被配置为接收客户端发送的用户的心跳数据;
数据处理引擎,被配置为从所述第一数据库中获取所述用户的心跳数据,并确定与所述用户对应的时长位图,根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长,将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;
服务端,被配置为对所述第二数据库进行监控,在监测到所述用户的当前在线时长大于预设时长阈值的情况下,通过所述客户端为所述用户发出在线提醒。
根据本说明书实施例的第三方面,提供了一种数据处理装置,包括:
数据获取模块,被配置为从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;
时长确定模块,被配置为根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;
数据存储模块,被配置为将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
根据本说明书实施例的第四方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该指令被处理器执行时实现所述数据处理的步骤。
根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据处理的步骤。
本说明书一个实施例实现了数据处理方法及装置、数据处理系统,其中,所述数据处理方法包括从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;所述数据处理方法利用心跳数据对时长位图进行更新,通过对更新后的时长位图中的比特位的统计,可以快速、准确的获取用户的当前在线时长;并且将第二数据库作为用户的当前在线时长的备份缓存,以及将第三数据库作为用户的当前在线时长的备份物理存储,极大的保证了数据的安全性。
附图说明
图1是本说明书一个实施例提供的一种数据处理系统的结构示意图;
图2是本说明书一个实施例提供的一种数据处理方法的流程图;
图3是本说明书一个实施例提供的一种数据处理方法的处理过程流程图;
图4是本说明书一个实施例提供的一种数据处理装置的结构示意图;
图5是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
Storm:实时计算引擎。
Flink:下一代实时计算引擎,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。
Bitmap:位图。
RoaringBitmap:高效压缩位图。
Checkpoints:存档点,将Flink运行过程中的状态信息进行存档,即使宕机,依然可以从存档点恢复。
Kafka:高吞吐量的分布式发布订阅消息系统,用于收发数据流。
Redis:高性能的Key-Value数据库。
Hbase:分布式面向列的开源数据库。
Hdfs:分布式文件系统。
在游戏领域,传统的防沉迷计算采用Storm引擎计算游戏用户的在线时长以及支付金额,Storm作为分布式流式计算引擎,可以集群化计算数据,并配合Redis存储计算中间结果,但是Storm的计算速度慢,计算资源消耗大,计算结果不可靠,代码维护性查,目前线上Storm集群规模极为庞大,为了保证计算稳定性,必须要写很多补偿逻辑。且Storm状态依赖于Redis存储,需要考虑Storm与Redis网络通信的问题,在网络传输不稳定的情况下,可能会造成计算结果不准确。
基于此,在本说明书中,提供了可以解决上述技术问题的一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种数据处理系统,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了本说明书一个实施例提供的一种数据处理系统的结构示意图,具体包括:
第一数据库,被配置为接收客户端发送的用户的心跳数据;
数据处理引擎,被配置为从所述第一数据库中获取所述用户的心跳数据,并确定与所述用户对应的时长位图,根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长,将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;
服务端,被配置为对所述第二数据库进行监控,在监测到所述用户的当前在线时长大于预设时长阈值的情况下,通过所述客户端为所述用户发出在线提醒。
具体实施时,第一数据库为Kafka,第二数据库为Redis,第三数据库为Hbase,数据处理引擎可以理解为Flink,本说明书实施例的所述数据处理系统基于Flink架构会具备更快的计算速度、更好的资源数、更准确的计算结果,且更容易进行代码维护。
以所述数据处理系统应用于游戏场景为例,用户的心跳数据可以理解为用户通过客户端进行游戏操作时的心跳行为;具体的,第一数据库接收客户端发送的用户的心跳数据,可以理解为第一数据库接收客户端发送的用户的心跳行为,实际应用中,所述数据处理系统不仅仅可以应用于游戏场景,也可以应用于视频观看场景、网页浏览场景中对用户的在线时长的统计,为了便于理解,本说明书实施例均以所述数据处理系统应用于游戏场景为例进行详细介绍。
具体的,用户在客户端进行游戏操作时,客户端会不间断的获取用户的心跳行为,然后根据预设的时间间隔将用户的心跳行为发送至第一数据库,其中,预设的时间间隔可以根据实际应用进行设置,例如设置为一分钟、两分钟等。
数据处理引擎Flink对第一数据库Kafka进行实时监控,在监测到第一数据库Kafka接收到客户端发送的用户的心跳数据之后,从第一数据库Kafka中获取该用户的心跳数据,并确定与该用户对应的时长位图,根据该用户的心跳数据对该用户对应的时长位图进行更新,基于更新后的时长位图计算该用户的当前在线时长,并将该用户的当前在线时长缓存至第二数据库Redis以及备份存储至第三数据库Hbase中,其中,第二数据库Redis为缓存数据库,第三数据库Hbase为永久数据库,存储全量数据;第二数据库Redis缓存的数据实质与数据处理引擎Flink的本地缓存中的缓存数据一致,但是实际应用中,第二数据库Redis为后续服务器提供查询服务,因此缓存的数据的缓存时间要比数据处理引擎Flink的本地缓存的缓存时间长,例如数据处理引擎Flink的本地缓存的缓存时长为7日的话,数据处理引擎Flink的本地缓存中存储用户当前的在线时长位图以及该用户过去七日内的每日在线时长,而第二数据库Redis的缓存的时长为8天的情况下,第二数据库Redis的缓存中存储用户当前的在线时长位图以及该用户过去八日内的每日在线时长等。
此外,预设时长阈值可以根据用户的属性特征进行设置,其中,用户的属性特征包括年龄、职业等;例如用户为未成年用户的情况下,预设时长阈值可能设置为2个小时,而用户为成年用户的情况下,预设时长阈值可能设置为4小时等。
具体的,所述时长位图由预设数量的第一编码组成;
相应的,所述数据处理引擎,进一步被配置为:
根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码;
对更新后的时长位图中的所述第二编码进行统计,以确定所述用户的当前在线时长。
其中,时长位图可以理解为可以表示时间的位图,且每个位图表示一天,当然在其他需要的场景中,每个时长位图也可以表示两天、三天等;预设数量可以根据实际应用进行设置,以每个时长位图表示一天为例,那么该时长位图则可以以每分钟为单位,设置1440个分钟的第一编码,每个第一编码表示一分钟;其中,第一编码可以包括任意一种数字或者字母等,例如数字0、数字1等表示为第一编码。
实际应用中,若每个时长位图表示一天的时间,预设数量的第一编码为表示一天中每分钟的1440个第一编码,那么通过该时长位图则可以确定用户每天的在线时长。
那么在第一编码为任意一种数字或者字母时,第二编码可以是与第一编码不同的任意一种数字或者字母等,例如第一编码为数字0,第二编码可以为数字1。
举例说明,若第一编码为0,第二编码为1,原始的时长位图表示当天的1440个第一编码0,那么实际应用中,数据处理引擎从第一数据库中每获取一次用户的心跳数据,就会将与用户对应的时长位图中的第一编码0变为第二编码1,由于用户的每个心跳数据对应一个第二编码1,最后在统计用户的在线时长时,因此只需要统计出第二编码1的数量,即可以确定用户的当前在线时长是多少分钟。
本说明书实施例中,通过采用心跳数据对时长位图中的第一编码进行更新的方式,对用户的在线时长进行实时统计,通过统计第二编码的数量就可以快速准确的获得用户的当前在线时长,并且时长位图是采用编码的形式创建的,时长位图的内存占用量低,极大的节省了内存空间。
具体实施时,用户的心跳数据是基于时间采集,因此每个心跳数据会对应一个时间,而时长位图的每个第一编码也对应一个时间,在基于用户的心跳数据对时长位图中的第一编码更新为第二编码的过程中,则是基于心跳数据的心跳发生时间与时长位图中的第一编码对应的时间的映射关系执行的,具体实现方式如下所述:
所述心跳数据中携带有心跳发生时间,所述时长位图中每个第一编码对应一个编码时间;
相应的,所述数据处理引擎,进一步被配置为:
根据预设的心跳发生时间与编码时间的映射关系,基于所述心跳数据的心跳发生时间确定与所述心跳数据的心跳发生时间对应的编码时间;
根据所述编码时间确定所述时长位图中待更新的第一编码,并将所述待更新的第一编码更新为第二编码。
其中,心跳发生时间可以理解为心跳数据的产生时间,例如在当日第5分钟用户产生了一次心跳,那么该心跳数据中携带的心跳发生时间则为第5分钟。
实际应用中,当日用户的每次心跳数据中携带的心跳发生时间均与该用户当日的时长位图中的第一编码对应的编码时间存在一个映射关系,比如心跳发生时间是在当日的第5分钟,那么该心跳发生时间对应的时长位图中的第5个第一编码。
例如数据处理引擎从第一数据库中获取了用户1的心跳数据,该用户1的心跳数据中携带有心跳发生时间,即当日的第5分钟,且与用户1对应的当日的时长位图为【00000…0】,那么当获取用户1的心跳数据后,则根据预设的心跳发生时间与编码时间的映射关系,可以根据该心跳数据的心跳发生时间与该心跳数据的心跳发生时间对应的编码时间为时长位图的第5分钟的第一编码,由于每个第一编码表示一分钟,那么第5分钟则为第5个第一编码0,此时在确定了时长位图中与心跳发生时间对应的第一编码后,将该第一编码作为待更新的第一编码,然后将待更新的第一编码的编码数字0更新为第二编码的编码数字1,更新后的时长位图为【00001…0】。
那么对用户的当前在线时长进行统计时,将与该用户对应的时长位图中的所有的第二编码1的数量统计出来,即可以获得该用户的当前在线时长是多少分钟。
本说明书实施例中,通过心跳发生时间与编码时间的映射关系,将与心跳发生时间对应的第一编码更新为第二编码,后续通过对第二编码的数量的统计,就可以快速、准确的获得用户的在线时长,通过此种时长位图的方式即节省内存空间占用量,时长统计的准确率又比较高。
具体实施时,在统计出用户的当前在线时长后,还可以根据业务需求,对用户的历史在线时长进行统计,例如统计出用户七天或者半月内的在线时长等,以实现业务可以根据用户的这些在线时长数据对业务内容进行调整(比如在用户在线时长较短的情况下,通过改善游戏画面以吸引用户等)。
具体的,所述数据处理引擎,进一步被配置为:
根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长;
将所述用户在预设时间段内的每日在线时长以及与所述用户对应的时长位图进行缓存后,按照预设时间间隔备份存储至第四数据库。
其中,预设时间段可以根据实际应用进行设置,例如设置为7日、15日或者30日等,本申请对此不做任何限定。
具体的,在预设时间段为7日的情况下,根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长,可以理解为根据用户的当前在线时长统计用户在历史七日内的每日在线时长。例如用户的当前在线时长为20分钟,那么根据用户的当前在线时长统计的用户在七日内的每日在线时长,则为用户加上当前在线时长的当日在线时长以及该用户历史的前六日每天的在线时长,例如数据处理引擎Flink的本地缓存的缓存时长为7日的话,数据处理引擎Flink的本地缓存中存储用户当前的在线时长位图以及该用户过去七日内的每日在线时长,而在数据处理引擎Flink的本地缓存的时长为8天的情况下,数据处理引擎Flink的本地缓存中存储用户当前的在线时长位图以及该用户过去八日内的每日在线时长等。
最后将用户在预设时间段内的每日在线时长以及用户对应的时长位图缓存在其数据处理引擎的本地内存中,并按照预设时间间隔备份存储至第四数据库;其中,预设时间间隔可以设置为5分钟、10分钟等,第四数据库可以为hdfs数据库。
实际应用中,在根据用户的当前在线时长统计出用户在包含当日的七日内的每日在线时长后,首先将用户在七日内的每日在线时长以及该用户对应的当日更新后的时长位图作为该用户的Flink状态缓存在其本地内存中,然后将该用户的Flink状态每隔一个时间段,例如五分钟备份存储至Hdfs数据库中进行物理存储。
本说明书实施例中,在数据处理引擎Flink实时计算出用户的当前在线时长后,基于该用户的当前在线时长计算出该用户过去七日每日的在线总时长,并将该用户的过去七日每日的在线总时长以及与用户对应的当日更新后的时长位图形成的Flink状态缓存在数据处理引擎Flink的本地内存,便于后续在使用该Flink状态的时候可以直接获取,同时为了保证Flink状态的安全性,避免宕机的时候出现Flink状态的丢失,还会将Flink状态备份存储至Hdfs数据库中进行物理存储,以在发生意外的时候可以从Hdfs数据库中进行Flink状态的获取。
本说明书另一实施例中,所述数据处理引擎,进一步被配置为:
基于所述用户的当前在线时长以及所述用户在预设时间段内的每日在线时长确定所述用户在预设时间段内的累计在线时长;
将所述用户的当前在线时长、所述用户在预设时间段内的每日在线时长以及所述用户在预设时间段内的累计在线时长存储至第五数据库。
其中,预设时间段的详细介绍可以参见上述实施例,在此不再赘述;此外,在预设时间段为七日的情况下,预设时间段内的累计在线时长可以理解为七日内,每日的累计在线时长,即单日的累计在线时长,两日的累计在线时长(第一日加第二日的累计在线时长),三日的累计在线时长(第一日、第二日加第三日的累计在线时长)等等;若预设时间段为其他时长,则预设时间段内的累计在线时长也可参照七日内的累计在线时长的解释。
实际应用中,第五数据库也可以理解为一个Kafka数据库,那么第一数据库可以理解为上游Kafka数据库,第五数据库可以理解为一个下游Kafka数据库。
具体的,在获取用户的当前在线时长以及用户在预设时间段内的每日在线时长后,经过对用户的当前在线时长以及用户在预设时间段内的每日在线时长的计算分析,可以统计出来用户在预设时间段内的单日、两日、三日等的累计在线时长,然后将用户的当前在线时长、用户在预设时间段内的每日在线时长以及用户在预设时间段内的累计在线时长存储至第五数据库,后续可以在接收其他服务调用时,可以基于存储在第五数据库中存储的用户在线时长实现对产品进行分析,以更好的改善产品,满足用户体验。
具体实施时,与用户对应的更新后的时长位图也会存储至第二数据库、第三数据库以及第五数据库中,根据该时长位图可以确定用户在哪个时间点进行了心跳,因此基于该时长位图可以获取该用户在当日内的心跳数据,具体的,所述数据处理引擎,进一步被配置为:
接收所述服务端针对心跳数据的查询请求,其中,所述查询请求中携带有用户标识;
基于所述用户标识从所述第二数据库、所述第三数据库或第五数据库中,查询与所述用户标识对应的心跳数据,并将所述心跳数据返回至所述服务端。
本说明书中,在将与用户对应的更新后的时长位图、用户的当前在线时长、用户在预设时间段内的每日在线时长等存储至第二数据库、第三数据库以及第五数据库后,在接收到服务端针对心跳数据的查询请求后,则可以基于查询请求中的用户标识,从第二数据库、第三数据库或第五数据库中基于与用户对应的更新后的时长位图,快速准确的查询出与该用户标识对应的用户的心跳数据,并将该心跳数据返回至服务端,以实现服务端进行其他服务处理。
此外,实际应用中,服务端不仅可以对第二数据库进行实时监控,以实时获取到用户的在线时长,对用户的游戏操作行为等进行提醒,由于第五数据库中也存储有用户的当前在线时长,那么服务端也可以对第五数据库进行实时监控,以实时获取到用户的在线时长,对用户的游戏操作行为等进行提醒等,通过双重监控,避免对用户的在线时长的计算遗漏,具体实现方式如下所述:
所述服务端,进一步被配置为:
对所述第五数据库进行监控,在监测到所述用户的当前在线时长大于预设时长阈值的情况下,通过所述客户端为所述用户发出在线提醒。
其中,在线提醒可以为弹窗提醒,例如在弹窗中展示“您的当前在线时间为**小时,要注意休息眼睛”等温馨提示语句。
本说明书实施例中,所述数据处理系统采用Flink架构,通过将Flink状态缓存在本地内存中,当需要进行使用Flink状态数据的情况下,就可以直接在本地内存进行调用,不存在网络传输问题,也不会造成数据丢失等数据不准确的情况发生,同时Checkpoints机制定时将Flink状态进行备份,备份存储至Hdfs数据库,即使发生系统重启,Flink状态也不会丢失;所述数据处理系统将第二数据库KV作为计算结果(用户的实时在线时长)的备份存储而非Flink状态存储中心,极大的解耦了第二数据库和实时计算的关系,即使是在网络传输不稳定的情况下,所述数据处理系统实现的实时计算结果也不会不准确;并且服务端还可以对第二数据库、第五数据库等进行实时监控,在监控到用户的当前在线时长超过了与该用户匹配的时间阈值的情况下,为该用户发出防沉迷提示,提升用户体验。
参见图2,图2示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,包括如下步骤。
步骤202:从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图。
步骤204:根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长。
步骤206:将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
可选的,所述时长位图由预设数量的第一编码组成;
相应的,所述根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长,包括:
根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码;
对更新后的时长位图中的所述第二编码进行统计,以确定所述用户的当前在线时长。
可选的,所述心跳数据中携带有心跳发生时间,所述时长位图中每个第一编码对应一个编码时间;
相应的,所述根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码,包括:
根据预设的心跳发生时间与编码时间的映射关系,基于所述心跳数据的心跳发生时间确定与所述心跳数据的心跳发生时间对应的编码时间;
根据所述编码时间确定所述时长位图中待更新的第一编码,并将所述待更新的第一编码更新为第二编码。
可选的,所述确定所述用户的当前在线时长之后,还包括:
根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长;
将所述用户在预设时间段内的每日在线时长以及与所述用户对应的时长位图进行缓存后,按照预设时间间隔备份存储至第四数据库。
可选的,所述根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长之后,还包括:
基于所述用户的当前在线时长以及所述用户在预设时间段内的每日在线时长确定所述用户在预设时间段内的累计在线时长;
将所述用户的当前在线时长、所述用户在预设时间段内的每日在线时长以及所述用户在预设时间段内的累计在线时长存储至第五数据库。
可选的,所述方法,还包括:
接收服务端针对心跳数据的查询请求,其中,所述查询请求中携带有用户标识;
基于所述用户标识从所述第二数据库、所述第三数据库或第五数据库中,查询与所述用户标识对应的心跳数据,并将所述心跳数据返回至所述服务端。
具体的,所述数据处理方法应用于上述实施例的数据处理引擎,所述数据处理方法与上述实施例的数据处理引擎的实现步骤一致,本说明书实施例提供的所述数据处理方法的技术方案未详细描述的细节内容,均可以参见上述数据处理方法中数据处理引擎的技术方案的描述。
本说明书实施例提供的所述数据处理方法,包括从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;所述数据处理方法利用心跳数据对时长位图进行更新,通过对更新后的时长位图中的比特位的统计,可以快速、准确的获取用户的当前在线时长;并且将第二数据库作为用户的当前在线时长的备份缓存,以及将第三数据库作为用户的当前在线时长的备份物理存储,极大的保证了数据的安全性。
下述结合附图3,以本说明书提供的所述数据处理方法在Flink架构的应用为例,对所述数据处理方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种数据处理方法的处理过程流程图,具体包括以下步骤。
步骤302:上游Kafka接收用户A在0点5分产生的心跳行为数据。
步骤304:Flink从上游Kafka中读取用户A在0点5分产生的心跳行为数据。
步骤306:Flink根据用户A在0点5分产生的心跳行为数据对用户A的时长位图进行更新,并根据更新后的时长位图计算出用户A的当前在线时长。
具体的,Flink实时计算时,会确定状态更新前的用户A的在线时长位图【00000…000】,然后确定根据心跳行为数据更新后的用户A的在线时长位图【00001…000】,最后统计时长位图中的1的数量以计算用户A的当前在线时长。
步骤308:Flink将Flink状态(即更新后的用户A的在线时长位图以及过去七日用户A每日在线总时长)缓存在本地内存。
步骤310:Flink将Flink状态每隔一个时间段备份存储至Hdfs。
步骤312:Flink在计算出用户A的当前在线时长后,将用户A的当前在线时长、表示用户A的当前在线时长的时长位图等实时同步存储至Redis数据库。
步骤314:Flink在将用户A的当前在线时长、表示用户A的当前在线时长的时长位图同步存储至Redis数据库的同时,会将用户A的当前在线时长、表示用户A的当前在线时长的时长位图同时灾备存储至HBase数据库。
步骤316:Flink在计算出用户A的当前在线时长,并且将Flink状态缓存至本地内存后,会基于用户A的当前在线时长以及Flink状态计算出用户A在七日内的累计在线时长,然后将用户A的当前在线时长、Flink状态以及用户A在七日内的累计在线时长等存储至下游Kafka。
步骤318:Redis数据库接收服务端针对用户A的心跳行为数据的查询请求后,基于查询请求中的用户A的用户标识从Redis数据库存储的用户A的时长位图中查询与用户A的用户标识对应的心跳行为数据。
本说明书实施例中,所述数据处理方法采用Flink架构,通过将Flink状态缓存在本地内存中,当需要进行使用Flink状态数据的情况下,就可以直接在本地内存进行调用,不存在网络传输问题,也不会造成数据丢失等数据不准确的情况发生,同时Checkpoints机制定时将Flink状态进行备份,备份存储至Hdfs数据库,即使发生系统重启,Flink状态也不会丢失;所述数据处理系统将Redis数据库作为计算结果(用户的实时在线时长)的备份存储而非Flink状态存储中心,极大的解耦了Redis数据库和实时计算的关系,即使是在网络传输不稳定的情况下,所述数据处理系统实现的实时计算结果也会较为准确;并且服务端还可以对Redis数据库等进行实时监控,在监控到用户的当前在线时长超过了与该用户匹配的时间阈值的情况下,为该用户发出防沉迷提示,提升用户体验。
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图4示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图4所示,该装置包括:
数据获取模块402,被配置为从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;
时长确定模块404,被配置为根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;
数据存储模块406,被配置为将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
可选的,所述时长位图由预设数量的第一编码组成;
相应的,时长确定模块404,进一步被配置为:
根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码;
对更新后的时长位图中的所述第二编码进行统计,以确定所述用户的当前在线时长。
可选的,所述心跳数据中携带有心跳发生时间,所述时长位图中每个第一编码对应一个编码时间;
相应的,所述时长确定模块404,进一步被配置为:
根据预设的心跳发生时间与编码时间的映射关系,基于所述心跳数据的心跳发生时间确定与所述心跳数据的心跳发生时间对应的编码时间;
根据所述编码时间确定所述时长位图中待更新的第一编码,并将所述待更新的第一编码更新为第二编码。
可选的,所述装置,还包括:
时长统计模块,被配置为根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长;
备份存储模块,被配置为将所述用户在预设时间段内的每日在线时长以及与所述用户对应的时长位图进行缓存后,按照预设时间间隔备份存储至第四数据库。
可选的,所述装置,还包括:
累计时长计算模块,被配置为基于所述用户的当前在线时长以及所述用户在预设时间段内的每日在线时长确定所述用户在预设时间段内的累计在线时长;
时长存储模块,被配置为将所述用户的当前在线时长、所述用户在预设时间段内的每日在线时长以及所述用户在预设时间段内的累计在线时长存储至第五数据库。
可选的,所述装置,还包括:
请求接收模块,被配置为接收服务端针对心跳数据的查询请求,其中,所述查询请求中携带有用户标识;
数据查找模块,被配置为基于所述用户标识从所述第二数据库、所述第三数据库或第五数据库中,查询与所述用户标识对应的心跳数据,并将所述心跳数据返回至所述服务端。
本说明书实施例提供的所述数据处理装置,包括从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;所述数据处理方法利用心跳数据对时长位图进行更新,通过对更新后的时长位图中的比特位的统计,可以快速、准确的获取用户的当前在线时长;并且将第二数据库作为用户的当前在线时长的备份缓存,以及将第三数据库作为用户的当前在线时长的备份物理存储,极大的保证了数据的安全性。
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
其中,处理器520用于执行如下计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现所述数据处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述数据处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;
根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;
将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
2.根据权利要求1所述的数据处理方法,其特征在于,所述时长位图由预设数量的第一编码组成;
相应的,所述根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长,包括:
根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码;
对更新后的时长位图中的所述第二编码进行统计,以确定所述用户的当前在线时长。
3.根据权利要求2所述的数据处理方法,其特征在于,所述心跳数据中携带有心跳发生时间,所述时长位图中每个第一编码对应一个编码时间;
相应的,所述根据所述心跳数据将所述时长位图中与所述心跳数据对应的第一编码更新为第二编码,包括:
根据预设的心跳发生时间与编码时间的映射关系,基于所述心跳数据的心跳发生时间确定与所述心跳数据的心跳发生时间对应的编码时间;
根据所述编码时间确定所述时长位图中待更新的第一编码,并将所述待更新的第一编码更新为第二编码。
4.根据权利要求1或2或3任意一项所述的数据处理方法,其特征在于,所述确定所述用户的当前在线时长之后,还包括:
根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长;
将所述用户在预设时间段内的每日在线时长以及与所述用户对应的时长位图进行缓存后,按照预设时间间隔备份存储至第四数据库。
5.根据权利要求4所述的数据处理方法,其特征在于,所述根据所述用户的当前在线时长统计所述用户在预设时间段内的每日在线时长之后,还包括:
基于所述用户的当前在线时长以及所述用户在预设时间段内的每日在线时长确定所述用户在预设时间段内的累计在线时长;
将所述用户的当前在线时长、所述用户在预设时间段内的每日在线时长以及所述用户在预设时间段内的累计在线时长存储至第五数据库。
6.根据权利要求5所述的数据处理方法,其特征在于,所述方法,还包括:
接收服务端针对心跳数据的查询请求,其中,所述查询请求中携带有用户标识;
基于所述用户标识从所述第二数据库、所述第三数据库或第五数据库中,查询与所述用户标识对应的心跳数据,并将所述心跳数据返回至所述服务端。
7.一种数据处理系统,其特征在于,包括:
第一数据库,被配置为接收客户端发送的用户的心跳数据;
数据处理引擎,被配置为从所述第一数据库中获取所述用户的心跳数据,并确定与所述用户对应的时长位图,根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长,将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库;
服务端,被配置为对所述第二数据库进行监控,在监测到所述用户的当前在线时长大于预设时长阈值的情况下,通过所述客户端为所述用户发出在线提醒。
8.一种数据处理装置,其特征在于,包括:
数据获取模块,被配置为从第一数据库中获取用户的心跳数据,并确定与所述用户对应的时长位图;
时长确定模块,被配置为根据所述心跳数据对所述时长位图进行更新,并基于所述时长位图的更新结果确定所述用户的当前在线时长;
数据存储模块,被配置为将所述用户的当前在线时长缓存至第二数据库,且备份存储至第三数据库。
9.一种计算设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该指令被处理器执行时实现权利要求1-6任意一项所述数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,其存储有计算机指令,该指令被处理器执行时实现权利要求1-6任意一项所述数据处理方法的步骤。
CN202011328717.0A 2020-11-24 2020-11-24 数据处理方法及装置、数据处理系统 Active CN112463864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011328717.0A CN112463864B (zh) 2020-11-24 2020-11-24 数据处理方法及装置、数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011328717.0A CN112463864B (zh) 2020-11-24 2020-11-24 数据处理方法及装置、数据处理系统

Publications (2)

Publication Number Publication Date
CN112463864A true CN112463864A (zh) 2021-03-09
CN112463864B CN112463864B (zh) 2023-10-27

Family

ID=74800024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011328717.0A Active CN112463864B (zh) 2020-11-24 2020-11-24 数据处理方法及装置、数据处理系统

Country Status (1)

Country Link
CN (1) CN112463864B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115604532A (zh) * 2022-11-30 2023-01-13 深圳市华曦达科技股份有限公司(Cn) 一种指定时段观看直播用户统计方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690820B1 (en) * 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
CN111372130A (zh) * 2020-03-02 2020-07-03 北京字节跳动网络技术有限公司 一种用户在线时长统计方法、装置、电子设备及存储介质
CN111611283A (zh) * 2020-05-27 2020-09-01 贝壳技术有限公司 数据缓存方法、装置、计算机可读存储介质及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690820B1 (en) * 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
CN111372130A (zh) * 2020-03-02 2020-07-03 北京字节跳动网络技术有限公司 一种用户在线时长统计方法、装置、电子设备及存储介质
CN111611283A (zh) * 2020-05-27 2020-09-01 贝壳技术有限公司 数据缓存方法、装置、计算机可读存储介质及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
咖啡色的羊驼: "《一看就懂系列之详解redis的bitmap在亿级项目中的应用》", 《掘金网》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115604532A (zh) * 2022-11-30 2023-01-13 深圳市华曦达科技股份有限公司(Cn) 一种指定时段观看直播用户统计方法及装置

Also Published As

Publication number Publication date
CN112463864B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN110347716B (zh) 日志数据处理方法、装置、终端设备及存储介质
CN108073625B (zh) 用于元数据信息管理的系统及方法
CN110321273B (zh) 一种业务统计方法及装置
CN108390933B (zh) 消息分发方法、装置、服务器及存储介质
CN111586126A (zh) 小程序预下载方法、装置、设备及存储介质
CN112347355B (zh) 数据处理方法、装置、服务器及存储介质
CN108874876B (zh) 一种消息推送方法、计算机可读存储介质及终端设备
CN111782901B (zh) 数据采集方法以及装置
CN112732793A (zh) 业务数据的处理方法和装置、存储介质、电子装置
CN114706867A (zh) 数据同步方法、装置、电子设备及存储介质
CN113407363A (zh) 一种基于远程字典服务的滑窗计数方法及装置
CN112463864B (zh) 数据处理方法及装置、数据处理系统
CN111311014A (zh) 业务数据处理方法、装置、计算机设备和存储介质
US11178413B1 (en) Dynamically transitioning a digital video file between encoding states
CN114153880A (zh) 数据缓存控制方法、电子设备及存储介质
CN112148712A (zh) 一种数据处理方法、装置、设备及介质
CN113840157B (zh) 访问检测方法、系统及装置
CN115665363A (zh) 一种视频会议方法、装置、设备和存储介质
CN115658745A (zh) 数据处理方法、装置、计算机设备和计算机可读存储介质
CN110557351A (zh) 用于生成信息的方法和装置
CN115086194A (zh) 云应用的数据传输方法、计算设备及计算机存储介质
CN115145911A (zh) 数据库的同步写入方法、获取变更信息的方法及各自装置
CN111757115A (zh) 一种视频流处理方法及装置
CN113407491B (zh) 数据处理方法及装置
US11294853B1 (en) Archiver for data stream service

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