CN100461882C - 一种短消息系统中对网元进行重试的方法 - Google Patents
一种短消息系统中对网元进行重试的方法 Download PDFInfo
- Publication number
- CN100461882C CN100461882C CNB2005100803909A CN200510080390A CN100461882C CN 100461882 C CN100461882 C CN 100461882C CN B2005100803909 A CNB2005100803909 A CN B2005100803909A CN 200510080390 A CN200510080390 A CN 200510080390A CN 100461882 C CN100461882 C CN 100461882C
- Authority
- CN
- China
- Prior art keywords
- retry
- message
- network element
- internal memory
- retrying
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的一种短消息系统中对网元进行重试的方法,在本网元给下级网元转发消息失败后形成重试消息,进入重试流程,所述重试消息存放在重试内存,所述重试内存已满时放入到数据库中,以对重试消息进行存储。本发明方法由于系统采用了两级缓存,解决了重试内存存储的局限性;通过设置发送队列,实现了多个目的网元对重试内存的存储共享;通过发送流量控制,实现了对短消息的有效重试和平滑重试;采用以上方法实现的重试流程,能够完整地解决当前短消息重试中的问题,能够最大限度地提高重试成功率。
Description
技术领域
本发明方法涉及电信的短消息技术领域,尤其涉及的是一种短消息系统中对网元进行重试的方法。
背景技术
最初,人们使用的是某运营商内的手机互发短信服务;随着运营商之间短信互联互通工作的开展,以及点播、定制等应用新业务的产生,诞生了大量的短信中间网络设备,例如短消息互通网关,短消息业务网关等,这些对短消息进行接续和传递的中间网络设备就是短消息网络系统中的网元。网元之间的通信大都建立在TCP/IP连接之上,各网元之间按照一定的通信协议来传递数据。一般来讲,TCP/IP网络提供可靠传输,网元之间传递数据是可靠的,成功率很高。但是,在数据量大时,可能会出现网络繁忙,下一级网元的主机处理不过来的情况,这时候成功率会降低。
为提高网元间传递数据的可靠性和成功率,就要求网元之间必须进行重试。网元之间短消息重发与短消息中心对用户进行短消息重发的机制是不一样的,最核心的区别是前者是对设备进行重试,后者是对用户进行重试。对用户进行消息重发是按条进行的,而对设备进行消息重发是批量进行的。目前,很多网元之间转发消息不进行重试,这样在网络繁忙的情况下会丢消息;有的做了简单的重试处理,仅在内存中缓存一定量的消息,这样的重试是不完整和不可靠的;此外,现有技术中重试过程中没有考虑对方网元的接收情况,往往出现重试仍然不成功的情况。总之,当前网元之间的重试方法有很多缺陷,重试成功率很低,没有从根本上提高网元之间传递短消息的成功率。
目前尚未发现有公开的文献介绍数据网络中网元之间短消息重试的方法。
发明内容
本发明的目的,就是提供一种有效的方法来实现网元之间短消息的重试,使网元之间的重试实现如下目标:1)有效重试,即提高重试的命中率,尽量减少重试后再次进行重试的情况;2)平滑重试,即发送流量控制,通过平滑的重试算法控制单位时间内重发给下一级网元的短消息数量,尽量减少发送重试消息导致网络繁忙,对端处理不过来的情况;3)重试消息海量存储,在保证重试消息的迅速发送的基础上,实现重试消息海量存储;4)多网元存储共享,多个下级网元的重试消息共享存储空间,动态分配,提高存储空间利用率。
为了实现以上目的,需要采取的方法和步骤如下:
一种短消息系统中对网元进行重试的方法,在本网元给下级网元转发消息失败后形成重试消息,进入重试流程,所述重试消息存放在重试内存,所述重试内存已满时放入到数据库中,以对重试消息进行存储;其中,所述重试流程对每个目的网元设置一个重试队列,其包括以下步骤:
a)、当消息加入重试后,重试模块首先判断重试内存是否满,如果没有满,则加入到相关目的网元的重试队列中;
b)、如果重试内存已满,将较长队列的一条重试消息移动到数据库中,通过分析内存数据得到当前有多少个下级网元有重试消息,从而求出每个网元可重试的平均条数,随机选择超过平均条数的下级网元,其对应的最老的重试消息就是需要入库的消息;
c)、内存空出一个单元后,再将最新的消息加入重试队列。
所述的方法,其中,所有重试队列所需的内存资源从重试内存块中获取,每个目的网元的重试队列对重试内存的占用是动态的。
所述的方法,其中,还包括在系统关闭时将内存中的数据保存为文件,系统重启时将文件内容读入内存,从而保证在内存中的数据不丢失。
所述的方法,其中,所述重试流程对每条进入重试的消息设置优先级别,对低优先级的消息,顺序放入目的网元对应的重试队列的尾部;对高优先级的消息,插队放入目的网元对应的重试队列的头部。
所述的方法,其中,所述重试流程定时扫描每个目的网元的重试队列,将等待重试的消息发送出去;并发送的过程中,通过计数器对流量进行控制,当计数器到达设定的流量时,停止向该网元发送,转而处理下一个网元的重试队列。
所述的方法,其中,所述重试流程定时对数据库里的重试消息进行处理;所述重试流程删除数据库中的过期消息,每条重试消息通过有效期判断是否过期,过期的消息不必进行重发,给源端回发送过期通知;所述重试流程将需要重试的消息读入内存,放到各个目的网元的重试队列中,在下一个内存扫描的周期被重发出去。
本发明方法由于系统采用了两级缓存,解决了重试内存存储的局限性;通过设置发送队列,实现了多个目的网元对重试内存的存储共享;通过发送流量控制,实现了对短消息的有效重试和平滑重试;采用以上方法实现的重试流程,能够完整地解决当前短消息重试中的问题,能够最大限度地提高重试成功率。
附图说明
图1是本发明方法的系统结构示意图;
图2是本发明方法的内部处理流程图;
图3是本发明方法中的短消息进入重试处理流程图;
图4是本发明方法中的短消息重试定时内存扫描处理流程图;
图5是本发明方法中的短消息重试定时数据库扫描处理流程图;
图6是本发明方法应用示例图—PHS短消息二级网关示意图。
具体实施方式
以下结合附图,将对本发明的各较佳实施例进行较为详细的说明。
本发明的所述短消息系统中对网元进行重试的方法中,在本网元给下级网元转发消息失败后,即进入重试流程,重试消息的存放分为两个部分,一部分放在内存中,另外一部分放入到数据库中,也即系统采用两级缓存,内存和数据库。第一级存储是内存,可以提高系统处理的速度;第二级存储是数据库,可以对重试消息进行海量存储。此外,在系统关闭时将内存中的数据保存为文件,系统重启时将文件内容读入内存,从而保证在内存中的数据不丢失。
本发明方法的重试流程对每个目的网元设置一个重试队列。所有重试队列所需的内存资源从重试内存块中获取。每个目的网元的重试队列对重试内存的占用是动态的,即当只有一个目的网元需要重试的时候,其重试队列可以占用整个重试内存块,当有多个目的网元需要重试的时候,其重试队列共同占用重试内存块,当重试内存块被占用完成后,较长的队列中的重试消息会被挤到数据库中,为新加入的重试消息提供空间。
所述重试流程对每条进入重试的消息设置优先级别。对低优先级的消息,顺序放入目的网元对应的重试队列的尾部。对高优先级的消息,插队放入目的网元对应的重试队列的头部,这样,在重试的时候,优先级别高的消息总是被优先重试。
所述重试流程定时扫描每个网元的重试队列,将等待重试的消息发送出去。发送的过程中,通过计数器对流量进行控制,当计数器到达设定的流量时,停止向该网元发送,转而处理下一个网元的重试队列,从而保证目的网元的有效接收。任何一条重试消息发送后,该消息占用的空间被归还到重试内存,为下一条新加入的重试消息提供存放空间。
所述重试流程定时对数据库里的重试消息进行处理。一方面,重试流程删除数据库中的过期消息,每条重试消息通过有效期判断是否过期,过期的消息不必进行重发,给源端回送过期通知即可。另一方面,重试流程将需要重试的消息读入内存,放到各个目的网元的重试队列中,在下一个内存扫描的周期被重发出去。通过数据库处理流程,在设计流量一定的系统中,能够控制堆积在数据库中的重试消息的数量上限,从而保证系统的稳定性和可靠性。
如图1所示是运用本发明方法的系统结构示意图,图中表明了本网元和其他网元的连接关系以及重试模块在本网元中的位置。
如图1中所示,本网元与下级网元A、B、C通过TCP/IP网络连接,A、B、C网元都可以同本网元收/发短消息。本发明的重试模块可以作为一个独立的模块存在,也可以与本网元的短消息应用程序合在一起。这样做的目的是可以减少重试模块与短消息应用程序之间的耦合,方便实现和扩展。通过进程或者线程间通信,重试模块与短消息应用程序完成信息交换。运用了本发明的重试模块后,本网元发往下级网元A、B、C的消息实现可靠重试。
如图2所示是本发明的内部处理流程图,图中说明重试模块的内部结构、外部接口以及内存和磁盘间的数据交换。
由图2可见,重试数据的保存分为两部分,内存和磁盘,对磁盘的读写操作通过数据库接口(DB接口)完成。重试模块提供一个消息入口:重试消息入口。通过该入口,短消息应用程序可以加入重试消息。重试模块提供两个消息出口:重发消息出口,过期消息出口。通过这两个出口,重试模块将重试消息通知到短消息应用程序。重试处理流程内部不断从入口接收数据,控制内存和磁盘交换数据,周期地向出口发出数据。接下来,图3、图4和图5将详细说明短消息加入重试的流程,定时内存扫描流程和定时数据库扫描流程。
如图3所示是本发明中的短消息进入重试处理流程图。
当消息加入重试后,重试模块首先判断重试内存是否满。如果没有满,则加入到相关目的网元的重试队列中。
如果已满,就需要将较长队列的一条重试消息移动到数据库中。选择此条消息入库方法如下:通过分析内存数据得到当前有多少个下级网元有重试消息,从而求出每个网元可重试的平均条数,随机选择超过平均条数的下级网元,其对应的最老的重试消息就是需要入库的消息。
内存空出一个单元后,再将最新的消息加入重试队列。由于重试内存空间被动态分配,实现了多个网元共享存储空间,提高了存储空间利用率。
如图4所示是本发明中的短消息重试定时内存扫描处理流程图。定时内存扫描是实现重试的核心流程,在重试模块中按照设置的周期触发。
进入内存扫描流程后,重试模块首先判断内存中是否有消息在等待重试。如果没有消息等待重试,本次扫描结束。
如果有消息等待重试,重试模块依次选取下一级网元的消息进行重试,直到扫描完成所有下级网元。
处理第n个下级网元的重试消息时,首先判断第n个下级网元是否有重试消息,如果没有,处理第n+1个下级网元;接着判断第n个下级网元同本网元的连接是否正常,如果没有连接,也处理第n+1个下级网元。
获取第n个网元的重试消息后,根据设定的有效期判断本条重试消息是否过期,如果过期,则转发过期通知,进行过期的相应处理;如果正常,就对此消息进行转发。
在向下级别网元转发的过程中,要对发送给下一级网元的重试消息计数。当计数器到达设定的流量时,停止向该网元发送,转而处理下一个网元的重试队列,从而保证目的网元的有效接收。
如图5所示是本发明中的短消息重试定时数据库扫描处理流程图。
内存中缓存消息的目的是保证处理速度,但内存开销是有限的,而且为了保证可靠性,内存大小是在初始化时就申请好了。所以必然有消息需要从内存中倒换到数据库中,见图3;另一方面,倒换到数据库中的重试消息也需要再次倒换到内存中,从而保证消息被重发出去。
定时数据库扫描也是重试的一个非常重要的处理流程,在重试模块中依靠定时器周期触发。进入数据库扫描后,首先检查重试内存消息的占用情况。如果内存中缓存的消息量占用内存超过阈值,则跳过读取数据进入内存的流程。
按照设置的数量一次从数据库中读取重试消息。按条处理将重试消息加入内存中,如果加入成功,则删除数据库中对应记录;如果加入失败,则不删除记录,且不再尝试加入。
按照设置的数量一次从数据库中读取过期消息。逐条转发过期通知并删除过期消息。
有了该流程后,可以保证数据库中存储的消息量大小可控。一方面还原回内存中,一方面有清理机制删除过期消息。
下面描述本发明在短消息系统设备——PHS短消息二级网关中的具体实施例子,见图6所示,短消息二级网关连接的网元有短消息一级网关、短消息中心A、短消息中心B、短消息三级网关、移动短消息互通网关A、移动短消息互通网关B等。某PHS用户给某移动用户发送短信要经过的设备和流程如下:短消息首先到达短消息中心A,短消息中心A送给短消息二级网关,二级网关转发给移动短消息互通网关A,再被转发到移动短消息中心,最后到达手机用户。
系统设计短消息流量为1000条每秒,一共有10个目的网元。通过统计可知,二级网关发送消息一次成功率在97.5%左右,即约有2.5%的消息需要重试。根据系统设计流量1000条每秒,可以计算出每秒需要重试的量为25条。如果要在重试内存中缓存1个小时的重试消息,则重试内存中消息量为25*3600=90000条,加上一定的余量,设置内存重试消息量为100000条。由于每条重试消息占用内存500字节,则重试占用系统内存约为50M字节。考虑一些极端的情况,例如,某个下级网元主机宕机或者到该网元的网络中断,则需要重试的短消息流量急剧增长,这时必然使用到数据库存储。在磁盘空间允许的情况下,数据库文件大小可以设置为5G到10G。内存定时扫描的周期可以设置为6秒,则每次需要发出的重试消息为25*6=150条,平均到10个目的网元上,则每个网元每次重发15条。数据库定时扫描周期也可以设置为6秒,每次删除过期消息的量和从数据库中取回内存的重试消息量可以根据实际情况灵活调整。
当同二级网关相连的任何一个目的网元设备负荷重、网络拥塞时,就会出现响应不过来、拒绝消息甚至断链的情况,短消息二级网关重试功能启动。二级网关将所有需要重试的消息缓存起来。如果有多个目的网元的消息需要重试,二级网关将按照策略动态分配存储空间。同时,二级网关根据配置定期对所有目的网元进行扫描,如果链路是畅通的,就将等待重试的消息发出。在向目的网元重发消息的过程中,每次发送的量和时间间隔根据配置确定,发送消息的速度均匀平滑,不对网络和目的网元造成冲击。采用本发明后的短消息二级网关,消息发送成功率得到提升。尤其在节假日大话务量情况下,效果更加明显。
应该理解的是,上述针对具体实施例的描述较为具体,并不能因此而理解为对本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
Claims (6)
1.一种短消息系统中对网元进行重试的方法,在本网元给下级网元转发消息失败后形成重试消息,进入重试流程,所述重试消息存放在重试内存,所述重试内存已满时放入到数据库中,以对重试消息进行存储;其特征在于,所述重试流程对每个目的网元设置一个重试队列,其包括以下步骤:
a)、当消息加入重试后,重试模块首先判断重试内存是否满,如果没有满,则加入到相关目的网元的重试队列中;
b)、如果重试内存已满,将较长队列的一条重试消息移动到数据库中,通过分析内存数据得到当前有多少个下级网元有重试消息,从而求出每个网元可重试的平均条数,随机选择超过平均条数的下级网元,其对应的最老的重试消息就是需要入库的消息;
c)、内存空出一个单元后,再将最新的消息加入重试队列。
2.根据权利要求1所述的方法,其特征在于,还包括在系统关闭时将内存中的数据保存为文件,系统重启时将文件内容读入内存,从而保证在内存中的数据不丢失。
3.根据权利要求3所述的方法,其特征在于,所有重试队列所需的内存资源从重试内存中获取,每个目的网元的重试队列对重试内存的占用是动态的。
4.根据权利要求3所述的方法,其特征在于,所述重试流程对每条进入重试的消息设置优先级别,对低优先级的消息,顺序放入目的网元对应的重试队列的尾部;对高优先级的消息,插队放入目的网元对应的重试队列的头部。
5.根据权利要求3所述的方法,其特征在于,所述重试流程定时扫描每个目的网元的重试队列,将等待重试的消息发送出去;并发送的过程中,通过计数器对流量进行控制,当计数器到达设定的流量时,停止向该网元发送,转而处理下一个网元的重试队列。
6.根据权利要求3所述的方法,其特征在于,所述重试流程定时对数据库里的重试消息进行处理;所述重试流程删除数据库中的过期消息,每条重试消息通过有效期判断是否过期,过期的消息不必进行重发,给源端回发送过期通知;所述重试流程将需要重试的消息读入内存,放到各个目的网元的重试队列中,在下一个内存扫描的周期被重发出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100803909A CN100461882C (zh) | 2005-07-04 | 2005-07-04 | 一种短消息系统中对网元进行重试的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100803909A CN100461882C (zh) | 2005-07-04 | 2005-07-04 | 一种短消息系统中对网元进行重试的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1893686A CN1893686A (zh) | 2007-01-10 |
CN100461882C true CN100461882C (zh) | 2009-02-11 |
Family
ID=37598100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100803909A Expired - Fee Related CN100461882C (zh) | 2005-07-04 | 2005-07-04 | 一种短消息系统中对网元进行重试的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100461882C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102281B (zh) * | 2007-08-16 | 2010-04-07 | 中兴通讯股份有限公司 | 移动通信系统中大量数据上报时的数据处理方法 |
CN101127950B (zh) * | 2007-09-04 | 2010-06-23 | 中兴通讯股份有限公司 | 一种短消息重试处理方法、装置及应用其的短消息中心 |
CN101616365B (zh) * | 2008-06-24 | 2012-12-05 | 中兴通讯股份有限公司 | 一种基于并行队列的短消息重试系统及方法 |
CN107548039B (zh) * | 2016-06-24 | 2021-06-25 | 中兴通讯股份有限公司 | 一种短消息重试处理方法及装置、系统 |
CN109947798A (zh) * | 2017-09-18 | 2019-06-28 | 中国移动通信有限公司研究院 | 一种流事件的处理方法及装置 |
CN110806958A (zh) * | 2019-10-24 | 2020-02-18 | 长城计算机软件与系统有限公司 | 一种监控方法、监控装置、存储介质及电子设备 |
CN113823025B (zh) * | 2021-08-24 | 2023-04-21 | 广州市瑞立德信息系统有限公司 | 一种命令重试方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08202566A (ja) * | 1995-01-24 | 1996-08-09 | Nissin Electric Co Ltd | プロセス間通信システム |
CN1391421A (zh) * | 2001-06-13 | 2003-01-15 | Lg电子株式会社 | 移动通信终端的短消息接收方法 |
CN1405995A (zh) * | 2001-09-13 | 2003-03-26 | 日本电气株式会社 | 短消息发送系统 |
-
2005
- 2005-07-04 CN CNB2005100803909A patent/CN100461882C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08202566A (ja) * | 1995-01-24 | 1996-08-09 | Nissin Electric Co Ltd | プロセス間通信システム |
CN1391421A (zh) * | 2001-06-13 | 2003-01-15 | Lg电子株式会社 | 移动通信终端的短消息接收方法 |
CN1405995A (zh) * | 2001-09-13 | 2003-03-26 | 日本电气株式会社 | 短消息发送系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1893686A (zh) | 2007-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100461882C (zh) | 一种短消息系统中对网元进行重试的方法 | |
CN100407698C (zh) | 无线链路控制层的数据传输方法 | |
CN101179790B (zh) | 一种移动终端处理器之间的串口通信方法 | |
CN101635908B (zh) | 一种计费系统的话单传输处理方法及其系统 | |
CN106134147A (zh) | 实现请求管理器和连接管理器功能的传输加速器 | |
CN107204834A (zh) | 一种基于udt协议的高速网络可靠传输的控制方法 | |
CN101494652A (zh) | 一种卫星通信系统中增强tcp协议性能的方法 | |
CN104093170A (zh) | 基于tcp的数据传输方法和tcp代理装置 | |
CN110213167A (zh) | 一种传输控制协议在网络拥塞时的处理方法和装置 | |
CN103338184A (zh) | 数据发送方法及装置、数据接收装置以及数据传输系统 | |
CN101217587A (zh) | 收取短信的方法以及装置 | |
WO2006107423A2 (en) | Error recovery mechanism and network element comprising same | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN100477611C (zh) | 无线/lan路由器排队方法和系统 | |
WO2024109734A1 (zh) | 数据传输方法、装置、电子设备及存储介质 | |
CN104427551A (zh) | 一种业务消息发送方法及装置 | |
CN100403818C (zh) | 一种短消息重发方法及短消息重发系统 | |
CN101127950B (zh) | 一种短消息重试处理方法、装置及应用其的短消息中心 | |
US20070035779A1 (en) | Method and system for facsimile delivery using dial-up modem pools | |
CN101841477A (zh) | 一种提高网络控制芯片可靠报文传输信用的方法 | |
CN101188555B (zh) | 一种提高非可靠通讯环境下单向通讯可靠性的方法 | |
CN110557369A (zh) | 基于国产操作系统内核态的高速数据处理平台 | |
US6407994B1 (en) | System and method for bundling messages for transmission in a telecommunications network | |
CN1929386B (zh) | 一种计费方法和系统 | |
CN101605306A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090211 Termination date: 20130704 |