[发明专利]构造数据队列的方法、装置及从其插入和消费对象的方法有效
申请号: | 201410132403.1 | 申请日: | 2014-04-02 |
公开(公告)号: | CN104978321B | 公开(公告)日: | 2018-12-04 |
发明(设计)人: | 罗实;封仲淹;陈昱 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F8/30 |
代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 构造 数据 队列 方法 装置 插入 消费 对象 | ||
本申请公开一种构造数据队列的方法和装置,同时还公开从该数据队列中插入和消费对象的方法。所述构造数据队列的方法包括设置环形数组、为环形数组设置put计数器和take计数器,所述环形数组具有size个槽位,首尾槽位衔接,形成环形,每个槽位中可存储规定格式的数据对象;向该环形数组中存储数据对象称为插入对象,从该环形数组中拉取数据对象并清空相应的槽位称为消费对象,所述插入和消费均沿环形数组规定方向顺序操作。所述put计数器对向环形数组插入对象进行计数,所述take计数器对从环形数组消费对象进行计数,所述put计数器和take计数器为初始值为零的递增变量。该数据队列可以提高系统吞吐量,并且降低数据延迟,提高系统数据存储和传输速度。
技术领域
本申请涉及计算机技术,尤其是涉及一种构造数据队列的方法。本申请还涉及一种向该构造数据队列的方法构造的队列中插入对象以及从该队列中消费对象的方法。另外,本申请还涉及一种构造数据队列的装置。
背景技术
计算机领域需要处理大量的数据,因此,如何有效的实现存储和组织数据是一个重要的问题,为此,产生了专门研究上述问题的学科,即数据结构。
数据队列(Queue)是一种常用的数据结构;通常的数据队列是一种先进先出的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。这种数据结构形式在多种数据处理场合均有应用。
例如,在实时计算系统也可称为流式计算系统中,数据从产生就源源不断地参与计算的系统。在大数据处理领域,相比于其它非流式计算系统,如著名的Hadoop(分布式系统),流式计算具有数据低延迟、实时可查等特点。在流式计算系统中,任意计算节点在内部都会用队列(Queue)来保存接收或发送数据,对经过队列的数据而言,其具有先进先出的语义特点。数据从一端进入队列称为“入队”,从另一端离开队列称为“出队”。在流式计算系统中,队列常被作为消息缓冲区使用。
具体地,所述流式计算系统的拓扑结构包含两部分:数据节点和数据流。如图1所示,所述数据节点(Node)是指:数据实际发生改变的地方,接受系统其它来源的数据作为输入,经过内部加工处理后作为输出。在分布式环境下,计算节点通常部署在不同的物理机器上,同时充当资源的划分和管理者;所述数据流(Stream)是指:有向连接不同计算节点,提供上一个节点的输出到下一个节点输入的数据通道。
数据节点的内部结构如图2所示,首先流入的所有数据都要经过节点接受队列recvQueue排队,recvQueue队列中的数据通过数据自身的任务标识taskId转发到对应的任务队列taskQueue;每个数据都含有taskId,以表明需要被哪个具体的任务处理;每个任务从自己的任务队列taskQueue中取出数据进行逻辑处理,如清洗、过滤、聚合、计算等进程;然后将加工后的数据放入节点的输出队列sendQueue中流入下游关联节点。从中可以看出,每个节点都含有一个接收队列recQueue、输出队列sendQueue,以及若干任务队列taskQueue,接收队列recQueue用于流入数据的分发,输出队列sendQueue则起到汇总流出数据的作用,而任务队列taskQueue作为缓冲器则将真正的计算逻辑和数据流进行了解耦。
现有实时计算系统中采用的队列模型是阻塞队列模型(BlockingQueue),该阻塞队列模型支持链表和数组两种形态。在队列容量限定情况下,采用阻塞的策略进行数据存取。但是,BlockingQueue模型在队头和队尾各有一把悲观锁来控制数据的存取,所以在高并发情况下存在严重的性能开销问题。另外,BlockingQueue模型的数据存取在现代计算机体系中是高速缓存不友好(not cache friendly)的,容易出现伪共享的问题。在多线程竞争下,加锁、释放锁的操作会导致比较多的上下文切换和调度延时,使用锁的代码模块通常难以进行组合,所以极易引起系统吞吐量低、数据延迟等性能问题,并且锁在解决并行过程中资源访问问题的同时可能会引入诸多新的问题,比如死锁(dead lock)的问题。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410132403.1/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置