多用户环境下流式数据处理方法技术

技术编号:19121700 阅读:67 留言:0更新日期:2018-10-10 05:00
多用户环境下流式数据处理方法,涉及计算机数据处理技术。本发明专利技术包括下述步骤:1)自数据流中读取数据内容,按读取顺序存储到内存环中的存储区;2)若接收到用户数据请求,则根据用户请求的优先级,将用户请求加入请求队列;3)按照队列顺序处理用户请求,在内存环中检索请求中的数据内容,若检索出符合请求的数据,进入步骤4);若未检索出符合请求的数据,则进入步骤5);4)向该用户返回其请求的数据在内存环中的地址指针;5)等待预定时长后将该用户请求重新加入请求队列,若经过预定次数或预定时长后依然未检索出符合请求的数据,则向用户返回提示信息。本发明专利技术降低了系统资源的消耗。

【技术实现步骤摘要】
多用户环境下流式数据处理方法
本专利技术涉及计算机数据处理技术。
技术介绍
流式数据,又叫做流水数据,是一组顺序、连续到达的数据序列,一般情况下,流式数据可被视为一个随时间延续而无限增长的动态数据集合;严格意义上讲,由数千个数据源持续生成的数据,通常也同时以数据记录的形式发送,数据规模时时变化的数据形式。同时,流式数据的特点:1)数据传输实时性;2)数据传输顺序独立性,不受外部因素所控制;3)数据规模不确定性,不能预知其最大值或者最小值;4)数据回溯难度高,一经处理,除非特意保存,否则不能被再次取出,或者再次提取数据代价高。基于流式数据自身的特点,其在内存中处理难度就显得尤为突出。随着互联网、物联网的不断发展,同时在网络监控、传感器网络、航空航天、气象测控和金融服务等领域广泛存在,人们对流式数据的处理需求也日渐增多。在多用户的环境下,不同的用户对数据流中的元数据有不同的要求,共享内存机制是现阶段比较常见的流式数据内存处理方式如图1所示,以共享内存方式实现用户间数据的处理(IPC),用户A创建内存块,映射共享内存数据,把指定的共享数据映射到用户的地址空间用于访问;用户B创建共享内存,映射共享内存数据,把指定的共享数据映射到用户的地址空间用于访问,映射成功后就能从用户的内存中读出数据,以此类推。这样能够有效保护元数据的完整性和正确性,但也不可避免的造成了系统资源的过多消耗,降低了系统效率,随着数据量的不断增大,该问题越专利技术显和严重。同时由于该机制是动态地从内存中申请,在数据量操作频繁的系统中,也带来了系统实时性和内存碎片等问题。共享内存机制实现用户间通信,一般采用的步骤有:A用户:1)创建命名的共享内存,包含N个固定大小为X的块区域。2)创建内部线程同步机制阻止多个线程同时获得数据块,创建运行条件;3)等待信号,当前块可读;4)从内存中读取该内存块,读完之后标识它们再次可写;5)转到步骤3)。B线程:1)创建命名的共享内存,包含N个固定大小为X的块区域;2)创建内部线程同步机制阻止多个线程同时获得数据块,创建运行条件;3)等待信号,当前块可读;4)从内存中读取该内存块,读完之后标识它们再次可写;5)转到步骤3)。
技术实现思路
本专利技术所要解决的技术问题是,提供一种具有更高处理效率的流式数据处理方法。本专利技术解决所述技术问题采用的技术方案是,多用户环境下流式数据处理方法,其特征在于,包括下述步骤:1)自数据流中读取数据内容,按读取顺序存储到内存环中的存储区,所述内存环为遵循先进先出原则的、由至少8个存储区构成的内存区;2)若接收到用户数据请求,则根据用户请求的优先级,将用户请求加入请求队列;3)按照队列顺序处理用户请求,在内存环中检索请求中的数据内容,若检索出符合请求的数据,进入步骤4);若未检索出符合请求的数据,则进入步骤5);4)向该用户返回其请求的数据在内存环中的地址指针;5)等待预定时长后将该用户请求重新加入请求队列,若经过预定次数或预定时长后依然未检索出符合请求的数据,则向用户返回提示信息。进一步的,所述步骤4)包括:(4.1)向该用户返回其请求的数据在内存环中的地址指针,并记录该数据所在的内存地址与提出请求的用户,然后进入步骤(4.2);(4.2)若该数据已被全部用户请求过,则释放该数据所占用的内存地址。本专利技术所述的“先进先出原则”是指按照写入内存区的顺序,先写入的数据所占的内存先释放(即设置为可写入新数据的状态)。本专利技术的有益效果是,降低了系统资源的消耗,特别是内存空间的消耗;避免了用户频繁的申请和释放内存;减少了内存碎片的产生;降低了造成内存泄漏的几率;提升了系统的运行效率。附图说明图1是现有技术的应用示意图。图2是本专利技术的应用示意图。图3是本专利技术的内存环的原理图。图4是本专利技术的数据共享机制的结构框图。图5是本专利技术的用户请求数据时序图。图6是本专利技术的数据存储时序图。图7是本专利技术的内存环数据存取算法示意图。图8是本专利技术的内存环数据搜索示意图。具体实施方式本专利技术采用环形内存零拷贝处理机制。改机制在传统的数据共享机制的基础,对核心模块进行了重新设计和封装,同时引入了内存环的概念。如图2所示,与传统机制相比,最大的不同是用户在从内存缓存去获取数据时,得到的不是具体数据,而是数据对应的内存地址。参见图3。环形内存数据共享机制的原理:预先从内存中分配一块内存来构建内存环,该内存环的初始大小计算公式:nCount=(rear-front+nSize)%nSize。Rear:表示队列尾偏移量,该量放置在共享内存Head中,对所有组件可见;Front:表示当前进程的头偏移量,该量为进程私有变量,对当前组件可见;nSize:表示队列最大单元结构数目,该量放置在共享内存Head中,对所有组件可见。内存环创建完成之后,后面的组件直接映象即可。在使用时为了防止非法操作,在映射时可验证名称和结构单元的长度。环境内存数据共享机制在软件中以一个组件的方式运作,该组件的结构框图如图4所示。用户调度模块:环形内存处理器对外接口层,为外部提供必要的接口,同时也完成用户的调度管理。环形内存管理模块:环形内存处理器中内存缓冲区管理,负责日常的内存申请和释放,以及内存数据的维护。环形内存数据模块:元数据存储层,环形内存处理器内部存储结构区。图5和图6示出了本专利技术的内存环数据共享机制时序。在元数据进行写入时候,运用循环队列构建缓存区,按顺序依次写入数据,即原始数据的缓存。若缓冲区被写满,即可写入的缓存空间为0时,则新写入的数据自动覆盖最早写入的数据,此时会有数据写溢出告警,即数据读取处理的速度小于了数据写入速率,需要根据情况调整数据读取的速率。在提取数据时,采用零拷贝的方式,即一份数据在经过缓存以后不再拷贝即可被多个数据消费者同时使用,数据消费者使用数据时先申请指定长度的数据,查询成功后再在数据缓冲区添加此数据消费者需求数据的指针,数据使用完成后释放该消费指针。同理,多个消费者并发访问同一份数据时,构建多个指针指向同一缓存区的不同地址,以满足不同消费者消费同一类数据的需求。如图7所示。在元数据进行写入时候,此时运用循环队列来实现缓存区。此算法有两个重点:内存环,实时操作的内存容量。内存环申请的大小可以自定义,每个单元结构也可以自定义进行构造。进队列(写入数据):pucWrite=(pucWrite+写入数据大小-pucHead)%iBufferSize+pucHead出队列(读取数据):pucLastRead=(pucLastRead+读取数据大小-pucHead)%iBufferSize+pucHead每次写入或者读取的大小也是可根据需要进行变化的,减少内存空间的浪费和内存碎片的产生,如图4所示。具体的原则如下:当pucWrite大于pucLastRead(最后读取缓冲区共享数据地址)时:可写入数据内存=pucLastRead+iBufferSize–pucWrite–1当pucWrite小于pucLastRead(最后读取缓冲区共享数据地址)时:可写入数据内存=pucLastRead–pucWrite–1当pucWrite等于pucLastRead(最后读取缓冲区共享数据地址)时:可写入数据内存=iBufferSize–1当pu本文档来自技高网
...
多用户环境下流式数据处理方法

【技术保护点】
1.多用户环境下流式数据处理方法,其特征在于,包括下述步骤:1)自数据流中读取数据内容,按读取顺序存储到内存环中的存储区,所述内存环为遵循先进先出原则的、由至少8个存储区构成的内存区;2)若接收到用户数据请求,则根据用户请求的优先级,将用户请求加入请求队列;3)按照队列顺序处理用户请求,在内存环中检索请求中的数据内容,若检索出符合请求的数据,进入步骤4);若未检索出符合请求的数据,则进入步骤5);4)向该用户返回其请求的数据在内存环中的地址指针;5)等待预定时长后将该用户请求重新加入请求队列,若经过预定次数或预定时长后依然未检索出符合请求的数据,则向用户返回提示信息。

【技术特征摘要】
1.多用户环境下流式数据处理方法,其特征在于,包括下述步骤:1)自数据流中读取数据内容,按读取顺序存储到内存环中的存储区,所述内存环为遵循先进先出原则的、由至少8个存储区构成的内存区;2)若接收到用户数据请求,则根据用户请求的优先级,将用户请求加入请求队列;3)按照队列顺序处理用户请求,在内存环中检索请求中的数据内容,若检索出符合请求的数据,进入步骤4);若未检索出符合请求的数据,则进入步骤5);4)向该用户返回其请求的...

【专利技术属性】
技术研发人员:罗晓辉
申请(专利权)人:电信科学技术第五研究所有限公司
类型:发明
国别省市:四川,51

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

1