本发明涉及金融科技(fintech)技术领域,尤其涉及直播时移缓存方法、装置、系统与计算机可读存储介质。
背景技术:
近年来,随着金融科技(fintech),尤其是互联网金融的不断发展,直播技术被引入银行等金融机构的日常服务中。在银行等金融机构的日常服务过程中,有时为推广产品,需要进行视频直播,而观看直播的观众在直播期间很可能临时有事而暂停观看,过后又回来收看;或者想回看之前的直播内容;又或者直接快进到最新进度收看最新直播内容,也即,观众存在直播时移的需求,因此,如何实现直播时移是银行等金融机构需要面对的技术问题。
现有技术中,为实现直播时移,通常将直播推流切分成分片,再向播放用户终端分发,用户请求的播放文件中包含不断刷新的分地址,也即视频索引;对于常规的直播而言,分片地址及相应的文件并不持久化保存,导致当前时间之前的直播视频内容无法回溯;而对于开通了时移功能的直播而言,分片地址及相应文件(视频数据)会缓存在缓存服务器,使得回溯从直播开始时间到当前时间之间的视频内容成为可能。
然而,现有技术在缓存分片地址及相应文件时,都存储在一个缓存服务器中,使得现有缓存服务器需承载全部的分片的计算和相应文件分发的功能,一旦面对高并发海量时移请求,缓存服务器的cpu会被大量的分片计算所占用,导致性能下滑,从而影响视频缓存的性能,造成时移播放效率低的问题。
技术实现要素:
本发明的主要目的在于提出一种直播时移缓存方法、装置、系统与计算机可读存储介质,旨在实现直播时移的智能缓存。
为实现上述目的,本发明提供一种直播时移缓存方法,所述直播时移缓存方法包括如下步骤:
获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
优选地,所述缓存比值动态调整的步骤包括:
确定所述直播对应的最近缓存长度,并获取所述最近缓存长度对应的在线人数;
基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分;
基于所述缓存评分,调整所述缓存比值。
优选地,所述基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分的步骤包括:
基于所述缓存长度,计算所述在线人数的权重值;
基于所述在线人数和所述权重值,计算所述直播的缓存评分。
优选地,所述基于所述缓存评分,调整所述缓存比值的步骤包括:
获取所述直播的历史缓存评分,并基于所述历史缓存评分与所述缓存评分,计算评分差值;
确定所述评分差值对应的变动值,并基于所述变动值,调整所述缓存比值。
优选地,所述直播时移缓存方法还包括:
若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略;
按照所述淘汰策略,确定所述缓存服务器或所述索引服务器对应的最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
优选地,所述获取直播的目标时移视频的步骤包括:
获取预先记录的所述直播的历史时移请求;
确定所述历史时移请求对应的时移视频,并统计所述时移视频的请求次数;
基于所述请求次数,确定所述时移视频中的目标时移视频,并获取。
优选地,所述将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区的步骤之后,所述直播时移缓存方法还包括:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引;
若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端;
若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
优选地,所述若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤包括:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述客户端本地是否存在所述时移请求对应的目标视频索引;
若确定不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤。
此外,为实现上述目的,本发明还提供一种直播时移缓存装置,所述直播时移缓存装置包括:
跑批模块,用于获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
缓存模块,用于将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
优选地,所述缓存模块还用于:
确定所述直播对应的最近缓存长度,并获取所述最近缓存长度对应的在线人数;
基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分;
基于所述缓存评分,调整所述缓存比值。
优选地,所述缓存模块还用于:
基于所述缓存长度,计算所述在线人数的权重值;
基于所述在线人数和所述权重值,计算所述直播的缓存评分。
优选地,所述缓存模块还用于:
获取所述直播的历史缓存评分,并基于所述历史缓存评分与所述缓存评分,计算评分差值,所述历史缓存评分为所述直播的上一次缓存评分;
确定所述评分差值对应的变动值,并基于所述变动值,调整所述缓存比值。
优选地,所述缓存模块还用于:
若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略;
按照所述淘汰策略,确定所述缓存服务器或所述索引服务器对应的最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
优选地,所述跑批模块还用于:
获取预先记录的所述直播的历史时移请求;
确定所述历史时移请求对应的时移视频,并统计所述时移视频的请求次数;
基于所述请求次数,确定所述时移视频中的目标时移视频,并获取。
优选地,所述直播时移缓存装置还包括请求处理模块,请求处理模块用于:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引;
若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端;
若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
优选地,所述请求处理模块还用于:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述客户端本地是否存在所述时移请求对应的目标视频索引;
若确定不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤。
此外,为实现上述目的,本发明还提供一种直播时移缓存系统,所述直播时移缓存系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的直播时移缓存程序,所述直播时移缓存程序被所述处理器执行时实现如上所述的直播时移缓存方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有直播时移缓存程序,所述直播时移缓存程序被处理器执行时实现如上所述的直播时移缓存方法的步骤。
本发明提出的直播时移缓存方法,获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。本发明将时移视频和视频索引进行分离存储,减轻缓存服务器的计算压力,提高时移请求的响应速度;且动态调整各服务器中最近缓存区和最热缓存区的缓存比值,使得各服务器的缓存空间得到最大利用,从而实现直播时移的智能缓存。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的系统结构示意图;
图2为本发明直播时移缓存方法第一实施例的流程示意图;
图3为本发明直播时移缓存方法第一实施例中最近缓存长度以及对应的在线人数的统计示意图;
图4为本发明直播时移缓存方法第三实时例中缓存系统架构示意图;
图5为本发明直播时移缓存方法第三实施例中时移场景示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的系统结构示意图。
本发明实施例系统包括移动终端和服务器设备等。
如图1所示,该系统可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的系统结构并不构成对系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及直播时移缓存程序。
其中,操作系统是管理和控制直播时移缓存系统与软件资源的程序,支持网络通信模块、用户接口模块、直播时移缓存程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1002;用户接口模块用于管理和控制用户接口1003。
在图1所示的直播时移缓存系统中,所述直播时移缓存系统通过处理器1001调用存储器1005中存储的直播时移缓存程序,并执行下述直播时移缓存方法各个实施例中的操作。
基于上述硬件结构,提出本发明直播时移缓存方法实施例。
参照图2,图2为本发明直播时移缓存方法第一实施例的流程示意图,所述方法包括:
步骤s10,获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
步骤s20,将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
本实施例直播时移缓存方法运用于理财机构或者银行等金融机构的直播时移缓存系统中,为描述方便,直播时移缓存系统以缓存系统简称。在本实施例中,缓存系统包括客户端、索引服务器、缓存服务器、直播端和跑批服务器。
其中,客户端用于播放直播内容供在线观众观看,如电脑等固定终端,手机等移动终端等;
索引服务器用于存储直播视频对应的时间戳索引,也即视频索引;
缓存服务器用于存储时移视频,其中,时移视频包括最热时移视频和最近时移视频,最热时移视频是指当前直播在线观众频繁时移观看的视频画面,最近时移视频是指距离当前直播时间点预设时间范围的视频画面;
直播端用于采集直播对象的声音、动作等视频内容,并将将视频内容推送到cdn(contentdeliverynetwork,即内容分发网络)分发节点,以推送给客户端;
跑批服务器用于准实时更新视频索引和对应的时移视频,具体通过定期跑脚本的方式,在检测到直播端开始直播时,定期跑批获取时移视频并创建时移视频对应的视频索引,再将时移视频和视频索引对应存储在缓存服务器和索引服务器中,以完成视频索引和时移视频的更新。
本实施例的缓存系统,通过创建时移视频的视频索引,可以在发生直播时移后快速找到视频缓存,并且将视频索引与时移视频进行分离存储,从而降低缓存服务器的压力,此外,还通过动态调整缓存比值的方式,动态调整索引服务器和缓存服务器的最近缓存区和最热缓存区的缓存容量,使得索引服务器和缓存服务器择优缓存观众最想要的视频数据,在不用扩大存储空间的前提下,提高缓存命中率,最终实现直播时移的智能缓存,也即,针对存储空间不足的情况,通过动态调整最近缓存区和最热缓存区的缓存比值,可以动态调整最近缓存区和最热缓存区的缓存容量,从而在有限的存储空间中存储观众最可能时移的视频数据,而不需要存储全部的视频数据。
以下将对各个步骤进行详细说明:
步骤s10,获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引。
在本实施例中,在检测到直播端的直播开始后,缓存系统即启动跑批服务器,去获取当前直播的目标时移视频,其中,目标时移视频即为即将缓存起来的视频数据,再根据目标时移视频对应的播放时间,创建目标时移视频对应的视频索引,也即采用时间戳的方式来构建目标时移视频的索引,在后续匹配时移请求时,可加快匹配速度。
其中,在一实施例中,获取直播的目标时移视频的步骤包括:
步骤a1,获取预先记录的所述直播的历史时移请求;
在一实施例中,目标时移视频为最热时移视频,为获取最热时移视频,缓存系统记录当前直播的历史时移请求,也即观众每一次的时移请求,以便后续进行分析确认哪些时间点的视频是观众最可能请求的最热时移视频。
步骤a2,确定所述历史时移请求对应的时移视频,并统计所述时移视频的请求次数;
接着,确定历史时移请求对应的时移视频,并统计时移视频的请求次数,也即同一时移视频请求观看的次数,用于说明观众想要观看的可能程度。
步骤a3,基于所述请求次数,确定所述时移视频中的目标时移视频,并获取。
最后,根据请求次数,确定时移视频中的目标时移视频,并获取,具体的,将每一个时移视频的请求次数与预设次数进行比较,将大于预设次数的时移视频确定为目标时移视频,其中,预设次数可根据实际情况设置,如2次等;或者,将请求次数最大的前预设数量的时移视频确定为目标时移视频,,其中,前预设数量可根据实际情况设置,如前10等。
也即,在一实施例中,可通过确定同一时移视频的请求次数,来分析观众最可能时移的视频,时移请求次数越多,越代表对应的时移视频是观众最可能时移的视频,也即该时移视频是热门时移对象。
进一步地,在另一实施例中,获取直播的目标时移视频的步骤包括:
步骤a4,确定所述直播的当前直播时间,并基于当前直播时间,确定所述直播的最近缓存范围;
在另一实施例中,目标时移视频为最近时移视频,为获取最近时移视频,缓存系统先确定当前直播的当前直播时间,再根据当前直播时间,确定当前直播的最近缓存范围,其中,最近缓存范围指的是靠近当前直播时间的预设范围,可以理解的,在视频直播期间,越靠近当前直播时间,发生时移概率的时机就越大,因此可通过当前直播时间和最近缓存长度,确定当前直播的最近缓存范围,其中,最近缓存长度可根据缓存服务器或者客户端的存储空间的实际大小设定,如为:600秒、1200秒等,也即最近缓存范围即为靠近当前直播时间的600秒、1200秒等。
步骤a5,获取所述最近缓存范围对应的目标时移视频。
接着,根据最近缓存范围,获取当前直播对应的最近时移视频,即为目标时移视频,如获取靠近当前直播时间600秒的视频,即为目标时移视频。
步骤s20,将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
在本实施例中,缓存系统将跑批服务器定期跑批获取的目标时移视频,以及定期跑批创建的视频索引,分别存储在缓存服务器的缓存区以及索引服务器的缓存区,从而实现视频索引与时移视频的分离存储,减轻了缓存服务器的压力,使得后续在检测到时移请求时,可先在索引服务器中进行分析,提高时移请求的匹配速度。
需要说明的是,缓存服务器的缓存区与索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整,也即,缓存服务器的缓存区包括最近缓存区m和最热缓存区n,索引服务器的缓存区对应包括最近缓存区m和最热缓存区n;最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值p动态调整,也即m:n=p,或者m:n=p,其中,p动态调整,如m:n或者m:n原先等于50%,也即最近缓存区:最热缓存区=1:2,也即,假设索引服务器或者缓存服务器的存储空间为24g,则最近缓存区占1/3,为8g,最热缓存区占2/3,为16g,动态调整之后,m:n或者m:n等于60%,也即,此时最近缓存区:最热缓存区=3:5,此时最近缓存区占3/8,为9g,最热缓存区占5/8,为15g。
因此,在一实施例中,将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区的步骤包括:
步骤b1,确定所述目标时移视频的时移类型,其中,时移类型包括最近时移视频和最热时移视频;
在一实施例中,缓存系统先确定目标时移视频的时移类型,其中,目标时移视频的时移类型包括最近时移视频和最热时移视频,在具体实施时,可根据步骤s10的获取方式,确定目标时移视频的时移类型,具体获取方式参见上述说明,在此不再赘述。
步骤b2,根据所述时移类型,将所述目标时移视频存储在缓存服务器对应的缓存区,并将所述视频索引存储在索引服务器对应的缓存区,所述缓存服务器的缓存区与所述索引服务器的缓存区都包括最近缓存区和最热缓存区,分别用于存储最近时移视频和最热时移视频或者存储最近时移视频对应的视频索引和最热时移视频对应的视频索引。
接着,将相应时移类型的目标时移视频以及对应的视频索引分别存储在缓存服务器和索引服务器对应的缓存区,其中,缓存服务器和索引服务器的缓存区都包括最近缓存区和最热缓存区。
具体的,若目标时移视频为最近时移视频,则将目标时移视频存储在缓存服务器的最近缓存区m,将目标时移视频对应的视频索引存储在索引服务器的最近缓存区m;若目标时移视频为最热时移视频,则将目标时移视频存储在缓存服务器的最热缓存区n,将目标时移视频对应的视频索引存储在索引服务器的最热缓存区n。
在具体实施时,在跑批服务器中使用到的数据结构如下:
进一步地,在一实施例中,所述缓存比值动态调整的步骤包括:
步骤b3,确定所述直播对应的最近缓存长度,并获取所述最近缓存长度对应的在线人数;
在一实施例中,缓存系统先确定当前直播对应的最近缓存长度,其中,最近缓存长度可根据实际情况进行设置,如果对实时性要求高,可以设置为秒级,如10秒等,一般情况下,设置600秒即可。然后,获取最近缓存长度对应的在线人数,也即最近缓存长度中每一秒所对应的历史在线人数,如最近缓存长度为10秒,则分别获取当前直播时间的前10秒时的在线人数、前9秒时的在线人数......前1秒时的在线人数。可以理解的,在线人数是动态变化的,在线人数越多,代表对应的直播时间点越受欢迎。
步骤b4,基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分;
接着,根据最近缓存长度和在线人数,计算直播的缓存评分。具体可将最近缓存长度中各时间点的在线人数进行累加,以此作为当前直播的缓存评分,也即以在线人数作为衡量当前直播的评分标准。
此外,对于直播场景而言,越是靠近当前直播的时间段,发生时移的概率越大,因此,缓存当中需要保证最近的视频索引的覆盖率和有效时间,这样才能增加命中率,也即,越靠近当前直播时间的观众人数,权重越大,在计算缓存评分时,更加应该被考虑。
因此,在一实施例中,步骤b4包括:
步骤b41,基于所述缓存长度,计算所述在线人数的权重值;
在一实施例中,在线人数的权重值可以是事先根据实际情况设定的固定值,如将最近缓存长度对半分,远离当前直播时间的一半权重值为0.2,靠近当前直播时间的一半权重值为0.8等。
在另一实施例中,考虑到现实直播场景下,越靠近当前直播时间的在线人数权重越大,也即靠近当前直播时间的在线人数越有参考价值,也即在线人数的参考价值随直播时间而递减,因此,在一实施例中,可采用等差数据方式进行计算,其公式1如下:
其中,sn为固定经验值100;a1为初始权重值,设为1;n为最近缓存长度,可根据实际情况设置,如设为10等。
根据上述公式1,可求得d,d为最近缓存长度中各时间点的权重差,因此,可根据a1和d,求得最近缓存长度中各时间点的权重值,也即a2,a3,a4...an的数值。
如n=10,则d=2,最近缓存长度各时间点对应的权重值即为1、3、5、7、9、11、13、15、17和19,也即,各时间点分别占1%、3%、5%、7%、9%、11%、13%、15%、17%和19%。
步骤b42,基于所述在线人数和所述权重值,计算所述直播的缓存评分。
接着,根据最近缓存长度各时间点所对应的在线人数,以及计算所得权重值,计算当前直播的缓存评分,具体的,使用加权的方式进行计算评分,具体公式2如下:
scoren=n1*a1 n2*a2 … nn*an
其中,在公式2中,n(number)为在线人数的数值,也就是每一秒的在线人数;nn为当前直播时间的在线人数,nn-1为上一秒在线人数。
也即,依次将最近缓存长度的在线人数乘以对应的权重值,并将各结果累加,从而得到当前直播的缓存评分。
如图3所示,最近缓存长度一(长度一)是第3秒到第12秒的10秒,也即最近缓存长度n=10,则根据上述公式1,计算得出第3秒的权重值为1,第四秒的权重值为3......第12秒的权重值为19;再确定第3秒时的在线人数234,第4秒时的在线人数331......第12秒时的在线人数986;再将第3秒到第12秒各自对应的在线人数乘以权重值,如第3秒的计算结果为1×234=234,第4秒的计算结果为3×331=993......第12秒的计算结果为19×986=19734;最后,将各计算结果进行累加,得到缓存评分=73625。
步骤b5,基于所述缓存评分,调整所述缓存比值。
最后,根据缓存评分,调整缓存服务器和索引服务器的最近缓存区和最热缓存区的缓存比值。具体的,可事先建立缓存评分与最近缓存区占用比值或者最热缓存区占用比值的映射关系,在得到缓存评分之后,即可根据映射关系,得到最近缓存区的占用比值,或者最热缓存区的占用比值。
进一步地,在一实施例中,步骤b5包括:
步骤b51,获取所述直播的历史缓存评分,并基于所述历史缓存评分与所述缓存评分,计算评分差值;
在一实施例中,在计算得到当前直播的缓存评分之后,进一步获取当前直播的历史缓存评分,通过对比当前缓存评分与历史缓存评分的变化,确定缓存比值的变动值,其中,历史缓存评分为当前直播的上一次缓存评分,或者是前预设次缓存评分的平均值等。
需要说明的是,缓存评分的计算时机可以是定时触发,如每10分钟触发一次;也可以是条件触发,如最近缓存区或者最热缓存区的缓存空间爆满时触发,也即在最近缓存区或者最热缓存区的缓存空间为零,无法再存储其他数据时触发,从而重新调整最近缓存区和最热缓存区的缓存比值,如一开始最近缓存区和最热缓存区的缓存比值为30%:70%,也即3/7,在最近缓存区爆满之后,调整最近缓存区和最热缓存区的缓存比值为60%:40%,也即3/2,从而最近缓存区可以继续缓存数据等,如索引服务器或者缓存服务器的存储空间为15g,则一开始最近缓存区占4.5g,最热缓存区占10.5g(4.5:10.5=3:7);在调整后,最近缓存区占9g,最热缓存区占6g(9:6=3:2)等。
为方便后续调整,可以当前缓存评分与历史缓存评分的差值,与历史缓存评分的比值作为评分差值,也即:
当前缓存评分为scoren=n1*a1 n2*a2 … nn*an;
历史缓存评分为scoren-1=n0*a1 n1*a2 … nn-1*an;
评分差值k:
据此,可直观分析出当前直播在两个缓存评分中的变化情况,便于后续的调整。
如图3所示,假设当前缓存评分为长度三对应的38330,历史缓存评分为上一次缓存评分,也即长度二对应的72055,则:
步骤b52,确定所述评分差值对应的变动值,并基于所述变动值,调整所述缓存比值。
在一实施例中,事先制定以下规则:
缓存系统即可根据上述规则,以及计算得到的评分差值,确定对应的变动值y,再根据变动值,调整最近缓存区和最热缓存区的缓存比值。
具体的,最新缓存比值p1=p0 y
其中,p0为当前最近缓存区的缓存容量:当前最热缓存区的缓存容量,也即最近缓存容量:最热缓存容量,也即当前缓存比值,p0默认为50%,取值范围可设min-max,如50%-90%等;若最终p1大于max,则p1=max;若p1小于min,则p1=min;y为变动值,按照上述表格规则取值。
需要说明的是,min和max可根据实际情况进行设置。在实际应用中,从直播开始会越来越多人观看,到达高峰之后逐渐下滑,对于时移缓存来说,前中期需要保证最近缓存区的缓存容量占比逐渐增大,后期慢慢进行调整回落,使得索引服务器和缓存服务器缓存的时移数据大概率是观众想要的时移数据,提高时移命中率。
本实施例获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。本发明将时移视频和视频索引进行分离存储,减轻缓存服务器的计算压力,提高时移请求的响应速度;且动态调整各服务器中最近缓存区和最热缓存区的缓存比值,使得各服务器的缓存空间得到最大利用,从而实现直播时移的智能缓存。
进一步地,基于本发明直播时移缓存方法第一实施例,提出本发明直播时移缓存方法第二实施例。
直播时移缓存方法的第二实施例与直播时移缓存方法的第一实施例的区别在于,直播时移缓存方法还包括:
步骤c,若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略;
步骤d,按照所述淘汰策略,确定最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
本实施例在缓存容量不足时,采取淘汰策略,有选择的将时移视频或者视频索引进行删除,以降低缓存压力,提高缓存智能性。
以下将对各个步骤进行详细说明:
步骤c,若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略。
在本实施例中,最近缓存区和最热缓存区都设置有淘汰策略,在最近缓存区或最热缓存区达到最大缓存容量时,通过最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略,其中,数据写入规则包括脚本写入和实时程序写入,在具体实施时,最近缓存区的数据可由跑批脚本进行写入,其遵循先进先出fifo算法规则,也即最近缓存区的淘汰策略遵循越早缓存的数据被访问的概率越低,也即淘汰早起的缓存数据;最热缓存区的数据可由实时程序写入,其遵循lru(theleastrecentlyused)最近最少使用算法规则,也即最热缓存区的淘汰策略遵循最近最少使用,也即淘汰最近最少使用的缓存数据。
需要说明的是,如果两种缓存,也即最近缓存区和最热缓存区都没有达到最大缓存容量,则不进行缓存淘汰,持续写入缓存。
此外,若后续的时移请求实际请求了被淘汰的缓存,那么实时程序将在最热缓存区中构建该缓存,也即视频索引和时移视频,后续有同样的时移请求,则直接访问最热缓存区即可。
步骤d,按照所述淘汰策略,确定最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
在本实施例中,按照确定的淘汰策略,确定最近缓存区或最热缓存区中的待淘汰时移视频或待淘汰视频索引,并将待淘汰时移视频或待淘汰视频索引删除,从而在不扩大存储空间的前提下,减少缓存压力。
本实施例在存储空间不足的情况下,通过数据写入规则,确定最近缓存区或最热缓存区的淘汰策略,并按照淘汰策略对最近缓存区或最热缓存区的缓存数据进行淘汰删除,降低缓存压力,并且按照淘汰策略保留了观众更有可能会时移的缓存数据,提高了时移请求的命中率。
进一步地,基于本发明直播时移缓存方法第一、第二实施例,提出本发明直播时移缓存方法第三实施例。
直播时移缓存方法的第三实施例与直播时移缓存方法的第一、第二实施例的区别在于,所述直播时移缓存方法还包括:
步骤e,若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引;
步骤f,若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端;
步骤g,若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
本实施例在检测到客户端发起时移请求时,先在索引服务器中判断是否存在与时移请求对应的目标视频索引,从而减轻缓存服务器的计算压力,在索引服务器中找到目标视频索引时,再去缓存服务器获取对应的第一视频内容;在索引服务器中找不到目标视频索引时,不需要再在缓存服务器中去匹配对应的视频内容,而是直接去原视频源中获取对应的第二视频内容,提高了时移请求的匹配速度。
以下将对各个步骤进行详细说明:
步骤e,若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引。
在本实施例中,若检测到客户端基于当前直播发送的时移请求,则先确定该时移请求对应的播放时间,也即确定观众拉动客户端播放器进度条到哪一位置,该位置对应的时间戳即为时移请求对应的播放时间。
然后,根据该播放时间,在索引服务器中查找是否存在当前时移请求对应的目标视频索引,具体将该播放时间与索引服务器中的视频索引一一进行比对,从而确定索引服务器中是否存在当前时移请求对应的目标视频索引。
步骤f,若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端。
在本实施例中,可以理解的,索引服务器存储的视频索引与缓存服务器存储的时移视频一一对应,因此,若确定索引服务器中存在与当前时移请求对应的目标视频索引,则去缓存服务器中获取目标视频索引对应的时移视频,也即第一视频内容,第一视频内容即为观众想要观看的视频画面,然后,将该第一视频内容分发至客户端,由客户端播放器进行播放。
步骤g,若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
在本实施例中,可以理解的,索引服务器存储的视频索引与缓存服务器存储的时移视频一一对应,因此,若确定索引服务器中不存在与当前时移请求对应的目标视频索引,则不需要再去缓存服务器中查找,而是直接去原视频源中查找,其中原视频源指的是缓存当前直播所有视频数据的服务器,也即直播端对应的服务器,在缓存服务器中没有当前时移请求对应的缓存数据时,才由原视频源消耗计算能力等性能,去获取对应的时移视频,也即第二视频内容,最后将第二视频内容分发至客户端播放器进行播放。
如图4所示缓存系统的架构示意图,客户端产生时移请求时,将时移请求先发送至索引服务器,在索引服务器中查找对应的目标视频索引,再在缓存服务器中查找对应的视频内容,也即时移视频,最后将对应的视频内容返回给客户端;若在索引服务器中未找到对应的目标视频索引,则直接去原视频源获取对应的视频内容,最后将原始的视频内容返回给客户端,在这过程中,原视频源持久化保存原始的直播数据,而跑批服务器则准实时,如每秒,跑批获取原视频源的直播数据,并更新索引服务器的视频索引,以及缓存服务器的时移视频。
进一步地,在一实施例中,步骤e包括:
步骤e1,若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述客户端本地是否存在所述时移请求对应的目标视频索引;
在一实施例中,在客户端本地存储空间足够的情况下,还可将当前直播的缓存数据缓存在客户端本地,因此,若检测到客户端基于当前直播发起的时移请求,则基于时移请求对应的播放时间,先在客户端本地确定是否存在时移请求对应的目标视频索引。
若存在,则直接读取客户端本地缓存,获取对应的视频内容,交由客户端播放器播放即可。
步骤e2,若确定不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤。
在一实施例中,若不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤,也即再去索引服务器查找对应的目标视频索引。
如图5所示时移场景,观众在直播过程中暂停观看,此时,客户端会缓存一定长度的缓存数据,也即存在已观看缓存和未观看缓存,其中,已观看缓存指的是客户端播放器从左到右播放,已经播放过的视频内容会缓存起来,如果客户端本地存储空间不足,则进行缓存清理,清理逻辑可以是从前到后,清理最先缓存的视频内容;而未观看缓存指的是当客户端播放器暂停时,客户端继续拉取直播的视频内容进行缓存,拉取多长的视频内容可根据实际情况自定义。
一段时间后,观众继续收看直播,假设当前播放进度为ts,若拉动播放器进度条到n1位置,也即时移偏差为n1,该位置对应的时间戳没有缓存视频内容,因此需要发送时移请求(ts-n1)至索引服务器进行拉取;
若拉动播放器进度条到n2位置,也即时移偏差为n2,该位置对应的时间戳有缓存视频内容,则直接在客户端本地拉取对应的视频内容进行播放,具体拉取(ts-n2)对应的视频内容;
若拉动播放器进度条到n3位置,也即时移偏差为n3,该位置对应的时间戳有缓存视频内容,则直接在客户端本地拉取对应的视频内容进行播放,具体拉取(ts-n3)对应的视频内容;
若拉动播放器进度条到n4位置,也即时移偏差为n4,该位置对应的时间戳没有缓存视频内容,因此需要发送时移请求(ts n4)至索引服务器进行拉取。可以理解的,超出当前时刻的直播内容没有进度条,如当前直播时刻是9点50分,直播开始时间为9点,观众在客户端观看该直播时,在9点半按下暂停,假设已观看缓存为9点20分到9点30分,未观看缓存为9点30分到9点40分,整个直播进度条为9点到9点50分,假设图5的n1位置即为9点到9点10分之间,n4位置即为9点40到9点50之间,都没有缓存,都需要到索引服务器进行拉取,n2和n3位置都有缓存,可直接本地播放,此外,由于进度条只有9点到9点50分的进度,观众不可以拉动进度条到9点前和9点50分之后的位置。
需要说明的是,在拉取相应视频内容时,需计算当前播放进度ts与时移偏差的数值,取最近的上一个时间戳索引作为最终索引,如当前播放进度ts对应的时间戳为timestamp_index_2,当前播放进度时间戳timestamp_index_2和时移偏差n计算出来,若处于timestamp_index_5和timestam_index_6之间,如n为n秒,也即观众移动了n秒的进度,则此时的时间戳为timestamp_index_2 n,假设介于timestamp_index_5和timestam_index_6之间,则由于上一个时间戳索引为5,因此定位最终的时间戳为timestamp_index_5,确保定位完整,不会因为选择timestam_index_6导致timestamp_index_2 n与timestam_index_6之间的内容被跳过,也即提供更为完整的视频内容。
本实施例将视频索引与缓存视频分离存储,当收到客户端时移请求时,索引服务器只需做匹配即可快速定位到对应的目标视频索引,不需要计算生成索引的步骤,因此性能非常高效,此外,还可将缓存数据缓存在客户端本地,减少网络带宽,提升时移播放效率。
需要说明的是,在另一实施例中,除了通过跑批服务器准实时生成视频索引之外,还可以实时生成,具体可根据客户端的时移请求,判断索引服务器是否存在对应的视频索引,若有,则直接返回对应的缓存数据;若没有,则索引服务器立即生成对应的视频索引,再根据生成的视频索引去找对应的缓存数据返回给客户端。相较上述实施例,虽然需要消耗索引服务器大量的cpu计算资源,但可以实时实现,也即在另一实施例中,若服务器性能较佳,可以牺牲部分服务器性能为代价,从而实现视频索引的实时生成。
本发明还提供一种直播时移缓存装置。本发明直播时移缓存装置包括:
跑批模块,用于获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
缓存模块,用于将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
优选地,所述缓存模块还用于:
确定所述直播对应的最近缓存长度,并获取所述最近缓存长度对应的在线人数;
基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分;
基于所述缓存评分,调整所述缓存比值。
优选地,所述缓存模块还用于:
基于所述缓存长度,计算所述在线人数的权重值;
基于所述在线人数和所述权重值,计算所述直播的缓存评分。
优选地,所述缓存模块还用于:
获取所述直播的历史缓存评分,并基于所述历史缓存评分与所述缓存评分,计算评分差值;
确定所述评分差值对应的变动值,并基于所述变动值,调整所述缓存比值。
优选地,所述缓存模块还用于:
若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略;
按照所述淘汰策略,确定最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
优选地,所述跑批模块还用于:
获取预先记录的所述直播的历史时移请求;
确定所述历史时移请求对应的时移视频,并统计所述时移视频的请求次数;
基于所述请求次数,确定所述时移视频中的目标时移视频,并获取。
优选地,所述直播时移缓存装置还包括请求处理模块,请求处理模块用于:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引;
若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端;
若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
优选地,所述请求处理模块还用于:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述客户端本地是否存在所述时移请求对应的目标视频索引;
若确定不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有直播时移缓存程序,所述直播时移缓存程序被处理器执行时实现如上所述的直播时移缓存方法的步骤。
其中,在所述处理器上运行的直播时移缓存程序被执行时所实现的方法可参照本发明直播时移缓存方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书与附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
1.一种直播时移缓存方法,其特征在于,所述直播时移缓存方法包括如下步骤:
获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
2.如权利要求1所述的直播时移缓存方法,其特征在于,所述缓存比值动态调整的步骤包括:
确定所述直播对应的最近缓存长度,并获取所述最近缓存长度对应的在线人数;
基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分;
基于所述缓存评分,调整所述缓存比值。
3.如权利要求2所述的直播时移缓存方法,其特征在于,所述基于所述最近缓存长度和所述在线人数,计算所述直播的缓存评分的步骤包括:
基于所述缓存长度,计算所述在线人数的权重值;
基于所述在线人数和所述权重值,计算所述直播的缓存评分。
4.如权利要求2所述的直播时移缓存方法,其特征在于,所述基于所述缓存评分,调整所述缓存比值的步骤包括:
获取所述直播的历史缓存评分,并基于所述历史缓存评分与所述缓存评分,计算评分差值;
确定所述评分差值对应的变动值,并基于所述变动值,调整所述缓存比值。
5.如权利要求1所述的直播时移缓存方法,其特征在于,所述直播时移缓存方法还包括:
若最近缓存区或最热缓存区达到最大缓存容量,则基于最近缓存区或最热缓存区的数据写入规则,确定最近缓存区或最热缓存区的淘汰策略;
按照所述淘汰策略,确定所述缓存服务器或所述索引服务器对应的最近缓存区或最热缓存区的待淘汰时移视频或待淘汰视频索引,并删除。
6.如权利要求1所述的直播时移缓存方法,其特征在于,所述获取直播的目标时移视频的步骤包括:
获取预先记录的所述直播的历史时移请求;
确定所述历史时移请求对应的时移视频,并统计所述时移视频的请求次数;
基于所述请求次数,确定所述时移视频中的目标时移视频,并获取。
7.如权利要求1-6任一项所述的直播时移缓存方法,其特征在于,所述将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区的步骤之后,所述直播时移缓存方法还包括:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引;
若存在,则在所述缓存服务器中获取所述目标视频索引对应的第一视频内容,并将所述第一视频内容分发至所述客户端;
若不存在,则在所述直播对应的原视频源中获取所述目标视频索引对应的第二视频内容,并将所述第二视频内容分发至所述客户端。
8.如权利要求7所述的直播时移缓存方法,其特征在于,所述若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤包括:
若检测到客户端基于所述直播发送的时移请求,则基于所述时移请求对应的播放时间,确定所述客户端本地是否存在所述时移请求对应的目标视频索引;
若确定不存在,则执行基于所述时移请求对应的播放时间,确定所述索引服务器中是否存在所述时移请求对应的目标视频索引的步骤。
9.一种直播时移缓存装置,其特征在于,所述直播时移缓存装置包括:
跑批模块,用于获取直播的目标时移视频,并基于所述目标时移视频对应的播放时间,创建所述目标时移视频对应的视频索引;
缓存模块,用于将所述目标时移视频存储在缓存服务器的缓存区,并将所述视频索引存储在索引服务器的缓存区;
其中,所述缓存服务器的缓存区与所述索引服务器的缓存区对应,都包括最近缓存区和最热缓存区,且最近缓存区的缓存容量与最热缓存区的缓存容量的缓存比值动态调整。
10.一种直播时移缓存系统,其特征在于,所述直播时移缓存系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的直播时移缓存程序,所述直播时移缓存程序被所述处理器执行时实现如权利要求1至8中任一项所述的直播时移缓存方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有直播时移缓存程序,所述直播时移缓存程序被处理器执行时实现如权利要求1至8中任一项所述的直播时移缓存方法的步骤。
技术总结