发明内容
本申请实施例通过提供一种数据写入的方法、装置、服务器及介质,解决了现有技术中的数据写入方式,存在的观看高峰期数据库压力大,数据写入拥堵的技术问题。
第一方面,本申请提供了一种数据写入的方法,所述方法应用于直播平台服务器,包括:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
可选的,所述播放数据包括以下任意一种或多种:播放次数、播放视频的用户信息、播放视频的主播信息或播放视频的时间信息。
可选的,所述通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道,包括:如果所述统计队列所占用的存储空间达到预设空间,则通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道。
可选的,所述如果所述管道中的数据满足预设要求,包括:如果所述管道中的数据量大于预设数据量;或者,如果所述管道中导入数据的频率大于预设频率;或者,如果距上次所述管道将所述播放数据写入数据库的时长大于预设时长。
可选的,所述将所述管道中的所述播放数据按所述先后顺序依次写入数据库,包括:将所述管道中的所述播放数据按所述先后顺序依次写入数据库,其中,在所述写入数据库的过程中,主协程通过监听信号量来判断所述写入是否完成,并在所述主协程确定所述写入完成后,控制所述主协程、所述第一异步协程和所述第二异步协程退出。
可选的,在所述通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道之后,还包括:删除所述统计队列中存储的所述播放数据;在所述将所述管道中的所述播放数据按所述先后顺序依次写入数据库之后,还包括:删除所述管道中存储的所述播放数据。
第二方面,提供一种数据写入的装置,所述装置为直播平台服务器,包括:
监测模块,用于持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
导入模块,用于通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
写入模块,用于通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
可选的,所述装置还包括:监听模块,用于在所述写入数据库的过程中,主协程通过监听信号量来判断所述写入是否完成,并在所述主协程确定所述写入完成后,控制所述主协程、所述第一异步协程和所述第二异步协程退出。
第三方面,提供一种直播平台服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下方法:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
可选的,所述处理器执行所述程序时实现第一方面中描述的任一方法。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下方法:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
可选的,该程序被处理器执行时实现所述第一方面中的任一方法。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的方法、装置、服务器及介质,在监测到用户播放视频时,先将播放数据按先后顺序存入统计队列中进行排序,以避免多个数据同时写入管道或数据库,再通过第一异步协程将所述播放数据批量放入固定容量的管道以作缓冲,在满足条件时,再通过第二异步协程将管道中的播放数据依序排队写入数据库,以使得数据库的数据写入基本保持为单协程链接的排队写入状态,有效避免多协程同时向所述数据库写入播放数据,有效缓解了数据库的压力。
具体实施方式
本申请实施例通过提供一种数据写入的方法、装置、服务器及介质,解决了现有技术中的数据写入方式,存在的观看高峰期数据库压力大,数据写入拥堵的技术问题,实现了有效缓解数据库压力的技术效果。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
一种数据写入的方法,所述方法应用于直播平台服务器,包括:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
具体来讲,在监测到用户播放视频时,先将播放数据按先后顺序存入统计队列中进行排序,以避免多个数据同时写入管道或数据库,再通过第一异步协程将所述播放数据批量放入固定容量的管道以作缓冲,在满足条件时,再通过第二异步协程将管道中的播放数据依序写入数据库,以使得数据库的数据写入基本保持为单协程链接的连续写入状态,有效避免多协程同时向所述数据库写入播放数据,有效缓解了数据库的压力。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一
如图1所示,本实施例提供了一种数据写入的方法,所述方法应用于直播平台服务器,包括:
步骤S101,持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
步骤S102,通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
步骤S103,通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在本申请实施例中,所述直播平台服务器可以为计算机设备、云端或计算机设备组,在此不作限制。
下面,结合图1来详细介绍本实施例提供的数据写入的方法的具体实施步骤:`
首先,执行步骤S101,持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列。
具体来讲,直播平台服务器需要统计直播平台上的视频播放量和观看历史记录等信息,以便于服务器监测直播平台是否出现异常,和为直播平台提供一些实时的调节功能。现有技术中,是在每次有客户端用户播放视频时,实时的将播放相关的数据写入数据库,并将播放量进行实时更新,然而,当视频观看量较大的情况下,会有很多客户端在同一时段打开视频进行播放,就会出现多协程同时将数据写入数据库的情况,给数据库造成了较大的链接建立和数据传输压力。
本实施例同样会持续监测客户端用户播放视频的事件,以确保不遗留视频播放数据,但在监测到用户播放视频时,会获取所述视频的播放数据,并将所述播放数据按照获取的先后顺序,依序先暂存入统计队列中,以避免同时写入数据库带来的数据库压力。
在本申请实施例中,所述播放数据包括以下任意一种或多种:播放次数、播放视频的用户信息、播放视频的主播信息、用户行为数据或播放视频的时间信息,其中,所述用户行为数据可以是用户的弹幕、送礼、接麦或点赞等行为数据。
在具体实施过程中,可以设置不同的统计队列来暂存不同的播放数据,以保证播放数据能分类依序排列存放。举例来说,可以设置redis队列来用于统计播放量,即在redis队列中依序存放某个时间点的播放量数据;并设置nsq队列来用于存放历史观看数据,其中所述历史观看数据可以包括观看视频的用户信息、主播信息、用户行为数据或播放时长信息等,在此不作限制。
在具体实施过程中,当监测到用户播放视频时,可以实时将所述播放数据存入所述统计队列,较优的,也可以等所述视频播放达到一定时长后,再将所述播放数据存入所述统计队列,以保证统计的播放数据是稳定的,可靠的,参考意义更高的数据。
然后,执行步骤S102,通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道。
具体来讲,所述管道channel为固定容量的管道,通过设置管道作为所述数据库和所述统计队列的中间存储容器,是由于考虑到所述统计队列也可能会存在多个,而且统计队列存储空间有限,且由于需要实时的进行播放数据存入,如果存入数据过多容易出现数据丢失或出错,故设置管道channel来先依序存放所述统计队列中的数据,而不是将所述统计队列中的播放数据直接写入数据库,能够进一步减少所述数据库的压力,也增加了数据传输的稳定性,防止数据丢失或出错。
在具体实施过程中,所述第一异步协程将所述统计队列中的所述播放数据导入管道的触发因素可以有多种,下面列举两种为例:
第一种,定时触发。
即设置一定的时间周期,当满足该时间周期时,则周期性触发将所述统计队列中的所述播放数据导入管道中。
第二种,按存储的数据量来触发。
即所述通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道,包括:如果所述统计队列所占用的存储空间达到预设空间,则通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道。也就是说,在所述统计队列积累播放数据达到一定的存储空间大小后,就会触发将所述统计队列中的所述播放数据导入管道中。
当然,在具体实施过程中,还可以设置其他触发将数据导入管道的方式,在此不再一一列举,也不作限制。
接下来,执行步骤S103,通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在本申请实施例中,可以根据不同的需要设置不同的所述预设要求来控制数据写入所述数据库,下面列举三种为例:
第一种,根据管道中的数据量判断是否写入数据库。
即如果所述管道中的数据量大于预设数据量,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
具体来讲,为了避免管道占用太大的存储空间,故所述管道是固定容量的,当所述第二异步协程监控到所述管道中存储的数据量大于预设数据量时,会触发将所述管道中的所述播放数据写入所述数据库,以避免管道数据溢出。
第二种,根据导入所述管道的数据导入频率判断是否写入数据库。
即如果所述管道中导入数据的频率大于预设频率,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
具体来讲,在直播平台上的视频开启量急增时,容易导致统计队列高频率的像所述管道中导入数据,此时,管道中的数据量上升急速,容易出现溢出,故设置在像管道中导入数据的频率大于预设频率时,会触发将所述管道中的所述播放数据写入所述数据库,以提前处理避免出现管道数据溢出。
第三种,根据向数据库写入数据的间隔时长来判断是否写入数据库。
即如果距上次所述管道将所述播放数据写入数据库的时长大于预设时长,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在所述管道向所述数据库写入数据的间隔时长较长时,说明所述数据库此时的链接压力和数据传输压力较小,故选择此时将所述管道中的播放数据写入所述数据库,一方面不会对数据库造成太大压力,另一方面,及时排空所述管道,避免管道中数据溢出。
当然,在具体实施过程中,也可以采取其他设置所述预设要求的方法,在此不再一一列举,也不作限制。
具体来讲,采用第一异步协程和第二异步协程来分别处理所述统计队列中的数据和所述管道中的数据,能实现并行的数据写入和导出,能在所述管道积累数据的同时,并行的对所述管道中的数据进行消耗,提高了数据传输效率,且不易出错。
进一步,在本申请实施例中,为了避免在数据传输过程中,第一异步协程和第二异步协程出现错误退出,导致数据传输遗漏的情况,还设置在步骤S103中将所述管道中的所述播放数据按所述先后顺序依次写入数据库的过程中,主协程通过监听信号量来判断所述写入是否完成,并在所述主协程确定所述写入完成后,才能控制所述主协程、所述第一异步协程和所述第二异步协程退出。从而有效避免在数据未传输完成时的误退出,有效提高了数据传输的可靠性。
当然,在具体实施过程中,还可以设置在步骤S102中将所述统计队列中的将所述播放数据按所述先后顺序导入管道的过程中,所述主线程也监听信号量来判断所述导入是否完成,并在所述主协程确定所述导入完成后,才能控制所述主协程、所述第一异步协程和所述第二异步协程退出。
进一步,在所述通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道之后,还包括:删除所述统计队列中存储的所述播放数据;在所述将所述管道中的所述播放数据按所述先后顺序依次写入数据库之后,还包括:删除所述管道中存储的所述播放数据。以减少所述统计队列和所述管道占用的空间大小。
具体来讲,本申请实施例提供的方法、装置、服务器及介质,在监测到用户播放视频时,先将播放数据按先后顺序存入统计队列中进行排序,以避免多个数据同时写入管道或数据库,再通过第一异步协程将所述播放数据批量放入固定容量的管道以作缓冲,在满足条件时,再通过第二异步协程将管道中的播放数据依序排队写入数据库,以使得数据库的数据写入基本保持为单协程链接的排队写入状态,有效避免多协程同时向所述数据库写入播放数据,有效缓解了数据库的压力。
基于同一发明构思,本申请提供了实施例一对应的装置,详见实施例二。
实施例二
如图2所示,本实施例提供了一种数据写入的装置,所述装置为直播平台服务器,包括:
监测模块201,用于持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
导入模块202,用于通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
写入模块203,用于通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在本申请实施例中,所述直播平台服务器可以为计算机设备、云端或计算机设备组,在此不作限制。
在本申请实施例中,所述装置还包括:
监听模块,用于在所述写入数据库的过程中,主协程通过监听信号量来判断所述写入是否完成,并在所述主协程确定所述写入完成后,控制所述主协程、所述第一异步协程和所述第二异步协程退出。
由于本实施例所介绍的装置为实施本申请实施例一中一种数据写入的方法所采用的装置,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的装置的具体实施方式以及其各种变化形式,所以在此对于该装置如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的直播平台服务器,详见实施例三。
实施例三
本实施例提供一种直播平台服务器,如图3所示,包括存储器310、处理器320及存储在存储器320上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在具体实施过程中,处理器320执行计算机程序311时,可以实现实施例一中任一实施方式。
由于本实施例所介绍的直播平台服务器为实施本申请实施例一中一种数据写入的方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的直播平台服务器的具体实施方式以及其各种变化形式,所以在此对于该服务器如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。
实施例四
如图4所示,本实施提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现以下步骤:
持续监测客户端用户播放视频的事件,如果监测到用户播放视频,则获取所述视频的播放数据,并将所述播放数据存入统计队列,其中,所述统计队列中的数据按照存入的先后顺序排列;
通过第一异步协程将所述统计队列中的所述播放数据按所述先后顺序导入管道;
通过第二异步协程监控所述管道中的数据,如果所述管道中的数据满足预设要求,则将所述管道中的所述播放数据按所述先后顺序依次写入数据库。
在具体实施过程中,该计算机程序411被处理器执行时,可以实现实施例一中任一实施方式。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。