CN101651526B - 一种网络设备间的消息传递方法 - Google Patents
一种网络设备间的消息传递方法 Download PDFInfo
- Publication number
- CN101651526B CN101651526B CN 200810048816 CN200810048816A CN101651526B CN 101651526 B CN101651526 B CN 101651526B CN 200810048816 CN200810048816 CN 200810048816 CN 200810048816 A CN200810048816 A CN 200810048816A CN 101651526 B CN101651526 B CN 101651526B
- Authority
- CN
- China
- Prior art keywords
- message
- array
- request
- retransmission
- take
- 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.)
- Active
Links
Images
Abstract
一种网络设备间的消息传递方法,包括以下步骤:a.以消息标志ID为数组下标建立重发数组;b.产生请求时,以消息标识ID为数组下标将其插入到重发数组中,并发送消息;c.发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端ID+消息ID为返回值,检索到对端节点ID以消息ID为数组下标的单元,定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发链表中删除;d.收到响应时,根据消息ID直接定位到重发数组中的元素,删除对应请求消息。所述方法能大大提高网络设备进行消息重发的效率,在系统资源占用和消息通知恢复的及时性之间取得灵活的平衡,并保证消息传递的准确性。
Description
技术领域
本发明涉及数据传输领域网络设备间的消息传递方法。
背景技术
在数据传输领域,以消息通知作为交互模式的应用系统越来越多。在消息传输时,由于双方系统或传输链路的故障,导致消息在传输过程中丢失而不能及时、可靠的送达。针对这一问题,形成了各种不同的消息重发机制用于重新发送未成功送达的消息。采用重发机制,在第一次发送不成功的情况下,能够进行多次的发送尝试,在很大程度上解决了消息发送不能送达的问题。但对于中长期的通信故障,由于多次的尝试重发,既浪费发送时间又占用系统资源,造成了发送效率的低下。当前对于消息重传有很多代表性的方法,实际系统中使用的最多的是二进制回退算法和轮询扫描方法。
二进制指数回退方法。它首先将时间分片,每个时间片的长度是t。则在第i次发送失败时,重新发送周期T是在0到(2i-1)*t之间的一个随机的长度为t的整数倍的时间。二进制指数回退算法使得当数据传输发生故障时,重试时间间隔呈指数迅速增长。这种针对随机故障模式设计的重试时间间隔计算方法并不适用于网络系统间消息通信的常见故障模式,往往会造成故障恢复时间过长。网络系统间消息通信发生故障的原因一般是网络繁忙造成传输超时、网络设备发生故障、应用系统发生故障、计划内停机维护等等。这些故障的发生是随机的,但故障的恢复由于人工发现和维护的介入,因此不是随机的,而是具有一定的模式。此外,网络上的故障的恢复需要的时间往往以小时和天来计,而在这段时间内会积累大量未发出的消息,因此消息队列的维护也是一个很大的问题。
轮询扫描方法为每一个网络设备节点建立重发链表,设置一定时器每隔一定时间扫描整个队列,对超过重发间隔的请求消息重发,收到对端响应时,以消息的ID号为关键字遍历整个链表,删除匹配的请求。同时对首次发送失败的信令采用二进制回退方法进行处理。
轮询扫描方法得缺点是若请求消息重发链表太长,遍历链表工作量非常大,在重发定时器到时和收到响应时到遍历整个链表,会极大的消耗CPU资源。对首次发送失败的回退处理也会引起消息的累积问题。
因此,建立适用于网络设备间消息保存、管理与重传调度方法,在系统资源占用和消息通知恢复的及时性之间取得灵活的平衡是非常迫切和有意义的工作。
发明内容
本发明提供一种新的网络设备间的消息传递方法用于网络设备间的消息重发,所述方法采用重发数组和链表相结合的办法,能快速定位重发消息,响应重发请求,目的在于提高设备进行消息重发的效率,并保证消息传递的准确性。
所述网络设备间的消息传递方法,包括以下步骤:
a.以消息标志ID为数组下标建立重发数组;
b.产生请求时,以消息标识ID为数组下标将其插入到重发数组中,并发送消息,对于消息标识ID低位相同的请求(即冲突情况),则建立冲突链表;
c.发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端ID+消息ID为返回值,检索到对端节点ID以消息ID为数组下标的单元,快速定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发链表中删除;
d.收到响应时,根据消息ID直接定位到重发数组中的元素,删除对应请求消息。
对于步骤b中所述消息标识ID低位相同的请求是指重发数组大小不足容纳所有消息的请求,此时采用冲突链的方式存储消息;在存在冲突链的情况下,采用消息ID和对端通信节点ID在冲突链中定位消息。
采用所述直接数组下标定位重发数组和链表相结合的方法进行网络设备间的消息重发,不需再做链表遍历工作,当数组元素存在冲突链时才遍历冲突链,删除对应请求消息。
因此本发明具有以下益效果:
a大大提高网络设备进行消息重发的效率;
b实现简单方便,运行时资源消耗低;
c在系统资源占用和消息通知恢复的及时性之间取得灵活的平衡;
d保证消息的准确传递。
附图说明
图1重发数组的数据结构图,
图2重发处理流程图。
具体实施方式
1.首先为每个通信端节点建立重发数组。重发数组用来存放消息的指针,重发数组的数据结构如图1所示。
2.重发数组以消息的唯一标识符消息ID为数组下标,通过下标,可以直接在重发数组中精确定位消息元素。
3.重发数组大小可根据硬件总线结构情况来设置。当消息ID为16位时,如果建立的数组大小为65535(2的16次方)时,即不存在消息ID重复的情况,此时可直接在数组中通过下标定位;如果受限于系统结构,重发数组大小小于65536时,比如256(2的8次方)时,存在消息ID重复的情况,当出现消息ID冲突的情况时,则需要在冲突单元中建立一个冲突链表。
4.冲突链表中的元素包含了通信端的节点信息,通过这些信息可以在冲突链表中定位重发的具体消息。
5.通信节点发送消息的同时,将该消息以消息ID下标存入该节点的重发数组。首先检查重发数组中指针指向是否为空,为空则表明不存在冲突情况,直接将消息指针存入该单元;非空,则表示该单元中已存在一条消息,出现消息冲突情况,此时需要将ID相同的消息存入本单元的冲突链中,重发数组中的该单元元素为该链表的头指针。
6.为该消息设立重发定时器,定时器设置为最大允许响应时间。
7.定时器结束前收到回复响应,表示消息传输正常,不需要重发,根据消息ID可直接定位到重发数组的消息单元,从该单元中删除消息。如果该单元存在冲突链表(如果有的话),则需要遍历冲突链表,采用通信对端ID来定位该消息,定位后删除该消息,同时将对应的定时器关闭。
8.如果定时器超时,表示消息传输失败。根据消息ID可直接定位到重发数组的消息单元,如果没有冲突链,则直接取出消息重新发送,并重新设置定时器。如果存在冲突链,则根据通信对端ID定位消息后,重新发送。
9.每次重发,将消息的重发次数进行累加,超过设计的阈值后,直接将消息从重发数组中删除。
Claims (1)
1.一种网络设备间的消息传递方法,所述方法的特征在于包括以下步骤:
a.以消息ID为数组下标建立重发数组;
b.产生请求时,以消息ID为数组下标将其插入到重发数组中,并发送消息,对于消息ID低位相同的请求,则建立冲突链;所述消息ID低位相同的请求是指重发数组大小不足容纳所有消息的请求,此时采用冲突链的方式存储消息;在存在冲突链的情况下,采用消息ID和对端节点ID在冲突链中定位消息;
c.发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端节点ID及消息ID为返回值,检索对端节点ID以消息ID为数组下标的单元,快速定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发数组中删除;所述检索对端节点ID以消息ID为数组下标的单元,是指如果定时器超时,表示消息传输失败,根据消息ID直接定位到重发数组的消息单元,如果没有冲突链,则直接取出消息重新发送,并重新设置定时器,如果存在冲突链,则根据对端节点ID定位消息后,重新发送;
d.收到响应时,根据消息ID直接定位到重发数组中的元素,删除对应请求消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810048816 CN101651526B (zh) | 2008-08-14 | 2008-08-14 | 一种网络设备间的消息传递方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810048816 CN101651526B (zh) | 2008-08-14 | 2008-08-14 | 一种网络设备间的消息传递方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101651526A CN101651526A (zh) | 2010-02-17 |
CN101651526B true CN101651526B (zh) | 2013-02-13 |
Family
ID=41673661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810048816 Active CN101651526B (zh) | 2008-08-14 | 2008-08-14 | 一种网络设备间的消息传递方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101651526B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102014427B (zh) * | 2010-11-30 | 2015-07-22 | 中兴通讯股份有限公司 | 网络设备上报状态信息的方法和装置 |
CN102769577B (zh) * | 2012-08-21 | 2015-08-12 | 迈普通信技术股份有限公司 | 一种实现报文重传的方法和网络设备 |
CN103680108A (zh) * | 2012-11-20 | 2014-03-26 | 国网电力科学研究院 | 一种电表的抄表方法及抄表装置 |
CN104394004B (zh) * | 2014-11-24 | 2018-02-23 | 浪潮电子信息产业股份有限公司 | 一种高可用集群心跳消息重发方法 |
CN106330688B (zh) * | 2016-10-21 | 2019-06-25 | 上海览海在线健康管理有限公司 | 基于随机消息队列发送医疗消息的方法及系统 |
CN106713124A (zh) * | 2017-01-24 | 2017-05-24 | 深圳市启仑智能科技有限公司 | 一种基于mqtt和mysql的消息推送方法和系统 |
CN107147562B (zh) * | 2017-04-27 | 2018-09-14 | 腾讯科技(深圳)有限公司 | 消息处理方法和装置 |
CN109586855A (zh) * | 2017-09-29 | 2019-04-05 | 西安中兴新软件有限责任公司 | 一种车载设备数据传输方法和装置 |
CN108696568B (zh) * | 2018-02-23 | 2021-07-06 | 福建天泉教育科技有限公司 | 一种请求批量处理方法及终端 |
CN110928944B (zh) * | 2018-08-30 | 2024-04-02 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN111294327A (zh) * | 2019-01-28 | 2020-06-16 | 展讯半导体(成都)有限公司 | 消息冲突解决方法和终端设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645816A (zh) * | 2004-01-22 | 2005-07-27 | 移动研究有限公司 | 邮箱轮询优先准则 |
CN1753391A (zh) * | 2004-09-21 | 2006-03-29 | 微软公司 | 使用具有同步频率的时钟的可靠的消息通信 |
-
2008
- 2008-08-14 CN CN 200810048816 patent/CN101651526B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645816A (zh) * | 2004-01-22 | 2005-07-27 | 移动研究有限公司 | 邮箱轮询优先准则 |
CN1753391A (zh) * | 2004-09-21 | 2006-03-29 | 微软公司 | 使用具有同步频率的时钟的可靠的消息通信 |
Also Published As
Publication number | Publication date |
---|---|
CN101651526A (zh) | 2010-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101651526B (zh) | 一种网络设备间的消息传递方法 | |
CN101047484B (zh) | 一种传输层重传方法和系统 | |
AU644800B2 (en) | Data communication method and system | |
CN102890631B (zh) | 基于持久化消息队列传输消息的方法及消息传输装置 | |
Watson | Timer-based mechanisms in reliable transport protocol connection management | |
CN108282273B (zh) | 分段重传的方法和装置 | |
CN103138905B (zh) | Rlc数据包传输的确认方法及rlc am实体发送方 | |
EP2611057A1 (en) | Mobile communication system and mobile station device | |
CN101056194B (zh) | 一种简单网络管理协议消息传送方法及装置 | |
CN100556037C (zh) | 一种snmp协议下采用确认机制实现告警管理的方法 | |
RU2004109133A (ru) | Улучшение доступности и масштабируемости в системе передачи сообщений способом, прозрачным для приложения | |
EP0969622A3 (en) | Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems | |
CN103780363A (zh) | 消息再传输装置及方法 | |
CN102263674A (zh) | 告警上报方法、系统和设备 | |
CN101977358A (zh) | 一种数据短信的传输方法、装置及设备 | |
CN104640130A (zh) | 一种报文的快速传送方法 | |
WO2019062074A1 (zh) | 一种车载设备数据传输方法和装置 | |
CN111970092B (zh) | 一种支持可靠性调节的多协议冗余网络异步通信方法 | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN106941461A (zh) | 一种利用消息队列优化服务器处理请求的方法 | |
CN101668014B (zh) | 制造网格服务中心与资源节点的通信方法 | |
CN103297477B (zh) | 一种数据采集上报系统及数据处理方法和代理服务器 | |
CN104427551A (zh) | 一种业务消息发送方法及装置 | |
CN116489223A (zh) | 数据上报方法、数据上报装置、电子设备及存储介质 | |
CN105634894B (zh) | 一种增强型can总线数据重发方法和装置 |
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 |