书签 分享 收藏 举报 版权申诉 / 10

一种队列的管理方法和装置.pdf

  • 上传人:v****
  • 文档编号:6147404
  • 上传时间:2019-04-19
  • 格式:PDF
  • 页数:10
  • 大小:1.28MB
  • 摘要
    申请专利号:

    CN201210490825.7

    申请日:

    2012.11.27

    公开号:

    CN103838547A

    公开日:

    2014.06.04

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 7/76申请日:20121127|||公开

    IPC分类号:

    G06F7/76

    主分类号:

    G06F7/76

    申请人:

    中国电信股份有限公司

    发明人:

    李文宇; 冯晓东; 贾海燕; 唐维; 章军; 田朝文; 张鉴; 常力元; 赵洪波; 赵敬谦; 俞韶桢

    地址:

    100033 北京市西城区金融大街31号

    优先权:

    专利代理机构:

    中国国际贸易促进委员会专利商标事务所 11038

    代理人:

    方亮

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种队列的管理方法和装置,监控队列的空闲率或填充率;当队列的填充率超过设定的第一阈值时,将需要加入队列中的数据存储到磁盘中的队列存储文件中;当队列的填充率低于设定的第二阈值时,将队列存储文件中的数据加载到队列中。本发明的队列的管理方法和装置,在填充率超过阈值时通过文件保存数据,通过基于队列填充率的控制,可以保证不会出现读写同时进行;由于通过批量的进行写入、读取操作,可以较好利用磁盘连续读写性能,降低系统负载。

    权利要求书

    权利要求书
    1.  一种队列的管理方法,其特征在于,包括:
    监控队列的空闲率或填充率;
    当所述队列的填充率超过设定的第一阈值时,将需要加入所述队列中的数据存储到磁盘中的队列存储文件中;
    当所述队列的填充率低于设定的第二阈值时,将所述队列存储文件中的数据加载到所述队列中;
    其中,所述第一阈值大于所述第二阈值。

    2.  如权利要求1所述的管理方法,其特征在于:
    所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件;
    将需要保存在所述队列中的数据存储在预先创建的第一缓存中;
    当所述第一缓存填满时,将所述第一缓存中的数据批量保存在所述队列存储文件中。

    3.  如权利要求2所述的管理方法,其特征在于,所述将所述队列存储文件中的数据加载到所述队列中、具体为:
    连续读取所述队列存储文件中的数据存储到预先设置的第二缓存中,直到所述第二缓存填满,记录所述队列存储文件读取的偏移位置;
    将所述第二缓存中的数据批量添加到所述队列中;
    如果所述队列存储文件中还有数据,从所述偏移位置继续读取所述队列存储文件中的数据;
    其中,在读取所述队列存储文件中的数据的过程中,当所述第二缓存未填满、并且所述队列存储文件中没有数据时,删除或清空所述队列存储文件。

    4.  如权利要求3所述的管理方法,其特征在于,
    将所述第二缓存中的数据批量添加到所述队列中后,所述队列的填充率小于所述第一阈值。

    5.  如权利要求3所述的管理方法,其特征在于:
    当所述队列的填充率未过设定的第一阈值,并且,当所述磁盘中没有所述队列存储文件或者所述队列存储文件为空时,将需要加入所述队列中的数据添加到所述对列中。

    6.  一种队列的管理装置,其特征在于,包括:
    监控单元,用于监控队列的空闲率或填充率;
    数据回写单元,用于当所述队列的填充率超过设定的第一阈值时,将需要加入所述队列中的数据存储到磁盘中的队列存储文件中;
    数据加载单元,用于当所述队列的填充率低于设定的第二阈值时,将所述队列存储文件中的数据加载到所述队列中;
    其中,所述第一阈值大于所述第二阈值。

    7.  如权利要求6所述的管理装置,其特征在于:
    所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件;
    所述数据回写单元将需要保存在所述队列中的数据存储在预先创建的第一缓存中;
    当所述第一缓存填满时,所述数据回写单元将所述第一缓存中的数据批量保存在所述队列存储文件中。

    8.  如权利要求7所述的管理装置,其特征在于:
    所述数据加载单元连续读取所述队列存储文件中的数据存储到预先设置的第二缓存中,直到所述第二缓存填满,记录所述队列存储文件读取的偏移位置;
    所述数据加载单元将所述第二缓存中的数据批量添加到所述队列 中;
    如果所述队列存储文件中还有数据,所述数据加载单元从所述偏移位置继续读取所述队列存储文件中的数据;
    其中,在读取所述队列存储文件中的数据的过程中,当所述第二缓存未填满、并且所述队列存储文件中没有数据时,所述数据加载单元删除或清空所述队列存储文件。

    9.  如权利要求8所述的管理装置,其特征在于,
    所述数据加载单元将所述第二缓存中的数据批量添加到所述队列中后,所述队列的填充率小于所述第一阈值。

    10.  如权利要求9所述的管理装置,其特征在于,还包括:
    数据添加单元,用于当所述队列的填充率未过设定的第一阈值,并且,当所述磁盘中没有所述队列存储文件或者所述队列存储文件为空时,将需要加入所述队列中的数据添加到所述对列中。

    说明书

    说明书一种队列的管理方法和装置
    技术领域
    本发明涉及数据传输技术领域,尤其涉及一种队列的管理方法和装置。
    背景技术
    在各种模块化系统中,模块之间通过数据进行交互。为了异步化模块间交互,一般都需要采用队列系统,用于模块间通信。普通的队列系统存在如下问题:
    1、不支持持久化。
    2、当队列满的时候,要么丢弃新数据、要是丢弃老数据、要么阻塞新的数据。
    基于以上的问题,出现了一些支持持久化的队列系统,通过对进入的数据进行持久化,来保证数据的不丢失。但是这些系统存在如下问题:
    1)采用严格持久化,每个进入队列的数据,都需要持久化一次。
    2)无法有效利用磁盘的连续读写性能。
    3)每次入队列的时候,由于需要进行IO操作,会导致阻塞。
    4)多线程并行入队列的时候,可能会导致并行IO操作。
    在某些系统上,不需要如此高的可靠性,仅需要正常情况下队列数据的可靠性,但是要求队列提供更改的性能和非阻塞入队列。因此,需要设计一种新型的队列管理方法。
    发明内容
    有鉴于此,本发明要解决的一个技术问题是提供一种队列的管理方法,当填充率超过阈值时,通过文件保存数据。
    一种队列的管理方法,包括:监控队列的空闲率或填充率;当所述队列的填充率超过设定的第一阈值时,将需要加入所述队列中的数据存储到磁盘中的队列存储文件中;当所述队列的填充率低于设定的第二阈值时,将所述队列存储文件中的数据加载到所述队列中;其中,所述第一阈值大于所述第二阈值。
    根据本发明的方法的一个实施例,进一步的,所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件;将需要保存在所述队列中的数据存储在预先创建的第一缓存中;当所述第一缓存填满时,将所述第一缓存中的数据批量保存在所述队列存储文件中。
    根据本发明的方法的一个实施例,进一步的,所述将所述队列存储文件中的数据加载到所述队列中、具体为:连续读取所述队列存储文件中的数据存储到预先设置的第二缓存中,直到所述第二缓存填满,记录所述队列存储文件读取的偏移位置;将所述第二缓存中的数据批量添加到所述队列中;如果所述队列存储文件中还有数据,从所述偏移位置继续读取所述队列存储文件中的数据;其中,在读取所述队列存储文件中的数据的过程中,当所述第二缓存未填满、并且所述队列存储文件中没有数据时,删除或清空所述队列存储文件。
    根据本发明的方法的一个实施例,进一步的,将所述第二缓存中的数据批量添加到所述队列中后,所述队列的填充率小于所述第一阈值。
    根据本发明的方法的一个实施例,进一步的,当所述队列的填充率未过设定的第一阈值,并且,当所述磁盘中没有所述队列存储文件或者所述队列存储文件为空时,将需要加入所述队列中的数据添加到所述对列中。
    本发明要解决的一个技术问题是提供一种队列的管理装置,当填充率超过阈值时通过文件保存数据。
    一种队列的管理装置,包括:监控单元,用于监控队列的空闲率或填充率;数据回写单元,用于当所述队列的填充率超过设定的第一阈值时,将需要加入所述队列中的数据存储到磁盘中的队列存储文件中;数据加载单元,用于当所述队列的填充率低于设定的第二阈值时,将所述 队列存储文件中的数据加载到所述队列中;其中,所述第一阈值大于所述第二阈值。
    根据本发明的装置的一个实施例,进一步的,所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件;所述数据回写单元将需要保存在所述队列中的数据存储在预先创建的第一缓存中;当所述第一缓存填满时,所述数据回写单元将所述第一缓存中的数据批量保存在所述队列存储文件中。
    根据本发明的装置的一个实施例,进一步的,所述数据加载单元连续读取所述队列存储文件中的数据存储到预先设置的第二缓存中,直到所述第二缓存填满,记录所述队列存储文件读取的偏移位置;所述数据加载单元将所述第二缓存中的数据批量添加到所述队列中;如果所述队列存储文件中还有数据,所述数据加载单元从所述偏移位置继续读取所述队列存储文件中的数据;其中,在读取所述队列存储文件中的数据的过程中,当所述第二缓存未填满、并且所述队列存储文件中没有数据时,所述数据加载单元删除或清空所述队列存储文件。
    根据本发明的装置的一个实施例,进一步的,所述数据加载单元将所述第二缓存中的数据批量添加到所述队列中后,所述队列的填充率小于所述第一阈值。
    根据本发明的装置的一个实施例,进一步的,数据添加单元,用于当所述队列的填充率未过设定的第一阈值,并且,当所述磁盘中没有所述队列存储文件或者所述队列存储文件为空时,将需要加入所述队列中的数据添加到所述对列中。
    本发明的队列的管理方法和装置,在填充率超过阈值时通过文件保存数据,通过基于队列填充率的控制,可以保证不会出现读写同时进行;由于通过批量的进行写入、读取操作,可以较好利用磁盘连续读写性能,降低系统负载。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将 对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
    图1为根据本发明的队列的管理方法的一个实施例的流程图;
    图2为根据本发明的队列的管理方法的一个实施例中将数据存储在文件中的流程图;
    图3为根据本发明的队列的管理方法的一个实施例中将数据加载在队列中的流程图;
    图4为根据本发明的队列的管理装置的一个实施例的示意图。
    具体实施方式
    下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合各个图和实施例对本发明的技术方案进行多方面的描述。
    图1为根据本发明的队列的管理方法的一个实施例的流程图;如图1所示:
    步骤102,监控队列的空闲率或填充率;
    步骤103,当队列的填充率超过设定的第一阈值时,将需要加入队列中的数据存储到磁盘中的队列存储文件中;
    步骤104,当队列的填充率低于设定的第二阈值时,将队列存储文件中的数据加载到队列中;可以依照次序填充在队列的后端。其中,第一阈值大于第二阈值。
    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端 称为队尾,进行删除操作的端称为队头,又称为“先进先出”(FIFO—first in first out)的线性表。本发明的队列也可以是一种实体队列。
    本发明的队列的管理方法确定队列填充率最大阈值、最小阈值。当队列填充率超过一个最大阈值(如80%的时候),开始启动回写,以批量的方式,持久化数据到磁盘文件系统中。持久化的数据,采用追加的方式处理,并从内存中清除。当队列填充度重现降低到最大阈值之下后,停止回写。队列几乎不可能写满,这样就几乎可以保证入队列操作都是非阻塞的。为了确保入队列操作的非阻塞,可以更加系统的最大负载情况,调整最大阈值。
    另外,由于入队列操作,并不会直接导致持久化处理,所以多线程并行入队列,即使由于阈值触发回写操作,也不会出现并行IO操作。
    当队列空闲时,如队列填充率低于某个最小阈值(如20%时),开始启动加载,以批量的方式,从磁盘文件系统中加载持久化的数据到队列中。
    通过基于队列填充率的控制,可以保证不会出现读写同时进行。另外,由于通过批量的进行写入、读取操作,可以较好利用磁盘连续读写性能。
    图2为根据本发明的队列的管理方法的一个实施例中将数据存储在文件中的流程图;如图2所示,
    步骤202,队列存储文件为在磁盘中创建的新文件或者是打开磁盘中已有的文件;可以将队列存储文件的名字预先确定,通过配置可以使创建的新文件和磁盘中已有的文件的名字相同;
    步骤203,将需要保存在队列中的数据存储在预先创建的第一缓存中;
    步骤204,当第一缓存填满时,将第一缓存中的数据批量保存在队列存储文件中。
    图3为根据本发明的队列的管理方法的一个实施例中将数据加载在队列中的流程图;如图3所示,将队列存储文件中的数据加载到队列中 如下:
    步骤302,连续读取队列存储文件中的数据存储到预先设置的第二缓存中,直到第二缓存填满;
    步骤303,记录队列存储文件读取的偏移位置;
    步骤304,将第二缓存中的数据批量添加到队列中;
    步骤305,如果队列存储文件中还有数据,从偏移位置继续读取队列存储文件中的数据。
    根据本发明的一个实施例,在读取队列存储文件中的数据的过程中,当第二缓存未填满、并且队列存储文件中没有数据时,删除或清空队列存储文件。
    本发明中的“第一”和“第二”等仅仅用于描述中相区别,并没有特定的含义。
    根据本发明的一个实施例,将第二缓存中的数据批量添加到队列中后,队列的填充率小于第一阈值。
    根据本发明的一个实施例,当队列的填充率未过设定的第一阈值,并且,当磁盘中没有队列存储文件或者队列存储文件为空时,将需要加入队列中的数据添加到对列中。
    保证了在队列的容量超过第一阈值后,并将队列存储文件中的数据都消除前,到来的数据都存入队列存储文件中,使数据具有连续性。可以在数据中设置时间标签,根据数据中的时间标签,能够完成数据顺序的调整,实现先入先出。
    图4为根据本发明的队列的管理装置的一个实施例的示意图。如图4所示,队列的管理装置41包括:监控单元411、数据回写单元412、数据加载单元413。
    监控单元411监控队列的空闲率或填充率;当队列的填充率超过设定的第一阈值时,数据回写单元412将需要加入队列中的数据存储到磁盘中的队列存储文件中;当队列的填充率低于设定的第二阈值时,数据加载单元413将队列存储文件中的数据加载到队列中;其中,第一阈值大于第二阈值。
    根据本发明的一个实施例,队列存储文件为在磁盘中创建的新文件或者是磁盘中已有的文件。数据回写单元412将需要保存在队列中的数据存储在预先创建的第一缓存中。当第一缓存填满时,数据回写单元412将第一缓存中的数据批量保存在队列存储文件中。
    根据本发明的一个实施例,数据加载单元413连续读取队列存储文件中的数据存储到预先设置的第二缓存中,直到第二缓存填满,记录队列存储文件读取的偏移位置;数据加载单元413将第二缓存中的数据批量添加到队列中。
    如果队列存储文件中还有数据,数据加载单元413从偏移位置继续读取队列存储文件中的数据;其中,在读取队列存储文件中的数据的过程中,当第二缓存未填满、并且队列存储文件中没有数据时,数据加载单元413删除或清空队列存储文件。
    根据本发明的一个实施例,数据加载单元413将第二缓存中的数据批量添加到队列中后,队列的填充率小于第一阈值。
    队列的管理装置41还包括数据添加单元414,当队列的填充率未过设定的第一阈值,并且,当磁盘中没有队列存储文件或者队列存储文件为空时,数据添加单元414将需要加入队列中的数据添加到对列中。
    本发明的队列的管理方法和装置通过基于队列填充率的控制,可以保证不会出现读写同时进行。另外,由于通过批量的进行写入、读取操作,可以较好利用磁盘连续读写性能,并具备下列优点:
    1、通过队列空闲率精确调度读写处理;
    2、采用批量IO操作,提交总体性能、降低系统负载;
    3、批量进行状态维护和清理操作;
    4、性能更好;
    5、平均延迟更低,当队列不满的时候,延迟等于非持久化队列。
    降低系统负载。
    在实际的项目中,数据传递队列填充率的最大阈值取值80%、最小阈值取值20%。实际应用中没有出现数据丢失,执行效率极高。
    可能以许多方式来实现本发明的方法和系统。例如,可通过软 件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
    本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

    关 键  词:
    一种 队列 管理 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种队列的管理方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6147404.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1