CN103067258A - 一种消息超时检测处理方法 - Google Patents
一种消息超时检测处理方法 Download PDFInfo
- Publication number
- CN103067258A CN103067258A CN2012105440140A CN201210544014A CN103067258A CN 103067258 A CN103067258 A CN 103067258A CN 2012105440140 A CN2012105440140 A CN 2012105440140A CN 201210544014 A CN201210544014 A CN 201210544014A CN 103067258 A CN103067258 A CN 103067258A
- Authority
- CN
- China
- Prior art keywords
- time
- message
- array
- pointer
- overtime
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种消息超时检测处理方法,包括:步骤1.建立一个时间轴数组;步骤2.在数组中设置当前时间指针、最小时间指针和最大时间指针,分别指向存储当前消息的节点、有消息的最小时间对应的节点、有消息的最大时间对应的节点;步骤3.按照新消息属性中的超时时间,将新消息指针插入到数组中的目标位置,并实时更新相应指针;步骤4.若消息在当前时间到超时时间内完成处理,则将消息对应的指针从数组中删除;若当前时间超过超时时间,则将最小时间指针与当前时间指针间的超时消息逐个删除。本发明通过将消息时间在时间数组里按超时时间顺序排列,添加和删除超时时间消息,实现了对超时消息的检测和处理,系统简单,资源占用少。
Description
技术领域
本发明涉及消息处理技术领域,特别是涉及一种简单易用的非持久化消息超时检测处理方法。
背景技术
基于消息类的消息存储转发,可用于短信网关/业务接口系统等。在软件实现的消息处理和转发系统中,对于有生命周期要求的消息检查是否达到期末,即超时,在性能要求较高的环境中应用。
消息存储方式一般分为持久化存储和非持久化存储,前者一般要求保存到磁盘文件或者关系型数据库中,后者则一般保存到系统内存中,该方法主要用于非持久化消息存储中。
在通常的基于消息处理的软件中,由于消息本身通常有一定的生命周期,所以一般都会要求有检测消息超时的机制。常用的超时检测机制有如下的几类:
1、消息以链表方式保存,定时对所有消息进行遍历,通过消息中的超时时间与当前时间进行比较以判断是否超时;
2、将消息以二叉树等形式保存,以超时时间为键值,通过定时进行二叉树查找方式判断超时;
3、将消息保存在关系型数据库中,在超时时间上建立索引,然后定时以当前时间的条件扫描表中数据,查询中超过当前时间的记录则为超时消息;
以上几类的超时检测机制中,第一类方式的优势是实现简单,但效率最低;第二类方式则相对有较高的效率,也同样适合于非持久化的消息存储系统中,但对于有大量相同超时时间的消息在保存上则会存在问题,需要对方法进行扩展,比如节点改为链表,另外一个不利因素则是实现方法较为复杂;而第三类方式一般用于效能要求不高的业务软件系统中,并不适合于非持久化存储的消息管理系统,且效率不高。
发明内容
本发明所要解决的技术问题是提供一种消息超时检测处理方法,用于解决现有技术中消息超时检测机制存在的效率不高、方法复杂、适用性不强等问题。
本发明解决上述技术问题的技术方案如下:一种消息超时检测处理方法,包括以下步骤:
步骤1,建立一个时间轴数组,时间轴数组中任意相邻的两个节点间的时间间隔相等,数组最左端为时间下界,数组最右端为时间上界;这里所述的时间间隔即为时间轴数组的单位长度;
步骤2,在数组中设置当前时间指针、最小时间指针和最大时间指针,当前时间指针指向存储当前消息的节点,最小时间指针指向有消息的最小时间对应的节点,最大时间指针指向有消息的最大时间对应的节点;
步骤3,向数组插入新消息,根据新消息属性中超时时间与当前时间的差值,将新消息指针插入到数组中的目标位置,实时右移当前时间指针,并根据插入的新消息,更新最大时间指针;
步骤4,若消息在当前时间到超时时间内完成处理,则将消息对应的指针从数组中删除;若当前时间超过超时时间,该消息还未被处理,则逐个删除最小时间指针与当前时间指针间的超时消息。
在上述技术方案的基础上,本发明还可以做如下改进:
进一步,执行步骤1和步骤2还包括对数组进行初始化,包括:根据实际情况确定数组的长度,并执行数组清零,使当前时间指针、最小时间指针、最大时间指针均指向数组最左端的节点。
进一步,所述数组中任意相邻的两个节点间的时间间隔能预先根据实际情况进行设置。
进一步,所述时间间隔的预设值为1秒。
进一步,所述新消息属性中的规定的超时时间能预先进行设置,且其能设置的最小值为时间轴数组中任意相邻的两个节点间的时间间隔。
进一步,执行所述步骤3还包括:若新消息的目标位置超出数组最右端,则将超出部分的有效数据向左移动到数组最左端,并使最小时间指针指向数组最左端,否则直接在目标位置插入新消息。
进一步,超出部分的有效数据是指:更新后的最小时间指针与最大时间指针间的消息。
进一步,将超出部分的有效数据向左移动到数组最左端时要求:最小时间指针与数组最左端之间的距离大于或者等于目标位置到最小时间指针的距离。
进一步,将超出部分的有效数据向左移动到数组最左端是通过另外建立一个用于腾挪数据的数组完成的,且该数组长度大于超出部分有效数据的长度。
进一步,所述步骤4中将最小时间指针与当前时间指针间的超时消息逐个删除包括:若当前时间大于最小时间,则取出数组最左端的消息,并向右移动最小时间指针;若当前时间小于最小时间,则没有超时,也向右移动最小时间指针。
本发明的有益效果主要有以下几点:
1、数据结构简单,占用存储资源极少,甚至可用于嵌入设备;处理流程简单高效,提高了系统处理性能,且容易扩展;
2、提供了一种当插入消息超过数组上界时,提供了一个“左移”过程,这个左移过程可以保证在有限长的数组下系统能持续运行;
3、实现了较简便的判断当前是否存在超时消息;
4、每次删除操作仅删除时间轴最小端的那一个消息,或者说最左端,再或者是超时最多的那一条消息,节省资源,系统灵活性增大;
5、实现了既可以定时更新当前时间,也可以在删除操作或添加操作时更新,这样占用系统资源较少。
附图说明
图1为本发明所述消息超时检测处理方法的流程示意图;
图2为本发明所建时间轴数组的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,实施例一给出了具体的消息超时检测处理方法的实现过程,如下几部分所述。
1、创建一个时间轴数组,如图2所示,建立一个时间轴数组,该数组表示了一个时间线,每个节点为一个相对时间,比如可以用秒来作单位。为说明清楚,这里设数组下标从左到右增加对应时间的增加方向,那么该时间轴数组的时间轴最小端p1也就对应时间轴数组下标的最小位置,即时间轴数组最左端;时间轴最大端p2对应时间轴数组下标的最大位置,即时间轴数组最右端。
2、数组中还可以再设置3个指针,如图2所示,分别是当前时间指针pCur、所述时间轴数组的有消息的最小时间指针pMin、有消息的最大时间指针pMax;
确定好时间轴数组的长度,可根据实际应用的要求进行调整,一般来说时间轴数组需要建立两份,另一份数组用于在数据超出右界后向左移动中腾挪数据。
3、按照待插入的新消息属性中的规定的超时时间与当前时间的距离,将超时时间插入到数组中对应位置的节点上。比如,要放置一个10秒超时的消息,就把它放到当前时间右侧10秒的位置,当当前时间点右移超过这个位置时,就超时了。具体地:当添加新消息时,将产生的新消息按消息超时时间顺序插入到所述时间轴数组的对应节点中。也就是说,对于待添加的新消息,根据其超时时间与当前时间差值获得目标位置pTarget,按照超时时间大小排列,确定出如果将该新消息插入到时间轴数组,该新消息的超时时间与时间轴数组中其他消息相比,该新消息对应节点在时间轴数组中的位置,也就是根据超时时间确认该新消息对应的指针在时间轴数组中的位置;如果准备插入的位置未超出时间轴最大端,未超出即时间轴数组上界,那么就将该新消息直接插入到目标位置pTarget,即目标位置pTarget的节点指针指向该新消息;如果准备插入的位置超出了时间轴数组的上界,那么进一步判断时间轴数组左边是否有足够的空间来容纳添加新消息后的全部节点,判断式可采用“(pMin-p1)是否大于等于(pTarget-pMin)”,如果没有这个足够的空间,那么添加操作失败;如果有这个足够的空间,那么就将时间轴数组中现有的所有消息,即有消息的最小时间指针pMin和有消息的最大时间指针pMax之间的消息,保持当前排列顺序不变,并全部平移到以时间轴最小端开始并向时间轴最大端延伸的区域,且时间轴最小端的节点即为原有消息的最小时间指针pMin,然后再插入新消息;这个左移过程可以保证在有限长的数组下系统能持续运行。
这种消息超时检测处理方法没有设立单独的工作线程来更新当前时间指针,更新指针的操作在添加和删除超时消息的过程中都会实现;当数据超出右界时,数据左移到最左端的操作需要借助另外一个数组;当数组长度不足以提供左移的空间,则添加操作失败;添加消息后更新有消息的最大时间指针pMax,当前时间指针pCur。
4、判断是否超时,并删除超时消息。具体地:当删除超时消息时,判断所述时间轴数组中是否存在超时时间比当前时间小的节点,如果存在超时时间比当前时间小的节点,将已经超时信息的删除;如果不存在超时时间比当前时间小的节点,那么结束判断。具体来说,当删除超时消息时,可以通过判断当前时间指针pCur是否大于有消息的最小指针pMin,如果大于,那么说明当前时间指针pCur和有消息的最小指针pMin之间的消息均为超时消息,将这部分信息删除,如果不大于,说明时间轴数组中的消息未超时,因此直接结束。删除超时消息时可以将当前时间指针pCur与有消息的最小指针pMin之间对应的消息全部删除,也可以每次删除操作只删除超时时间最小的一条消息,即超时时间最多的那一条消息,还可以说是删除有消息的最小指针pMin正对应的这一条消息。每次删除后及时更新当前时间指针pCur和有消息的最小指针pMin。因此,可知删除超时消息时则更新pMin,pCur指针根据时间右移。
上述添加消息和删除消息时,也可以单独建立更前当前时间的线程,定时更新时间,或者按前述在添加或删除操作后再更新当前时间,后者系统资源占用相对较少。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种消息超时检测处理方法,其特征在于,包括以下步骤:
步骤1,建立一个时间轴数组,时间轴数组中任意相邻的两个节点间的时间间隔相等,数组最左端为时间下界,数组最右端为时间上界;
步骤2,在数组中设置当前时间指针、最小时间指针和最大时间指针,当前时间指针指向存储当前消息的节点,最小时间指针指向有消息的最小时间对应的节点,最大时间指针指向有消息的最大时间对应的节点;
步骤3,向数组插入新消息,根据新消息属性中超时时间与当前时间的差值,将新消息指针插入到数组中的目标位置,实时右移当前时间指针,并根据插入的新消息,更新最大时间指针;
步骤4,若消息在当前时间到超时时间内完成处理,则将消息对应的指针从数组中删除;若当前时间超过超时时间,该消息还未被处理,则将最小时间指针与当前时间指针间的超时消息逐个删除。
2.根据权利要求1所述的消息超时检测处理方法,其特征在于,执行步骤1和步骤2还包括对数组进行初始化,包括:根据实际情况确定数组的长度,并执行数组清零,使当前时间指针、最小时间指针、最大时间指针均指向数组最左端的节点。
3.根据权利要求1所述的消息超时检测处理方法,其特征在于,所述数组中任意相邻的两个节点间的时间间隔能预先根据实际情况进行设置。
4.根据权利要求3所述的消息超时检测处理方法,其特征在于,所述时间间隔的预设值为1秒。
5.根据权利要求1所述的消息超时检测处理方法,其特征在于,所述新消息属性中的超时时间能预先进行设置,且其能设置的最小值为时间轴数组中任意相邻的两个节点间的时间间隔。
6.根据权利要求1所述的消息超时检测处理方法,其特征在于,执行所述步骤3还包括:若新消息的目标位置超出数组最右端,则将超出部分的有效数据向左移动到数组最左端,并使最小时间指针指向数组最左端,否则直接在目标位置插入新消息。
7.根据权利要求6所述的消息超时检测处理方法,其特征在于,超出部分的有效数据是指:更新后的最小时间指针与最大时间指针间的消息。
8.根据权利要求6所述的消息超时检测处理方法,其特征在于,将超出部分的有效数据向左移动到数组最左端时要求:最小时间指针与数组最左端之间的距离大于或者等于目标位置到最小时间指针的距离。
9.根据权利要求6所述的消息超时检测处理方法,其特征在于,将超出部分的有效数据向左移动到数组最左端是通过另外建立一个用于腾挪数据的数组完成的,且该数组长度大于超出部分有效数据的长度。
10.根据权利要求1所述的消息超时检测处理方法,其特征在于,所述步骤4中将最小时间指针与当前时间指针间的超时消息逐个删除包括:若当前时间大于最小时间,则取出数组最左端的消息,并向右移动最小时间指针;若当前时间小于最小时间,则没有超时,也向右移动最小时间指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544014.0A CN103067258B (zh) | 2012-12-14 | 2012-12-14 | 一种消息超时检测处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544014.0A CN103067258B (zh) | 2012-12-14 | 2012-12-14 | 一种消息超时检测处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103067258A true CN103067258A (zh) | 2013-04-24 |
CN103067258B CN103067258B (zh) | 2016-01-06 |
Family
ID=48109726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210544014.0A Active CN103067258B (zh) | 2012-12-14 | 2012-12-14 | 一种消息超时检测处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103067258B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103501278A (zh) * | 2013-09-30 | 2014-01-08 | 珠海市君天电子科技有限公司 | 一种平滑的流量控制方法及装置 |
CN103809982A (zh) * | 2014-02-26 | 2014-05-21 | 能力天空科技(北京)有限公司 | 一种排列方法及系统 |
CN105808329A (zh) * | 2016-02-25 | 2016-07-27 | 北京京东尚科信息技术有限公司 | 分布式超时任务调度方法和装置 |
CN106375146A (zh) * | 2016-08-30 | 2017-02-01 | 成都科来软件有限公司 | 利用时间刻度表示网络数据当前存储状态的方法和系统 |
CN106462474A (zh) * | 2014-05-08 | 2017-02-22 | 谷歌公司 | 使用故意延迟发送的网络超时 |
CN107239378A (zh) * | 2016-03-29 | 2017-10-10 | 北京忆恒创源科技有限公司 | 一种超时监测方法及系统 |
CN109104326A (zh) * | 2018-06-05 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 超时处理方法及装置和电子设备 |
CN111262701A (zh) * | 2020-01-10 | 2020-06-09 | 普联国际有限公司 | 一种重放攻击检测方法、系统、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556654A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 软件定时器的定时及控制方法 |
CN1711722A (zh) * | 2002-11-12 | 2005-12-21 | 皇家飞利浦电子股份有限公司 | 有效管理超时消息的方法和设备 |
-
2012
- 2012-12-14 CN CN201210544014.0A patent/CN103067258B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1711722A (zh) * | 2002-11-12 | 2005-12-21 | 皇家飞利浦电子股份有限公司 | 有效管理超时消息的方法和设备 |
CN1556654A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 软件定时器的定时及控制方法 |
Non-Patent Citations (1)
Title |
---|
黄晨: "嵌入式实时内存数据库关键技术研究", 《哈尔滨工程大学硕士学论文》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103501278A (zh) * | 2013-09-30 | 2014-01-08 | 珠海市君天电子科技有限公司 | 一种平滑的流量控制方法及装置 |
CN103501278B (zh) * | 2013-09-30 | 2016-11-23 | 珠海市君天电子科技有限公司 | 一种平滑的流量控制方法及装置 |
CN103809982A (zh) * | 2014-02-26 | 2014-05-21 | 能力天空科技(北京)有限公司 | 一种排列方法及系统 |
CN106462474A (zh) * | 2014-05-08 | 2017-02-22 | 谷歌公司 | 使用故意延迟发送的网络超时 |
CN106462474B (zh) * | 2014-05-08 | 2020-03-31 | 谷歌有限责任公司 | 使用故意延迟发送的网络超时 |
CN105808329A (zh) * | 2016-02-25 | 2016-07-27 | 北京京东尚科信息技术有限公司 | 分布式超时任务调度方法和装置 |
CN107239378A (zh) * | 2016-03-29 | 2017-10-10 | 北京忆恒创源科技有限公司 | 一种超时监测方法及系统 |
CN106375146A (zh) * | 2016-08-30 | 2017-02-01 | 成都科来软件有限公司 | 利用时间刻度表示网络数据当前存储状态的方法和系统 |
CN109104326A (zh) * | 2018-06-05 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 超时处理方法及装置和电子设备 |
CN109104326B (zh) * | 2018-06-05 | 2021-08-20 | 创新先进技术有限公司 | 超时处理方法及装置和电子设备 |
CN111262701A (zh) * | 2020-01-10 | 2020-06-09 | 普联国际有限公司 | 一种重放攻击检测方法、系统、设备及存储介质 |
CN111262701B (zh) * | 2020-01-10 | 2023-05-23 | 普联国际有限公司 | 一种重放攻击检测方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103067258B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103067258A (zh) | 一种消息超时检测处理方法 | |
KR101802921B1 (ko) | 가상 머신의 미러 이미지 파일을 인출하는 방법 및 장치 | |
CN109684333B (zh) | 一种数据存储及裁剪方法、设备和存储介质 | |
CN103379129B (zh) | 一种数据同步方法、服务器及分布式系统 | |
CN103914439A (zh) | 一种文档在线编辑方法、设备以及系统 | |
EP2871809A1 (en) | Message processing method, device and system for internet of things | |
CN104850301A (zh) | 一种在系统桌面上将应用程序图标分类的方法和系统 | |
CN105279163A (zh) | 一种缓存数据的更新及存储方法及其系统 | |
US20120185454A1 (en) | Method and device for accessing file resources | |
CN101594376B (zh) | 向cimom注册cim提供器的方法和相应的装置 | |
CN102263805A (zh) | 一种动态资源下载的方法和装置 | |
US8898677B2 (en) | Data arrangement calculating system, data arrangement calculating method, master unit and data arranging method | |
CN105677789A (zh) | 一种分布式文件系统的目录容量管理方法及系统 | |
CN102467525A (zh) | 单据关联方法及系统 | |
CN106250476B (zh) | 一种更新和同步白名单的方法、装置和系统 | |
CN105260202A (zh) | 一种客户端文件更新方法和系统 | |
CN102262562A (zh) | 任务处理方法及系统 | |
CN103425526B (zh) | 一种接口调用的控制方法及装置 | |
CN103559198A (zh) | 一种数据同步的方法及设备 | |
CN105260465B (zh) | 一种图数据处理服务的方法、装置 | |
CN101526959B (zh) | 一种数据存储方法和装置 | |
KR101666440B1 (ko) | 환형큐 기반의 인-메모리 데이터베이스 시스템에서의 데이터 처리방법 | |
CN107562382B (zh) | 一种基于定时任务的磁盘自动动态扩容方法及系统 | |
CN111984740B (zh) | 业务数据表处理方法、装置、计算机设备和存储介质 | |
CN105786723A (zh) | 基于链表的应用缓存管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |