《一种队列的管理方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种队列的管理方法和装置.pdf(10页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103838547 A (43)申请公布日 2014.06.04 CN 103838547 A (21)申请号 201210490825.7 (22)申请日 2012.11.27 G06F 7/76(2006.01) (71)申请人 中国电信股份有限公司 地址 100033 北京市西城区金融大街 31 号 (72)发明人 李文宇 冯晓东 贾海燕 唐维 章军 田朝文 张鉴 常力元 赵洪波 赵敬谦 俞韶桢 (74)专利代理机构 中国国际贸易促进委员会专 利商标事务所 11038 代理人 方亮 (54) 发明名称 一种队列的管理方法和装置 (57) 摘要 本发明公开了一种队。
2、列的管理方法和装置, 监控队列的空闲率或填充率 ; 当队列的填充率超 过设定的第一阈值时, 将需要加入队列中的数据 存储到磁盘中的队列存储文件中 ; 当队列的填充 率低于设定的第二阈值时, 将队列存储文件中的 数据加载到队列中。本发明的队列的管理方法和 装置, 在填充率超过阈值时通过文件保存数据, 通 过基于队列填充率的控制, 可以保证不会出现读 写同时进行 ; 由于通过批量的进行写入、 读取操 作, 可以较好利用磁盘连续读写性能, 降低系统负 载。 (51)Int.Cl. 权利要求书 2 页 说明书 5 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书。
3、2页 说明书5页 附图2页 (10)申请公布号 CN 103838547 A CN 103838547 A 1/2 页 2 1. 一种队列的管理方法, 其特征在于, 包括 : 监控队列的空闲率或填充率 ; 当所述队列的填充率超过设定的第一阈值时, 将需要加入所述队列中的数据存储到磁 盘中的队列存储文件中 ; 当所述队列的填充率低于设定的第二阈值时, 将所述队列存储文件中的数据加载到所 述队列中 ; 其中, 所述第一阈值大于所述第二阈值。 2. 如权利要求 1 所述的管理方法, 其特征在于 : 所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件 ; 将需要保存在所述队列中的数据存储。
4、在预先创建的第一缓存中 ; 当所述第一缓存填满时, 将所述第一缓存中的数据批量保存在所述队列存储文件中。 3. 如权利要求 2 所述的管理方法, 其特征在于, 所述将所述队列存储文件中的数据加 载到所述队列中、 具体为 : 连续读取所述队列存储文件中的数据存储到预先设置的第二缓存中, 直到所述第二缓 存填满, 记录所述队列存储文件读取的偏移位置 ; 将所述第二缓存中的数据批量添加到所述队列中 ; 如果所述队列存储文件中还有数据, 从所述偏移位置继续读取所述队列存储文件中的 数据 ; 其中, 在读取所述队列存储文件中的数据的过程中, 当所述第二缓存未填满、 并且所述 队列存储文件中没有数据时, 。
5、删除或清空所述队列存储文件。 4. 如权利要求 3 所述的管理方法, 其特征在于, 将所述第二缓存中的数据批量添加到所述队列中后, 所述队列的填充率小于所述第一 阈值。 5. 如权利要求 3 所述的管理方法, 其特征在于 : 当所述队列的填充率未过设定的第一阈值, 并且, 当所述磁盘中没有所述队列存储文 件或者所述队列存储文件为空时, 将需要加入所述队列中的数据添加到所述对列中。 6. 一种队列的管理装置, 其特征在于, 包括 : 监控单元, 用于监控队列的空闲率或填充率 ; 数据回写单元, 用于当所述队列的填充率超过设定的第一阈值时, 将需要加入所述队 列中的数据存储到磁盘中的队列存储文件中。
6、 ; 数据加载单元, 用于当所述队列的填充率低于设定的第二阈值时, 将所述队列存储文 件中的数据加载到所述队列中 ; 其中, 所述第一阈值大于所述第二阈值。 7. 如权利要求 6 所述的管理装置, 其特征在于 : 所述队列存储文件为在磁盘中创建的新文件或者是所述磁盘中已有的文件 ; 所述数据回写单元将需要保存在所述队列中的数据存储在预先创建的第一缓存中 ; 当所述第一缓存填满时, 所述数据回写单元将所述第一缓存中的数据批量保存在所述 队列存储文件中。 8. 如权利要求 7 所述的管理装置, 其特征在于 : 权 利 要 求 书 CN 103838547 A 2 2/2 页 3 所述数据加载单元连。
7、续读取所述队列存储文件中的数据存储到预先设置的第二缓存 中, 直到所述第二缓存填满, 记录所述队列存储文件读取的偏移位置 ; 所述数据加载单元将所述第二缓存中的数据批量添加到所述队列中 ; 如果所述队列存储文件中还有数据, 所述数据加载单元从所述偏移位置继续读取所述 队列存储文件中的数据 ; 其中, 在读取所述队列存储文件中的数据的过程中, 当所述第二缓存未填满、 并且所述 队列存储文件中没有数据时, 所述数据加载单元删除或清空所述队列存储文件。 9. 如权利要求 8 所述的管理装置, 其特征在于, 所述数据加载单元将所述第二缓存中的数据批量添加到所述队列中后, 所述队列的填 充率小于所述第一。
8、阈值。 10. 如权利要求 9 所述的管理装置, 其特征在于, 还包括 : 数据添加单元, 用于当所述队列的填充率未过设定的第一阈值, 并且, 当所述磁盘中没 有所述队列存储文件或者所述队列存储文件为空时, 将需要加入所述队列中的数据添加到 所述对列中。 权 利 要 求 书 CN 103838547 A 3 1/5 页 4 一种队列的管理方法和装置 技术领域 0001 本发明涉及数据传输技术领域, 尤其涉及一种队列的管理方法和装置。 背景技术 0002 在各种模块化系统中, 模块之间通过数据进行交互。 为了异步化模块间交互, 一般 都需要采用队列系统, 用于模块间通信。普通的队列系统存在如下问。
9、题 : 0003 1、 不支持持久化。 0004 2、 当队列满的时候, 要么丢弃新数据、 要是丢弃老数据、 要么阻塞新的数据。 0005 基于以上的问题, 出现了一些支持持久化的队列系统, 通过对进入的数据进行持 久化, 来保证数据的不丢失。但是这些系统存在如下问题 : 0006 1) 采用严格持久化, 每个进入队列的数据, 都需要持久化一次。 0007 2) 无法有效利用磁盘的连续读写性能。 0008 3) 每次入队列的时候, 由于需要进行 IO 操作, 会导致阻塞。 0009 4) 多线程并行入队列的时候, 可能会导致并行 IO 操作。 0010 在某些系统上, 不需要如此高的可靠性, 。
10、仅需要正常情况下队列数据的可靠性, 但 是要求队列提供更改的性能和非阻塞入队列。因此, 需要设计一种新型的队列管理方法。 发明内容 0011 有鉴于此, 本发明要解决的一个技术问题是提供一种队列的管理方法, 当填充率 超过阈值时, 通过文件保存数据。 0012 一种队列的管理方法, 包括 : 监控队列的空闲率或填充率 ; 当所述队列的填充率 超过设定的第一阈值时, 将需要加入所述队列中的数据存储到磁盘中的队列存储文件中 ; 当所述队列的填充率低于设定的第二阈值时, 将所述队列存储文件中的数据加载到所述队 列中 ; 其中, 所述第一阈值大于所述第二阈值。 0013 根据本发明的方法的一个实施例,。
11、 进一步的, 所述队列存储文件为在磁盘中创建 的新文件或者是所述磁盘中已有的文件 ; 将需要保存在所述队列中的数据存储在预先创建 的第一缓存中 ; 当所述第一缓存填满时, 将所述第一缓存中的数据批量保存在所述队列存 储文件中。 0014 根据本发明的方法的一个实施例, 进一步的, 所述将所述队列存储文件中的数据 加载到所述队列中、 具体为 : 连续读取所述队列存储文件中的数据存储到预先设置的第二 缓存中, 直到所述第二缓存填满, 记录所述队列存储文件读取的偏移位置 ; 将所述第二缓存 中的数据批量添加到所述队列中 ; 如果所述队列存储文件中还有数据, 从所述偏移位置继 续读取所述队列存储文件中。
12、的数据 ; 其中, 在读取所述队列存储文件中的数据的过程中, 当 所述第二缓存未填满、 并且所述队列存储文件中没有数据时, 删除或清空所述队列存储文 件。 0015 根据本发明的方法的一个实施例, 进一步的, 将所述第二缓存中的数据批量添加 说 明 书 CN 103838547 A 4 2/5 页 5 到所述队列中后, 所述队列的填充率小于所述第一阈值。 0016 根据本发明的方法的一个实施例, 进一步的, 当所述队列的填充率未过设定的第 一阈值, 并且, 当所述磁盘中没有所述队列存储文件或者所述队列存储文件为空时, 将需要 加入所述队列中的数据添加到所述对列中。 0017 本发明要解决的一个。
13、技术问题是提供一种队列的管理装置, 当填充率超过阈值时 通过文件保存数据。 0018 一种队列的管理装置, 包括 : 监控单元, 用于监控队列的空闲率或填充率 ; 数据回 写单元, 用于当所述队列的填充率超过设定的第一阈值时, 将需要加入所述队列中的数据 存储到磁盘中的队列存储文件中 ; 数据加载单元, 用于当所述队列的填充率低于设定的第 二阈值时, 将所述队列存储文件中的数据加载到所述队列中 ; 其中, 所述第一阈值大于所述 第二阈值。 0019 根据本发明的装置的一个实施例, 进一步的, 所述队列存储文件为在磁盘中创建 的新文件或者是所述磁盘中已有的文件 ; 所述数据回写单元将需要保存在所。
14、述队列中的数 据存储在预先创建的第一缓存中 ; 当所述第一缓存填满时, 所述数据回写单元将所述第一 缓存中的数据批量保存在所述队列存储文件中。 0020 根据本发明的装置的一个实施例, 进一步的, 所述数据加载单元连续读取所述队 列存储文件中的数据存储到预先设置的第二缓存中, 直到所述第二缓存填满, 记录所述队 列存储文件读取的偏移位置 ; 所述数据加载单元将所述第二缓存中的数据批量添加到所述 队列中 ; 如果所述队列存储文件中还有数据, 所述数据加载单元从所述偏移位置继续读取 所述队列存储文件中的数据 ; 其中, 在读取所述队列存储文件中的数据的过程中, 当所述第 二缓存未填满、 并且所述队。
15、列存储文件中没有数据时, 所述数据加载单元删除或清空所述 队列存储文件。 0021 根据本发明的装置的一个实施例, 进一步的, 所述数据加载单元将所述第二缓存 中的数据批量添加到所述队列中后, 所述队列的填充率小于所述第一阈值。 0022 根据本发明的装置的一个实施例, 进一步的, 数据添加单元, 用于当所述队列的填 充率未过设定的第一阈值, 并且, 当所述磁盘中没有所述队列存储文件或者所述队列存储 文件为空时, 将需要加入所述队列中的数据添加到所述对列中。 0023 本发明的队列的管理方法和装置, 在填充率超过阈值时通过文件保存数据, 通过 基于队列填充率的控制, 可以保证不会出现读写同时进。
16、行 ; 由于通过批量的进行写入、 读取 操作, 可以较好利用磁盘连续读写性能, 降低系统负载。 附图说明 0024 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图仅仅是 本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还 可以根据这些附图获得其他的附图。 0025 图 1 为根据本发明的队列的管理方法的一个实施例的流程图 ; 0026 图 2 为根据本发明的队列的管理方法的一个实施例中将数据存储在文件中的流 程图 ; 说 明 书 CN 103838547 。
17、A 5 3/5 页 6 0027 图 3 为根据本发明的队列的管理方法的一个实施例中将数据加载在队列中的流 程图 ; 0028 图 4 为根据本发明的队列的管理装置的一个实施例的示意图。 具体实施方式 0029 下面参照附图对本发明进行更全面的描述, 其中说明本发明的示例性实施例。下 面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显 然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实 施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都属 于本发明保护的范围。下面结合各个图和实施例对本发明的技。
18、术方案进行多方面的描述。 0030 图 1 为根据本发明的队列的管理方法的一个实施例的流程图 ; 如图 1 所示 : 0031 步骤 102, 监控队列的空闲率或填充率 ; 0032 步骤 103, 当队列的填充率超过设定的第一阈值时, 将需要加入队列中的数据存储 到磁盘中的队列存储文件中 ; 0033 步骤 104, 当队列的填充率低于设定的第二阈值时, 将队列存储文件中的数据加载 到队列中 ; 可以依照次序填充在队列的后端。其中, 第一阈值大于第二阈值。 0034 队列是一种特殊的线性表, 它只允许在表的前端 (front) 进行删除操作, 而在表的 后端 (rear) 进行插入操作。进行。
19、插入操作的端称为队尾, 进行删除操作的端称为队头, 又 称为 “先进先出” (FIFOfirst in first out) 的线性表。本发明的队列也可以是一种实 体队列。 0035 本发明的队列的管理方法确定队列填充率最大阈值、 最小阈值。当队列填充率超 过一个最大阈值(如80%的时候), 开始启动回写, 以批量的方式, 持久化数据到磁盘文件系 统中。持久化的数据, 采用追加的方式处理, 并从内存中清除。当队列填充度重现降低到最 大阈值之下后, 停止回写。 队列几乎不可能写满, 这样就几乎可以保证入队列操作都是非阻 塞的。为了确保入队列操作的非阻塞, 可以更加系统的最大负载情况, 调整最大阈。
20、值。 0036 另外, 由于入队列操作, 并不会直接导致持久化处理, 所以多线程并行入队列, 即 使由于阈值触发回写操作, 也不会出现并行 IO 操作。 0037 当队列空闲时, 如队列填充率低于某个最小阈值(如20%时), 开始启动加载, 以批 量的方式, 从磁盘文件系统中加载持久化的数据到队列中。 0038 通过基于队列填充率的控制, 可以保证不会出现读写同时进行。 另外, 由于通过批 量的进行写入、 读取操作, 可以较好利用磁盘连续读写性能。 0039 图 2 为根据本发明的队列的管理方法的一个实施例中将数据存储在文件中的流 程图 ; 如图 2 所示, 0040 步骤 202, 队列存储。
21、文件为在磁盘中创建的新文件或者是打开磁盘中已有的文件 ; 可以将队列存储文件的名字预先确定, 通过配置可以使创建的新文件和磁盘中已有的文件 的名字相同 ; 0041 步骤 203, 将需要保存在队列中的数据存储在预先创建的第一缓存中 ; 0042 步骤 204, 当第一缓存填满时, 将第一缓存中的数据批量保存在队列存储文件中。 0043 图 3 为根据本发明的队列的管理方法的一个实施例中将数据加载在队列中的流 说 明 书 CN 103838547 A 6 4/5 页 7 程图 ; 如图 3 所示, 将队列存储文件中的数据加载到队列中如下 : 0044 步骤 302, 连续读取队列存储文件中的数。
22、据存储到预先设置的第二缓存中, 直到第 二缓存填满 ; 0045 步骤 303, 记录队列存储文件读取的偏移位置 ; 0046 步骤 304, 将第二缓存中的数据批量添加到队列中 ; 0047 步骤 305, 如果队列存储文件中还有数据, 从偏移位置继续读取队列存储文件中的 数据。 0048 根据本发明的一个实施例, 在读取队列存储文件中的数据的过程中, 当第二缓存 未填满、 并且队列存储文件中没有数据时, 删除或清空队列存储文件。 0049 本发明中的 “第一” 和 “第二” 等仅仅用于描述中相区别, 并没有特定的含义。 0050 根据本发明的一个实施例, 将第二缓存中的数据批量添加到队列中。
23、后, 队列的填 充率小于第一阈值。 0051 根据本发明的一个实施例, 当队列的填充率未过设定的第一阈值, 并且, 当磁盘中 没有队列存储文件或者队列存储文件为空时, 将需要加入队列中的数据添加到对列中。 0052 保证了在队列的容量超过第一阈值后, 并将队列存储文件中的数据都消除前, 到 来的数据都存入队列存储文件中, 使数据具有连续性。 可以在数据中设置时间标签, 根据数 据中的时间标签, 能够完成数据顺序的调整, 实现先入先出。 0053 图 4 为根据本发明的队列的管理装置的一个实施例的示意图。如图 4 所示, 队列 的管理装置 41 包括 : 监控单元 411、 数据回写单元 412。
24、、 数据加载单元 413。 0054 监控单元 411 监控队列的空闲率或填充率 ; 当队列的填充率超过设定的第一阈值 时, 数据回写单元 412 将需要加入队列中的数据存储到磁盘中的队列存储文件中 ; 当队列 的填充率低于设定的第二阈值时, 数据加载单元 413 将队列存储文件中的数据加载到队列 中 ; 其中, 第一阈值大于第二阈值。 0055 根据本发明的一个实施例, 队列存储文件为在磁盘中创建的新文件或者是磁盘中 已有的文件。数据回写单元 412 将需要保存在队列中的数据存储在预先创建的第一缓存 中。当第一缓存填满时, 数据回写单元 412 将第一缓存中的数据批量保存在队列存储文件 中。。
25、 0056 根据本发明的一个实施例, 数据加载单元 413 连续读取队列存储文件中的数据存 储到预先设置的第二缓存中, 直到第二缓存填满, 记录队列存储文件读取的偏移位置 ; 数据 加载单元 413 将第二缓存中的数据批量添加到队列中。 0057 如果队列存储文件中还有数据, 数据加载单元 413 从偏移位置继续读取队列存储 文件中的数据 ; 其中, 在读取队列存储文件中的数据的过程中, 当第二缓存未填满、 并且队 列存储文件中没有数据时, 数据加载单元 413 删除或清空队列存储文件。 0058 根据本发明的一个实施例, 数据加载单元 413 将第二缓存中的数据批量添加到队 列中后, 队列的。
26、填充率小于第一阈值。 0059 队列的管理装置 41 还包括数据添加单元 414, 当队列的填充率未过设定的第一阈 值, 并且, 当磁盘中没有队列存储文件或者队列存储文件为空时, 数据添加单元 414 将需要 加入队列中的数据添加到对列中。 0060 本发明的队列的管理方法和装置通过基于队列填充率的控制, 可以保证不会出现 说 明 书 CN 103838547 A 7 5/5 页 8 读写同时进行。另外, 由于通过批量的进行写入、 读取操作, 可以较好利用磁盘连续读写性 能, 并具备下列优点 : 0061 1、 通过队列空闲率精确调度读写处理 ; 0062 2、 采用批量 IO 操作, 提交总。
27、体性能、 降低系统负载 ; 0063 3、 批量进行状态维护和清理操作 ; 0064 4、 性能更好 ; 0065 5、 平均延迟更低, 当队列不满的时候, 延迟等于非持久化队列。 0066 降低系统负载。 0067 在实际的项目中, 数据传递队列填充率的最大阈值取值 80%、 最小阈值取值 20%。 实际应用中没有出现数据丢失, 执行效率极高。 0068 可能以许多方式来实现本发明的方法和系统。例如, 可通过软件、 硬件、 固件或者 软件、 硬件、 固件的任何组合来实现本发明的方法和系统。 用于方法的步骤的上述顺序仅是 为了进行说明, 本发明的方法的步骤不限于以上具体描述的顺序, 除非以其它。
28、方式特别说 明。此外, 在一些实施例中, 还可将本发明实施为记录在记录介质中的程序, 这些程序包括 用于实现根据本发明的方法的机器可读指令。因而, 本发明还覆盖存储用于执行根据本发 明的方法的程序的记录介质。 0069 本发明的描述是为了示例和描述起见而给出的, 而并不是无遗漏的或者将本发明 限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描 述实施例是为了更好说明本发明的原理和实际应用, 并且使本领域的普通技术人员能够理 解本发明从而设计适于特定用途的带有各种修改的各种实施例。 说 明 书 CN 103838547 A 8 1/2 页 9 图 1 图 2 说 明 书 附 图 CN 103838547 A 9 2/2 页 10 图 3 图 4 说 明 书 附 图 CN 103838547 A 10 。