一种基于HTTP的小文件读写优化方法与流程

文档序号:17627378发布日期:2019-05-10 23:48阅读:442来源:国知局
一种基于HTTP的小文件读写优化方法与流程

本发明涉及文件读写相关技术领域,尤其是指一种基于http的小文件读写优化方法。



背景技术:

目前在视频直播领域中,hls(httplivestreaming)格式由于其良好的兼容性、便于cdn加速、便于形成时移回看等原因,占据着较大市场份额。因此很多服务商都会将直播流转成hls,然后再通过时移回看系统,最后经cdn加速分发给终端用户播放。在生成直播时,很多系统会采用http-put方式输入到使用nginx或tomcat等第三方开源软件塔建的http服务,然后直接写入到磁盘中,如果磁盘写入一旦发生抖动,就会造成直播卡顿等现象,客户体验很差。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种保证直播流畅提高客户体验的基于http的小文件读写优化方法。

为了实现上述目的,本发明采用以下技术方案:

一种基于http的小文件读写优化方法,具体包括如下步骤:

(1)写入执行:在数据写入时,由于先写入到缓存,再异步写入存储;

(2)读取执行:在数据读取时,由于先从缓存中读取,如果缓存不存在,才会从实际存储读取;

(3)删除执行:在数据删除时,由于从缓存中删除,再异步删除存储。

在数据写入时,由于先写入到缓存,再异步写入存储,所以对外部来说会有较高的写入性能,即使在实际写入存储时速度比较低,也不会影响外部写入的性能;在数据读取时,由于先从缓存中读取,如果缓存不存在,才会从实际存储读取,所以只要根据业务场景,缓存配置合理,会有较高的读取效率;在数据删除时,由于先从缓存中删除,再异步删除存储,所以对外部来说会有较高的删除性能,即使在实际删除存储时速度比较低,也不会影响外部删除的性能;上述方法优化存储读写延时问题,解决在存储写入可能发生抖动时直播流不能流畅播放的问题。

作为优选,在步骤(1)中,写入执行的具体步骤如下:

(11)http容器模块收到客户端写入请求,采用put方法;

(12)写入到缓存,并设置缓存时长;

(13)增加异步写入存储任务;如果有多个输出存储,则需要多个异步写入任务;

(14)http容器返回执行结果,结束主流程;

(15)缓存模块中有个后台进程会定时扫描缓存,将过期的缓存清除。

作为优选,在步骤(13)中,异步写入存储的具体步骤如下:

(131)在缓存中查找文件是否过期;

(132)如果已经过期,则退出写入存储过程,认为写入失败;

(133)如果缓存未过期,则从缓存中读取文件内容,并写入到实际存储;

(134)写入过程如果失败,则重复步骤(131)到步骤(133)的过程,直播写入成功或者失败;

(135)写入成功或者失败,任务执行结束。

作为优选,在步骤(2)中,读取执行的具体步骤如下:

(21)http容器模块收到客户端读取请求,采用get方法;

(22)如果缓存中存在该文件,则直接返回给客户端;

(23)如果缓存中不存在该文件,则从实际存储中读取,同步返回;

(24)根据缓存规则,将文件内容写入到缓存,如果不需要缓存,则跳过;

(25)http容器返回执行结果,结束读取流程。

作为优选,在步骤(3)中,删除执行的具体步骤如下:

(31)http容器模块收到客户端删除请求,采用delete方法;

(32)从缓存删除;

(33)增加异步删除任务;如果有多个输出存储,则需要多个异步删除任务;

(34)http容器返回执行结果,结束主流程。

作为优选,在步骤(33)中,异步写入存储的具体步骤如下:

(331)检查是否超过最大重试次数;

(332)如果已经超过最大重试次数,则退出删除存储过程,认为删除失败;

(333)如果未超过最大重试次数,则从实际存储中删除文件;

(334)删除过程如果失败,则重复步骤(331)到步骤(333)的过程,直播删除成功或者失败;

(335)删除成功或者失败,任务执行结束。

本发明的有益效果是:根据业务场景,缓存配置合理,读取效率高,优化存储读写延时问题,解决在存储写入可能发生抖动时直播流不能流畅播放的问题。

附图说明

图1是本发明的写入执行过程图;

图2是本发明的读取执行过程图;

图3是本发明的删除执行过程图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

一种基于http的小文件读写优化方法,具体包括如下步骤:

(1)写入执行:在数据写入时,由于先写入到缓存,再异步写入存储;

如图1所示,写入执行的具体步骤如下:

(11)http容器模块收到客户端写入请求,采用put方法;

(12)写入到缓存,并设置缓存时长;

(13)增加异步写入存储任务;如果有多个输出存储,则需要多个异步写入任务;

其中:异步写入存储的具体步骤如下:

(131)在缓存中查找文件是否过期;

(132)如果已经过期,则退出写入存储过程,认为写入失败;

(133)如果缓存未过期,则从缓存中读取文件内容,并写入到实际存储;

(134)写入过程如果失败,则重复步骤(131)到步骤(133)的过程,直播写入成功或者失败;

(135)写入成功或者失败,任务执行结束。

(14)http容器返回执行结果,结果主流程;

(15)缓存模块中有个后台进程会定时扫描缓存,将过期的缓存清除。

(2)读取执行:在数据读取时,由于先从缓存中读取,如果缓存不存在,才会从实际存储读取;

如图2所示,读取执行的具体步骤如下:

(21)http容器模块收到客户端读取请求,采用get方法;

(22)如果缓存中存在该文件,则直接返回给客户端;

(23)如果缓存中不存在该文件,则从实际存储中读取,同步返回;

(24)根据缓存规则,将文件内容写入到缓存,如果不需要缓存,则跳过;

(25)http容器返回执行结果,结束读取流程。

(3)删除执行:在数据删除时,由于从缓存中删除,再异步删除存储;

如图3所示,删除执行的具体步骤如下:

(31)http容器模块收到客户端删除请求,采用delete方法;

(32)从缓存删除;

(33)增加异步删除任务;如果有多个输出存储,则需要多个异步删除任务;

其中:异步写入存储的具体步骤如下:

(331)检查是否超过最大重试次数;

(332)如果已经超过最大重试次数,则退出删除存储过程,认为删除失败;

(333)如果未超过最大重试次数,则从实际存储中删除文件;

(334)删除过程如果失败,则重复步骤(331)到步骤(333)的过程,直播删除成功或者失败;

(335)删除成功或者失败,任务执行结束。

(34)http容器返回执行结果,结束主流程。

其中,http容器:该模块面向客户端,接收文件的写入(httpput)、读取(httpget)、删除(httpdelete)请求,并将经过其他模块处理后的结果或数据返回给客户端。缓存模块:该模块管理文件的缓存及其生命周期,可以根据不同文件类型设置不同的缓存时间。读写模块:该模块将缓存中的文件内容写入到实际的存储,该模块根据需要可以扩展支持多种后端存储,比如本地存储、http存储、ftp存储、对象存储等,同时也可以支持一进多出模式。

在数据写入时,由于先写入到缓存,再异步写入存储,所以对外部来说会有较高的写入性能,即使在实际写入存储时速度比较低,也不会影响外部写入的性能;在数据读取时,由于先从缓存中读取,如果缓存不存在,才会从实际存储读取,所以只要根据业务场景,缓存配置合理,会有较高的读取效率;在数据删除时,由于先从缓存中删除,再异步删除存储,所以对外部来说会有较高的删除性能,即使在实际删除存储时速度比较低,也不会影响外部删除的性能。另外,该存储方案也可以有较高好扩展性,可以根据需要可以扩展支持多种后端存储,比如本地存储、http存储、ftp存储、对象存储等,也可以支持一进多出的存储模式,可以起到备份的作用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1