一种基于嵌入式文件系统的流式数据读取方法技术方案

技术编号:10994117 阅读:190 留言:0更新日期:2015-02-04 13:14
本发明专利技术提出了一种基于嵌入式文件系统的流式数据读取方法,该方法包括:接收一个读取流式数据的请求,当被请求的流式数据存在于磁盘时,则为该请求新建一个读任务,并为新建的读任务分配存储空间并初始化相关参数;将读任务分解成多个子任务,每个子任务负责读取一段物理上连续的数据,并进行缓存;从子任务缓存中取出数据,按流式数据格式进行封装,每封装完一块数据就提交给本次读任务的调用方,提交完成后释放本次子任务并触发下一个子任务;当所有子任务都成功完成时,向任务调用方报告任务正常完成,等待任务调用方结束当前读任务。本发明专利技术有利于流式数据的高吞吐和大并发读取,有效地解决了在大量用户访问热点数据时服务器并发性能低下的问题。

【技术实现步骤摘要】
【专利摘要】本专利技术提出了,该方法包括:接收一个读取流式数据的请求,当被请求的流式数据存在于磁盘时,则为该请求新建一个读任务,并为新建的读任务分配存储空间并初始化相关参数;将读任务分解成多个子任务,每个子任务负责读取一段物理上连续的数据,并进行缓存;从子任务缓存中取出数据,按流式数据格式进行封装,每封装完一块数据就提交给本次读任务的调用方,提交完成后释放本次子任务并触发下一个子任务;当所有子任务都成功完成时,向任务调用方报告任务正常完成,等待任务调用方结束当前读任务。本专利技术有利于流式数据的高吞吐和大并发读取,有效地解决了在大量用户访问热点数据时服务器并发性能低下的问题。【专利说明】
本专利技术涉及数据存储
,尤其涉及。
技术介绍
随着互联网及多媒体产业的迅猛发展,各种存储技术及存储系统也得到了飞速发展。这些存储系统为海量的互联网信息及多媒体数据信息提供了方便、快速、高效的存储及访问服务。 嵌入式系统资源有限,结构简单,介于其特殊性和专用性,很少在嵌入式系统中采用通用的操作系统和文件系统,而是针对特定应用场景为嵌入式系统定制文件系统;可嵌入式系统的应用范围非常广泛,不可能有一种文件系统在所有嵌入式系统中一统天下,适用于大到嵌入式服务器,小到嵌入式机顶盒等的所有情况,而是根据系统应用环境和目标等来选择构建合适的文件系统。不同文件系统管理磁盘的策略和读写数据的方法不一样,现有技术最亟待解决的就是数据读取的高吞吐、高并发问题。 文件系统读取数据的速率一方面取决于底层接口的1性能,另一方面取决于文件系统自身的调度效率,文件系统读取数据的并发能力则与内部调度机制有关。
技术实现思路
本专利技术的目的在于,为嵌入式流服务提供高吞吐、高并发的数据读取服务,从而提出了。 为实现上述目的,本专利技术提出了,该方法包括以下步骤: 接收一个读取流式数据的请求,当被请求的流式数据存在于磁盘时,则为该请求新建一个读任务,并为新建的读任务分配存储空间并初始化相关参数; 将读任务分解成多个子任务,每个子任务负责读取一段物理上连续的数据,并进行缓存; 从子任务缓存中取出数据,按流式数据格式进行封装,每封装完一块数据就提交给本次读任务的调用方,提交完成后释放本次子任务并触发下一个子任务; 当所有子任务都成功完成时,向任务调用方报告任务正常完成,等待任务调用方结束当前读任务。 优选地,当收到一个读取流式数据的请求时,计算请求文件名的哈希值,通过对哈希值进行查找,进而判断被请求数据是否存在于磁盘。 优选地,一个读取流式数据的请求参数包括:文件名、读取数据的起始偏移和结束偏移,在为该请求新建一个读任务后,为读任务分配存储空间,将文件名哈希值、待读取数据的起始偏移、结束偏移信息存入读任务分配的存储空间,从而完成读任务初始化。 优选地,根据读任务的起始偏移和结束偏移,计算出任务长度,结合待读流式数据存放于磁盘中的位置信息,将所述读任务分解成多个子任务;所有子任务通过链表串联,按先后顺序依次触发子任务。 优选地,在每个子任务开始后,首先获取本次子任务欲读取流式数据的起始扇区和长度,根据欲读取流式数据长度为待读取流式数据申请内存空间,再根据起始扇区计算出将从哪一块磁盘中读流式数据,最后调用下层接口从指定磁盘中读取指定区段的流式数据。 优选地,在每个子任务完成后,底层接口发送消息通知文件系统当前子任务执行成功或失败,文件系统在收到子任务成功完成的消息后,从当前子任务缓存中取出数据。 优选地,在执行每个子任务时会为待读流式数据预分配内存空间,用于缓存从磁盘中读出的数据;每个子任务标识的待读流式数据长度须为磁盘扇区大小的整数倍,且子任务从磁盘中读取数据时采用异步非阻塞1模式。 优选地,在上一次子任务成功结束后向文件系统发送消息,文件系统收到消息后从子任务的数据缓存区将数据拷贝到新申请的内存中,并按流式数据格式进行封装,封装好后提交给本次读取任务的调用方,进而触发下一个子任务,直到所有子任务均已结束。 优选地,对于尚未完成的读任务,通过向前调整任务结束位置提前结束任务,对于已经读取完成的任务,通过向后调整任务结束位置追加读取数据。 优选地,在每个子任务进行过程中,根据需要更改读任务结束偏移,当新任务结束偏移比当前子任务结束偏移小,则忽略本次更新;否则,用新任务结束偏移替换任务参数中的读数据结束偏移,并根据新任务结束偏移重新生成子任务。 与现有技术相比,本专利技术的优势在于: 1、高效性一本专利技术通过对任务进行分解,保障了每个子任务读取一段逻辑和物理上均连续的数据,同时限制单个子任务读取的数据长度,提高了读取数据的效率; 2、高并发——采用异步读机制,调用下层读接口后立即返回,无需阻塞在读数据过程中;还支持多核协作,子任务成功执行后下层接口发送消息报告子任务成功执行,此消息再去驱动下一子任务,下一子任务则可能由另一个核执行,这两点为流式数据读取的高并发性能提供了保障。 此外,本专利技术还允许用户在读取数据的过程中更改结束偏移,丰富了用户的操作方式,在流服务应用场景中具有较大优势。 【专利附图】【附图说明】 图1是本专利技术实施例提供的流程示意图; 图2是图1所示专利技术实施例消息驱动流程图; 图3是图1所不专利技术实施例读任务流程图; 图4是图1所示专利技术实施例子任务链表示意图。 【具体实施方式】 下面结合附图和实例对本专利技术进行详细说明,使得本专利技术的上述优点更加明确: 本专利技术实施例针对现有嵌入式流服务中存在的数据读取效率和并发能力不够高的问题,提出了,该方法通过对任务进行分解,提高了读取数据的效率,采用异步读机制保障了流式数据的高并发读取,还允许用户在读取数据的过程中更改结束偏移,丰富了用户的操作方式,在流服务应用场景中具有较大优势。 图1是本专利技术实施例提供的流程示意图,图2是消息驱动流程图,本专利技术实施例采用事件驱动机制,所有事件以消息为载体进行驱动,有关启动任务、更新任务、处理读出数据和结束任务都是由消息驱动。以下结合图1和图2对本专利技术实施例进行详细说明,如图1所示,该方法包括步骤101-104: 在步骤101,接收一个读取流式数据的请求,当被请求的流式数据存在磁盘时,贝U为该请求新建一个读任务,并为新建的读任务分配存储空间并初始化相关参数。 具体地,消息接收器负责接收所有消息,对收到的消息进行判断,根据消息类型进行响应,消息类型包括启动任务、更新任务、处理读出数据和结束任务。当用户调用文件系统提供的接口请求读取数据成功后,文件系统会发出一个启动消息,消息接收器收到启动消息后,由文件系统执行图2的第一个分支“启动任务”,启动任务即为新请求创建一个读任务。 优选地,当收到一个读取流式数据的请求时,首先判断被请求的流式数据是否存在,判断方法是:计算请求文件名的哈希值,对哈希值进行查找,若能找到,即被请求的流式数据存在于磁盘中,则立即为该请求新建一个读任务,为新任务分配存储空间并初始化相关参数;若被请求的流式数据不存在于磁盘中,则通知用户读请求失败。 一个流式数据读取请求参数包括文件名、读取数据的起始偏移和结束偏移等,新建一个读任务后,为新任务分配内存空间,将文件名哈希值、待读取本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201410653260.html" title="一种基于嵌入式文件系统的流式数据读取方法原文来自X技术">基于嵌入式文件系统的流式数据读取方法</a>

【技术保护点】
一种基于嵌入式文件系统的流式数据读取方法,其特征在于:接收一个读取流式数据的请求,当被请求的流式数据存在于磁盘时,则为该请求新建一个读任务,并为新建的读任务分配存储空间并初始化相关参数;将所述读任务分解成多个子任务,每个子任务负责读取一段物理上连续的数据,并进行缓存;从子任务缓存中取出数据,按流式数据格式进行封装,每封装完一块数据就提交给本次读任务的调用方,提交完成后释放本次子任务并触发下一个子任务;当所有子任务都成功完成时,向任务调用方报告任务正常完成,等待任务调用方结束当前读任务。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈君吴京洪李明哲樊皓叶晓舟
申请(专利权)人:中国科学院声学研究所北京中科智网科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1