一种用于实时监控的循环事件存取方法和装置的制作方法

文档序号:6606382阅读:99来源:国知局
专利名称:一种用于实时监控的循环事件存取方法和装置的制作方法
技术领域
本发明涉及系统运行监控技术领域,尤其涉及一种用于实时监控的循环事件存取 方法和装置。
背景技术
实时监控一般是指利用软件对系统运行的过程进行同步的监控,比如网络事件 监控,表示用户通过收集网络事件随时掌握当前网络中发生的最新事件。在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系 数据库。由关系数据结构组成的数据库系统被称为关系数据库系统。在关系数据库中,对 数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类、合并、连 接或选取等运算来实现数据的管理。关系数据结构把一些复杂的数据结构归结为简单的二 元关系,即二维表格形式。目前普遍使用的实时监控方法有1)基于关系数据库的实时监控事件存取方法目前普遍采用的实时监控事件存取示方法为基于关系数据库的存取,如oracle、 MYSQL等等。此方法过程为当收集到新的事件时,把事件进行归一化或格式化处理,插入 到数据库系统中。当用户进行监控时,再从数据库中查询最新事件,进行展示。此方法虽然在数据量少时,运行良好,但是当事件达到每秒上千条、或数据库压力 过大时,会导致查询新事件的数据库操作时延过大,有时无法取得新入库的事件,从而造成 监控不及时,甚至无法监控。2)基于文件的实时监控事件存取方法这种方法是把事件写入到一个文件中,监控时从文件尾部取出最新事件展示。但 是由于系统会不停的收到新的事件,把事件写入文件会造成文件大小骤增,最终耗光所有 的系统资源,造成系统无法运行或崩溃。

发明内容
本发明要解决的技术问题是,提供一种用于实时监控的循环事件存取方法和装 置,在低系统资源消耗的情况下保证对事件监控的实时性和稳定性。本发明采用的技术方案是,所述用于实时监控的循环事件存取方法,包括在文件中依次创建信息字段、事件信息字段、空闲空间信息字段和事件字段,信息 字段包括文件中写入事件数的最大值η和最后一次写入事件的索引i,索引i与写入事件数 的最大值η、事件信息字段关联,事件信息字段与事件字段关联;判断写入的事件数是否达到最大值η,当写入的事件数未达到最大值η时,将新事 件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写入的事件数达到最大值η时,将新事件覆盖最老的事件或者写入事件字段末 尾,同时更新事件信息字段和空闲空间信息字段;
通过索引i反向取出需要监控的事件。所述索引i与写入事件数的最大值η、事件信息字段关联的具体内容是所述索引i = (i)mod(n)+l,对应着该事件在当前文件的偏移和占用的空间大小 的存储位置。所述事件信息字段包括事件在当前文件的偏移和占用的空间大小,事件在当前文 件的偏移和占用的空间大小分别占用一个字段。所述空闲空间信息字段包括空闲空间在当前文件的偏移和空闲空间大小,空闲空 间在当前文件的偏移和空闲空间大小分别占用一个字段。所述当写入的事件数达到最大值η时,将新事件覆盖最老的事件或者写入事件字 段末尾,同时更新事件信息字段和空闲空间信息字段的具体过程是步骤一、根据新事件索引i找到文件中其对应的老事件在当前文件的偏移,判断 新事件是否小于等于老事件,若是,则跳转步骤二,否则跳转步骤三;步骤二、从老事件在当前文件的偏移处开始写入新事件,并把老事件的剩余空间 变更为空闲空间记录下来;步骤三、将老事件占用的空间与其相邻的空闲空间合并成新的空闲空间,判断新 事件是否小于等于新的空闲空间,若是,则跳转步骤四,否则跳转步骤五;步骤四、将新事件写入新的空闲空间,记录新事件在当前文件的偏移和占用的空 间大小,并将剩余空间变更为空闲空间记录下来;步骤五、在文件末尾写入新事件,记录新事件在当前文件的偏移和占用的空间大 小。所述通过索引i反向取出需要监控的事件的具体过程是从索引i开始,获取索引i、i_l、i-2.......对应的事件在当前文件的偏移和占
用的空间大小,取出该事件;当取出第χ个事件时,若i-χ彡0,则取出索引i-χ+Ι对应的事件;若i-χ < 0,则 取出索引η+i-x+l对应的事件。本发明还提供一种用于实时监控的循环事件存取装置,包括如下组成部分文件创建模块,用于在文件中依次创建信息字段、事件信息字段、空闲空间信息字 段和事件字段,信息字段包括文件中写入事件数的最大值η和最后一次写入事件的索引i, 索引i与写入事件数的最大值η、事件信息字段关联,事件信息字段与事件字段关联;事件写入模块,用于判断写入的事件数是否达到最大值η,当写入的事件数未达到 最大值η时,将事件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写 入的事件数达到最大值η时,将新事件覆盖最老的事件或者写入事件字段末尾,同时更新 事件信息字段和空闲空间信息字段;事件读取模块,用于通过索引i反向取出需要监控的事件。所述索引i与写入事件数的最大值η、事件信息字段关联的具体内容是所述索引i = (i)mod(n)+l,对应着该事件的事件信息字段的存储位置。所述事件读取模块,进一步用于,从索引i开始,获取索引i、i-l、i_2.......对应事件的事件信息字段,取出该事
件;
当取出第χ个事件时,若i-χ彡0,则取出索引i-χ+Ι对应的事件;若i_x < 0,则 取出索引η+i-x+l对应的事件。采用上述技术方案,本发明至少具有下列优点本发明所述用于实时监控的循环事件存取方法和装置,在文件中依次创建信息字 段、事件信息字段、空闲空间信息字段和事件字段,本发明的文件结构基于信息字段中的环 形索引作为事件的索引,当写入的事件数未达到最大值η时,将新事件依次写入事件字段, 同时更新事件信息字段和空闲空间信息字段;当写入的事件数达到最大值η时,将新事件 覆盖最老的事件或者写入事件字段末尾,同时更新事件信息字段和空闲空间信息字段。本 发明通过环形索引反向快速定位要查找的事件,实现在高速插入的同时实现快速查询,有 效循环利用磁盘空间,防止出现空间不足等问题。


图1为本发明创建的文件结构示意图;图2为本发明第一实施例所述用于实时监控的循环事件存取方法流程图;图3为本发明第二实施例所述用于实时监控的循环事件存取装置组成示意图。
具体实施例方式为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图 及较佳实施例,对本发明提出的所述用于实时监控的循环事件存取方法和装置,详细说明 如后。本发明第一实施例,如图2所示,所述用于实时监控的循环事件存取方法,包括如 下具体步骤步骤S101,在文件中依次创建信息字段、事件信息字段、空闲空间信息字段和事件 字段,信息字段包括文件中写入事件数的最大值η和最后一次写入事件的索引i,索引i = (i)mod(n)+l,对应着该事件在当前文件的偏移和占用的空间大小的存储位置。事件信息字 段与事件字段关联;如图1所示,文件结构中各字段的位置和使用方法为信息字段占据第1-2字段,包括文件中写入事件数的最大值η和最后一次写入事 件的索引i ;事件信息字段预留第3 (2n+2)字段,当有事件写入时,在第3 (2n+2)字段中 顺次存储事件在当前文件的偏移和事件占用的空间大小,事件在当前文件的偏移和占用的 空间大小分别占用一个字段,当写入的事件数达到最大值η时,新事件会覆盖最老的事件。空闲空间信息字段预留第(2η+3) (4η+2)字段,当有空闲空间产生时,在第 (2η+3) (4η+2)字段中顺次存储空闲空间在当前文件的偏移和空闲空间大小,空闲空间 在当前文件的偏移和空闲空间大小分别占用一个字段。初始未写入事件时,空闲空间只有 一个,距第1字段的偏移是(2η+3),该空闲空间的大小是文件大小减去前面(2η+2)字段的 大小,陆续写入事件后,空闲空间的偏移、大小以及个数都会发生变化。事件字段第(4η+3)字段以后的文件空间,用于写入事件内容;步骤S102,当有事件写入时,判断写入的事件数是否达到最大值η,当写入的事件数未达到最大值η时,将事件依次写入事件字段,同时更新事件信息字段和空闲空间信息 字段;当写入的事件数达到最大值η时,跳转步骤S103 ;步骤S103,根据新事件索引i找到文件中其对应的老事件在当前文件的偏移,判 断新事件是否小于等于老事件,若是,则跳转步骤S104,否则跳转步骤S105 ;步骤S104,从老事件在当前文件的偏移处开始写入新事件,并把老事件的剩余空 间变更为空闲空间记录下来;需要说明的是,如果新事件与老事件所占空间的大小相等,则没有剩余空间,故不 会新产生空闲空间记录。步骤S105,将老事件占用的空间与其相邻的空闲空间合并成新的空闲空间,判断 新事件是否小于等于新的空闲空间,若是,则跳转步骤S106,否则跳转步骤S107 ;步骤S106,将新事件写入新的空闲空间,记录新事件在当前文件的偏移和占用的 空间大小,并将剩余空间变更为空闲空间记录下来;需要说明的是,如果新事件与新的空闲空间大小相等,则没有剩余空间,故不会新 产生空闲空间记录。步骤S107,在文件末尾写入新事件,记录新事件在当前文件的偏移和占用的空间 大小。步骤S108,通过索引i反向取出需要监控的事件,具体的,从索引i开始,获取索引 i、i-l、i_2.......对应的事件在当前文件的偏移和占用的空间大小,取出该事件;当取出第χ个事件时,若i-χ彡0,则取出索引i-χ+Ι对应的事件;若i-χ < 0,则 取出索引η+i-x+l对应的事件。本发明第二实施例,如图3所示,一种用于实时监控的循环事件存取装置,包括如 下组成部分1)文件创建模块,用于在文件中依次创建信息字段、事件信息字段、空闲空间信息 字段和事件字段,信息字段包括文件中写入事件数的最大值η和最后一次写入事件的索引 i= (i)mod(n)+l,对应着该事件在当前文件的偏移和占用的空间大小的存储位置。事件信 息字段与事件字段关联。事件信息字段包括事件在当前文件的偏移和占用的空间大小,事件在当前文件的 偏移和占用的空间大小分别占用一个字段。空闲空间信息字段包括空闲空间在当前文件的偏移和空闲空间大小,空闲空间在 当前文件的偏移和空闲空间大小分别占用一个字段。2)事件写入模块,用于判断写入的事件数是否达到最大值n,当写入的事件数未 达到最大值η时,将事件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写入的事件数达到最大值η时,根据新事件索引i找到文件中其对应的老事件 在当前文件的偏移,判断新事件是否小于等于老事件,若是,则老事件在当前文件的偏移处 开始写入新事件,并把老事件的剩余空间变更为空闲空间记录下来;否则将老事件占用的空间与其相邻的空闲空间合并成新的空闲空间,进一步判断 新事件是否小于等于新的空闲空间,若是,则将新事件写入新的空闲空间,记录新事件在当 前文件的偏移和占用的空间大小,并将剩余空间变更为空闲空间记录下来,否则在文件末 尾写入新事件,记录新事件在当前文件的偏移和占用的空间大小。
3)事件读取模块,用于通过索引i反向取出需要监控的事件。具体的,从索引i开
始,获取索引i、i-l、i_2.......对应的事件在当前文件的偏移和占用的空间大小,取出该
事件;当取出第χ个事件时,若i-χ彡0,则取出索引i-χ+Ι对应的事件;若i-χ < 0,则 取出索引η+i-x+l对应的事件。本发明的文件结构基于环形索引i = (i)mod(n)+l,可以实现在高速插入的同时 实现快速查询,查找效率为0(2),同时可以有效循环利用磁盘空间,防止出现空间不足等问 题。通过索引还能快速定位要查找的事件。通过具体实施方式
的说明,应当可对本发明为达成预定目的所采取的技术手段及 功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本 发明加以限制。
权利要求
一种用于实时监控的循环事件存取方法,其特征在于,包括在文件中依次创建信息字段、事件信息字段、空闲空间信息字段和事件字段,信息字段包括文件中写入事件数的最大值n和最后一次写入事件的索引i,索引i与写入事件数的最大值n、事件信息字段关联,事件信息字段与事件字段关联;判断写入的事件数是否达到最大值n,当写入的事件数未达到最大值n时,将新事件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写入的事件数达到最大值n时,将新事件覆盖最老的事件或者写入事件字段末尾,同时更新事件信息字段和空闲空间信息字段;通过索引i反向取出需要监控的事件。
2.根据权利要求1所述用于实时监控的循环事件存取方法,其特征在于,所述索引i与 写入事件数的最大值η、事件信息字段关联的具体内容是所述索引i = (i)mod(n)+l,对应着该事件在当前文件的偏移和占用的空间大小的存 储位置。
3.根据权利要求1或2所述用于实时监控的循环事件存取方法,其特征在于,所述事件 信息字段包括事件在当前文件的偏移和占用的空间大小,事件在当前文件的偏移和占用的 空间大小分别占用一个字段。
4.根据权利要求3所述用于实时监控的循环事件存取方法,其特征在于,所述空闲空 间信息字段包括空闲空间在当前文件的偏移和空闲空间大小,空闲空间在当前文件的偏移 和空闲空间大小分别占用一个字段。
5.根据权利要求1、2或4所述用于实时监控的循环事件存取方法,其特征在于,所述当 写入的事件数达到最大值η时,将新事件覆盖最老的事件或者写入事件字段末尾,同时更 新事件信息字段和空闲空间信息字段的具体过程是步骤一、根据新事件索引i找到文件中其对应的老事件在当前文件的偏移,判断新事 件是否小于等于老事件,若是,则跳转步骤二,否则跳转步骤三;步骤二、从老事件在当前文件的偏移处开始写入新事件,并把老事件的剩余空间变更 为空闲空间记录下来;步骤三、将老事件占用的空间与其相邻的空闲空间合并成新的空闲空间,判断新事件 是否小于等于新的空闲空间,若是,则跳转步骤四,否则跳转步骤五;步骤四、将新事件写入新的空闲空间,记录新事件在当前文件的偏移和占用的空间大 小,并将剩余空间变更为空闲空间记录下来;步骤五、在文件末尾写入新事件,记录新事件在当前文件的偏移和占用的空间大小。
6.根据权利要求1所述用于实时监控的循环事件存取方法,其特征在于,所述通过索 引i反向取出需要监控的事件的具体过程是从索引i开始,获取索引i、i_l、i-2.......对应事件的事件信息字段,取出该事件;当取出第χ个事件时,若i_x ^ 0,则取出索引i-χ+Ι对应的事件;若i-x < 0,则取出 索引η+i-x+l对应的事件。
7.一种用于实时监控的循环事件存取装置,其特征在于,包括如下组成部分 文件创建模块,用于在文件中依次创建信息字段、事件信息字段、空闲空间信息字段和事件字段,信息字段包括文件中写入事件数的最大值η和最后一次写入事件的索引i,索引i与写入事件数的最大值η、事件信息字段关联,事件信息字段与事件字段关联;事件写入模块,用于判断写入的事件数是否达到最大值η,当写入的事件数未达到最大 值η时,将事件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写入的 事件数达到最大值η时,将新事件覆盖最老的事件或者写入事件字段末尾,同时更新事件 信息字段和空闲空间信息字段;事件读取模块,用于通过索引i反向取出需要监控的事件。
8.根据权利要求7所述用于实时监控的循环事件存取装置,其特征在于,所述索引i与 写入事件数的最大值η、事件信息字段关联的具体内容是所述索引i = (i)mod(n)+l,对应着该事件的事件信息字段的存储位置。
9.根据权利要求7或8所述用于实时监控的循环事件存取装置,其特征在于,所述事件 读取模块,进一步用于,从索引i开始,获取索引i、i-l、i_2.......对应事件的事件信息字段,取出该事件;当取出第χ个事件时,若i_x ≥ 0,则取出索引i-χ+Ι对应的事件;若i-x < 0,则取出 索引η+i-x+l对应的事件。
全文摘要
本发明公开了一种用于实时监控的循环事件存取方法和装置,在文件中依次创建信息字段、事件信息字段、空闲空间信息字段和事件字段,本发明的文件结构基于信息字段中的环形索引作为事件的索引,当写入的事件数未达到最大值n时,将新事件依次写入事件字段,同时更新事件信息字段和空闲空间信息字段;当写入的事件数达到最大值n时,将新事件覆盖最老的事件或者写入事件字段末尾,同时更新事件信息字段和空闲空间信息字段。本发明通过环形索引反向快速定位要查找的事件,实现在高速插入的同时实现快速查询,有效循环利用磁盘空间,防止出现空间不足等问题。
文档编号G06F17/30GK101894161SQ20101023367
公开日2010年11月24日 申请日期2010年7月22日 优先权日2010年7月22日
发明者张凤羽 申请人:北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1