[发明专利]数据处理方法及装置有效
申请号: | 201310113197.5 | 申请日: | 2013-04-02 |
公开(公告)号: | CN103218176A | 公开(公告)日: | 2013-07-24 |
发明(设计)人: | 王勇;王树鹏;张永铮;王曦;吴广君;李斌斌;安丰春 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/02 |
代理公司: | 北京轻创知识产权代理有限公司 11212 | 代理人: | 杨立 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据处理 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种数据处理方法及装置。
背景技术
互联网的高速发展带来了网络数据的膨胀。高速、海量的网络数据中却包含着错综复杂的信息,如IP业务流、用户点击流、用户查询流、服务器日志等。海量业务数据为网络数据处理带来了巨大的挑战。由于传统的数据同步处理方式对设备的利用率低,不能发挥多核计算、并行计算的优势,而且为了维持同步的有效性也会付出许多额外的系统资源开销,其处理效率往往很难满足业务系统的需求。因此,异步程序处理已经基本成为程序设计的主流思想,异步处理的好处就是提高设备使用率,从而在宏观上提升程序运行效率。
在异步程序设计中,数据的产生方称为生产者,数据的使用方称为消费者。在单生产者与多消费者模型中,主流的工作模式为生产者将数据写入数据缓冲区,多个消费者从数据缓冲区中读取数据,并行的处理数据。当不采用同步机制时,系统容易产生以下几种问题。(1)读写冲突。消费者试图读取生产者正在写入的数据块,这样消费者获取了错误的数据。(2)消费者存在僵尸问题,即计算量繁重的消费者数据处理效率极低或者故障停滞,对整体的资源协调和数据交互产生极大的负担。
为了避免以上生产者与消费者之间访问数据缓冲区时互相干扰的情况,通常的做法是采用一个锁来强制生产者和消费者以串行的方式对同一数据缓冲区进行处理,即生产者和消费者在写入数据和读取数据之前,都必须获取整个数据缓冲区的锁,只有成功获取缓冲区锁后才能进行后续读写操作。使用锁的方式可以解决生产者和消费者进行资源协调的问题,但是其同时存在一些缺点。锁机制影响了软件的实质并发性,对系统的处理效率产生了一定的影响。
目前比较好的无锁算法为Lamport于1977年提出的Lock-Free Ring Buffer。其解决了无锁数据同步的问题,这个算法的实现流程为生产者拷贝数据到一个数组的尾端,而消费者从另一端移走数据。当到达数组末端,生产者回到数组的开始。因此其核心结构包括一个环形缓存和分别记录读写位置的指针,此结构不需要进行锁处理。生产者是唯一允许修改写指针的处理单元。只要生产者在更新写指针之前存储一个新值到缓存中,消费者将一直看到一个一致视图。而消费者是唯一存取读索引和它指向的值的处理单元。只要保证系统读写指针不相互覆盖,也即读指针持续保持在写指针之后,生产者和消费者可以并发存取缓存而没有竞争情况。然而,其限制就是只能一个生产者和一个消费者。
发明内容
本发明所要解决的技术问题是提供一种数据处理方法及装置,提高数据并行处理场景下共享资源的数据读写效率,减小数据同步的开销。
为解决上述技术问题,本发明提出了一种数据处理方法,包括:
创建共享内存环,所述共享内存环为存储待操作数据的环形结构空间;
在对共享内存环中下一个操作目的单元进行操作前,将所述下一个操作目的单元的操作标志位设置为对应下一个操作的操作类型;
判断所述下一个操作目的单元是否能够进行所述下一个操作;
根据判断结果对所述下一个操作目的单元中的数据进行处理。
进一步地,上述数据处理方法还可具有以下特点,所述操作为写入或读取。
进一步地,上述数据处理方法还可具有以下特点,所述根据判断结果对所述下一个操作目的单元中的数据进行处理包括:
所述判断结果为能够进行所述下一个操作,则对所述下一个操作目的单元进行所述下一个操作。
进一步地,上述数据处理方法还可具有以下特点,所述根据判断结果对所述下一个操作目的单元中的数据进行处理包括:
所述操作为写入,所述判断结果为不能进行所述下一个操作,所述下一个操作目的单元的操作标识位有读标志位,则判断所述下一个操作目的单元是否存在僵尸读消费者;
若存在,则释放下一个操作目的单元的读标志位,释放后将下一个操作目的单元的读计数清零,并对所述下一个操作目的单元进行写入操作;
若不存在,则释放所述下一个操作目的单元的写标志位。
进一步地,上述数据处理方法还可具有以下特点,所述共享内存环中每一个操作目的单元包括读标识位、写标识位、数据覆写标志位、数据序列号和时间戳。
为解决上述技术问题,本发明还提出了一种数据处理装置,包括:
创建模块,用于创建共享内存环,所述共享内存环为存储待操作数据的环形结构空间;
设置模块,用于在对共享内存环中下一个操作目的单元进行操作前,将所述下一个操作目的单元的操作标志位设置为对应下一个操作的操作类型;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310113197.5/2.html,转载请声明来源钻瓜专利网。