CN113810384B - 实现一次特性的消息传输方法 - Google Patents
实现一次特性的消息传输方法 Download PDFInfo
- Publication number
- CN113810384B CN113810384B CN202110981958.3A CN202110981958A CN113810384B CN 113810384 B CN113810384 B CN 113810384B CN 202110981958 A CN202110981958 A CN 202110981958A CN 113810384 B CN113810384 B CN 113810384B
- Authority
- CN
- China
- Prior art keywords
- message
- version number
- receiving end
- sending
- reply
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0006—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种实现一次特性的消息传输方法,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:步骤S1:上层传入待发送的消息;步骤S2:读取版本号;步骤S3:存储待发送的消息内容;步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器。本发明可以在协议层保证“恰好一次”特性,因此在构建在本方法之上的应用或业务逻辑不需要考虑信息传输过程中可能出现的丢包或者重复发送问题。
Description
技术领域
本发明涉及网络传输的技术领域,具体地,涉及实现一次特性的消息传输方法。
背景技术
由于传输介质、传输过程中软硬件问题,网络传输的过程通常被认为是不确定的。为了应对这类问题带来的影响,硬件及软件的不同层级的协议都需要采用多种方式处理收到的数据包或数据流,如传输控制协议(Transmission Control Protocol,简称TCP协议)就采用了类似滑动窗口自动重传等技术处理以处理网络传输中可能出现的丢包以及乱序的现象。
但在协议采取了相关措施后,应用层仍然无法假设自己运行在一个理想的网络环境中,在极端情况下,因为应用层或者协议层的重发机制,同一个数据包可以被远端收到多次,而这可能引发一些业务逻辑中的错误,比如一个扣费的数据包被重发多次后造成的重复扣费。
在公开号为CN106789427A的专利文献中公开了一种网络传输量计算方法,包含四个步骤,第一步,通过调整发送速率来调整丢包率,第二步,构建网络带宽的估算模型,第三步,对传输的帧率进行调整,对网络传输的数据包进行采样,第四步,在传输的过程中,进行纠错。
上层应用可以调整相关业务,将其实现为幂等业务,以避免该类问题。但该调整在某些情况下可能需要较大的工作量,或者在业务逻辑上难以实现。因此,需要提出一种技术方案以改善上述技术问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种实现一次特性的消息传输方法。
根据本发明提供的一种实现一次特性的消息传输方法,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:
步骤S1:上层传入待发送的消息;
步骤S2:读取版本号;
步骤S3:存储待发送的消息内容;
步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器。
优选地,所述步骤S2包括如下步骤:
步骤S2.1:若版本号为奇数,则直接跳转至步骤S3;
步骤S2.2:若版本号为偶数,则将版本号递增1并保存版本号。
优选地,所述打包指使用方法使版本号与消息内容进行绑定。
优选地,所述消息发送消息阶段中的消息接收端包括如下步骤:
步骤1:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起发送消息阶段;
步骤2:如果在超时计数器超时前接收消息,则检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑。
优选地,所述步骤2包括如下步骤:
步骤2.1:若版本号与消息接收端的版本号之差小于0,说明上次只在阶段二出错,忽略本消息并返回成功;
步骤2.2:若消息的版本号比接收端的版本号大1,则说明发送端发送了一个新的消息,此时接收端根据消息执行相关业务,将接收端的版本号递增1并保存,保存接收到的消息内容与该业务的执行结果,并向消息发送端返回成功;
步骤2.3:若消息的版本号与接收端的版本号相等,说明发送端重复了一次发送消息步骤;检查消息内容与接收端之前保存的消息内容是否一致,若不一致,说明两端状态产生了预期外的问题,报错并结束;否则,则向消息发送端返回成功。
优选地,所述接收回复阶段包括消息发送端和消息接收端,所述接收回复阶段的消息发送端包括如下步骤:
步骤A:读取版本号,若版本号为偶数,说明未执行过发送消息阶段,报错并退出;
步骤B:将该版本号发送至消息接收端,设置超时计数器。
优选地,所述消息发送端还包括如下步骤:
步骤一:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起接收回复阶段;
步骤二:如果在超时计数器超时前接收到消息接收端的回复,则比较消息接收端的内容的版本号与自身的版本号;
步骤三:若回复中的版本号比消息接收端的版本号大1,说明该回复内容对应了之前的发送消息请求,回复内容中的业务相关内容即为一次完整消息传输的回复;
步骤四:其他情况下,报错;
步骤五:将消息发送端的版本号递增1并保存;
步骤六:向上层返回接受到的数据中的业务内容。
优选地,所述接收回复阶段的消息接收端包括如下步骤:
步骤a:接收消息,并检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;
步骤b:若版本号与消息接收端的版本号相等,则说明该条接收回复请求对应了上一次发送消息请求;此时将消息接收端的版本号加1并保存,并将增加后的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
步骤c:若消息的版本号比接收端的版本号小1,则说明消息发送端曾经发出过接收回复请求,但未正确地处理消息接收端对该请求的返回内容,重新发送了接受回复的请求;此时,将当前消息接收端的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
步骤d:其他情况,报错并返回。
优选地,所述方法向用户提供恰好一次的消息传输抽象;恰好一次是一个消息服务的特性,表示***保证每条消息有且仅会发送并生效一次。
优选地,所述方法在消息的发送端和接收端同时维护一个版本号。与现有技术相比,本发明具有如下的有益效果:
本发明可以在协议层保证“恰好一次”特性,因此在构建在本方法之上的应用或业务逻辑不需要考虑信息传输过程中可能出现的丢包或者重复发送问题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的流程原理图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明提供了一种实现一次特性的消息传输方法,可以向方案使用者提供恰好一次的消息传输抽象。恰好一次Exactly once是一个消息服务的特性,其表示***保证每条消息有且仅会发送并生效一次。
为实现该特性,方案在消息的发送端和接收端同时维护一个版本号。该方案要求版本号的更改拥有持久性且不可回退,即在修改版本号后,读出的版本号将一直为写入的值,直到下一次修改版本号。初始状态下,消息的发送端与消息的接收端的版本号均为0。
本发明将一次消息发送划分为两个阶段:分别为发送消息和接收回复。
在发送消息阶段,消息发送端执行如下步骤:
步骤S1:上层传入待发送的消息。消息发送实体收到传入的消息后,消息传输便开始了。
步骤S2:读取版本号,版本号保存在存储器中,直接读取;步骤S2.1:若版本号为奇数,则直接跳转至步骤S3;步骤S2.2:若版本号为偶数,则将版本号递增1并保存,本实施例中存储器可以为flash。
步骤S3:存储待发送的消息内容,覆盖存储到存储设备中;步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器,在设备端的某个实体中设置,本实施例中存储设备可以为flash;实体可以为进程或者线程。
打包通常指使用一些方法保证版本号与消息内容的绑定,如使用非对称秘钥算法对整个数据包进行签名,但具体的打包方式不在本方案的定义范围内。
消息接收端执行如下步骤:
步骤1:如果在超时计数器超时后还没有接收到消息接收端的回复,那么再次发起发送消息阶段。
步骤2:如果在超时计数器超时前接收消息,那么检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;步骤2.1:若版本号与消息接收端的版本号之差小于0,说明上次只在阶段二出错,忽略本消息并返回成功,使设备端继续阶段二;步骤2.2:若消息的版本号比接收端的版本号大1,则说明发送端发送了一个新的消息,此时接收端可以根据消息执行相关业务,将接收端的版本号递增1,然后保存接收到的消息内容与该业务的执行结果,并向消息发送端返回成功;步骤2.3:若消息的版本号与接收端的版本号相等,说明发送端重复了一次发送消息步骤。此时,检查消息内容与接收端之前保存的消息内容是否一致,若不一致,说明两端状态产生了预期外的问题,报错并结束;否则,则向消息发送端返回成功。
在接收回复阶段,消息发送端执行如下步骤:
步骤A:读取版本号,若版本号为偶数,说明未执行过发送消息阶段,报错并退出;步骤B:将该版本号发送至消息接收端,然后设置一个超时计数器。
消息接收端执行如下步骤:
步骤a:接收消息,并检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;步骤b:若版本号与消息接收端的版本号相等,则说明该条接收回复请求对应了上一次发送消息请求。此时将消息接收端的版本号加1并保存,并将增加后的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;步骤c:若消息的版本号比接收端的版本号小1,则说明消息发送端曾经发出过接收回复请求,但未正确地处理消息接收端对该请求的返回内容,因此重新发送了接受回复的请求。此时,将当前消息接收端的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;步骤d:其他情况,报错并返回。
消息发送端执行如下步骤:
步骤一:如果在超时计数器超时后还没有接收到消息接收端的回复,那么再次发起接收回复阶段;步骤二:如果在超时计数器超时前接收到消息接收端的回复,那么比较消息接收端的内容的版本号与自身的版本号;步骤三:若回复中的版本号比消息接收端的版本号大1,说明该回复内容对应了之前的发送消息请求,那么该回复内容中的业务相关内容即为一次完整消息传输的回复;步骤四:其他情况下,报错;步骤五:将消息发送端的版本号递增1;步骤六:向上层返回接受到的数据中的业务内容。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的***及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种实现一次特性的消息传输方法,其特征在于,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:
步骤S1:上层传入待发送的消息;
步骤S2:读取版本号;
步骤S3:存储待发送的消息内容;
步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器;
所述步骤S2包括如下步骤:
步骤S2.1:若版本号为奇数,则直接跳转至步骤S3;
步骤S2.2:若版本号为偶数,则将版本号递增1并保存版本号;
所述消息发送消息阶段中的消息接收发送端包括如下步骤:
步骤1:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起发送消息阶段;
所述消息发送消息阶段中的消息接收端包括如下步骤:
步骤2:如果在超时计数器超时前接收消息,则检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;
所述步骤2包括如下步骤:
步骤2.1:若版本号与消息接收端的版本号之差小于0,说明上次只在阶段二出错,忽略本消息并返回成功;
步骤2.2:若消息的版本号比接收端的版本号大1,则说明发送端发送了一个新的消息,此时接收端根据消息执行相关业务,将接收端的版本号递增1并保存,保存接收到的消息内容与该业务的执行结果,并向消息发送端返回成功;
步骤2.3:若消息的版本号与接收端的版本号相等,说明发送端重复了一次发送消息步骤;检查消息内容与接收端之前保存的消息内容是否一致,若不一致,说明两端状态产生了预期外的问题,报错并结束;否则,则向消息发送端返回成功;
所述接收回复阶段包括消息发送端和消息接收端,所述接收回复阶段的消息发送端包括如下步骤:
步骤A:读取版本号,若版本号为偶数,说明未执行过发送消息阶段,报错并退出;
步骤B:将该版本号发送至消息接收端,设置超时计数器;
所述消息发送端还包括如下步骤:
步骤一:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起接收回复阶段;
步骤二:如果在超时计数器超时前接收到消息接收端的回复,则比较消息接收端的内容的版本号与自身的版本号;
步骤三:若回复中的版本号比消息接收端的版本号大1,说明该回复内容对应了之前的发送消息请求,回复内容中的业务相关内容即为一次完整消息传输的回复;
步骤四:其他情况下,报错;
步骤五:将消息发送端的版本号递增1并保存;
步骤六:向上层返回接受到的数据中的业务内容;
所述接收回复阶段的消息接收端包括如下步骤:
步骤a:接收消息,并检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;
步骤b:若版本号与消息接收端的版本号相等,则说明该条接收回复请求对应了上一次发送消息请求;此时将消息接收端的版本号加1并保存,并将增加后的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
步骤c:若消息的版本号比接收端的版本号小1,则说明消息发送端曾经发出过接收回复请求,但未正确地处理消息接收端对该请求的返回内容,重新发送了接受回复的请求;此时,将当前消息接收端的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
步骤d:其他情况,报错并返回。
2.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述打包指使用方法使版本号与消息内容进行绑定。
3.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述方法向用户提供恰好一次的消息传输抽象;恰好一次是一个消息服务的特性,表示***保证每条消息有且仅会发送并生效一次。
4.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述方法在消息的发送端和接收端同时维护一个版本号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110981958.3A CN113810384B (zh) | 2021-08-25 | 2021-08-25 | 实现一次特性的消息传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110981958.3A CN113810384B (zh) | 2021-08-25 | 2021-08-25 | 实现一次特性的消息传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113810384A CN113810384A (zh) | 2021-12-17 |
CN113810384B true CN113810384B (zh) | 2023-06-20 |
Family
ID=78894068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110981958.3A Active CN113810384B (zh) | 2021-08-25 | 2021-08-25 | 实现一次特性的消息传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113810384B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615383B1 (en) * | 1998-05-29 | 2003-09-02 | Sun Microsystems, Inc. | System and method for message transmission between network nodes connected by parallel links |
CN101645871A (zh) * | 2008-08-04 | 2010-02-10 | 大唐移动通信设备有限公司 | 一种gtp消息的传输方法、***及装置 |
CN103378936A (zh) * | 2012-04-28 | 2013-10-30 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN103647747A (zh) * | 2013-11-08 | 2014-03-19 | 陈明 | 一种多智能终端设备与服务器数据通信*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000042510A1 (fr) * | 1999-01-13 | 2000-07-20 | Fujitsu Limited | Procede et appareil de commande exclusive d'informations electroniques et supports d'enregistrement de programme de commande exclusive |
CN1956421A (zh) * | 2005-10-26 | 2007-05-02 | 北京航空航天大学 | Web服务消息可靠传递方法 |
CN102571635A (zh) * | 2012-01-18 | 2012-07-11 | 浪潮(北京)电子信息产业有限公司 | 一种消息传输方法及设备 |
CN110008037A (zh) * | 2019-02-28 | 2019-07-12 | 北京达佳互联信息技术有限公司 | 消息处理方法、装置及存储介质 |
CN112448898A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于序列号机制的消息保序方法 |
-
2021
- 2021-08-25 CN CN202110981958.3A patent/CN113810384B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615383B1 (en) * | 1998-05-29 | 2003-09-02 | Sun Microsystems, Inc. | System and method for message transmission between network nodes connected by parallel links |
CN101645871A (zh) * | 2008-08-04 | 2010-02-10 | 大唐移动通信设备有限公司 | 一种gtp消息的传输方法、***及装置 |
CN103378936A (zh) * | 2012-04-28 | 2013-10-30 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN103647747A (zh) * | 2013-11-08 | 2014-03-19 | 陈明 | 一种多智能终端设备与服务器数据通信*** |
Also Published As
Publication number | Publication date |
---|---|
CN113810384A (zh) | 2021-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7864078B2 (en) | Method and device for decoding a signal | |
US7707335B2 (en) | Device and method for managing a retransmit operation | |
Chkliaev et al. | Verification and improvement of the sliding window protocol | |
US20070018708A1 (en) | Method and apparatus for determining optimal delay time and computer-readable storage medium storing optimal delay time determining program | |
US20090059804A1 (en) | Methods and apparatus for generating simulated network traffic | |
WO2019090745A1 (zh) | Harq编号确定方法、网络设备、终端和计算机存储介质 | |
CN101645766A (zh) | 实现数据包重发的方法、装置及*** | |
CN109067513A (zh) | 一种半双工通信方法、装置及*** | |
US20190109796A1 (en) | Method and device for dynamically managing the message retransmission delay on an interconnection network | |
CN113810384B (zh) | 实现一次特性的消息传输方法 | |
CN111404872A (zh) | 一种报文处理方法、装置及*** | |
CN113645008B (zh) | 一种基于链表的报文协议超时重发方法及*** | |
CN113794539B (zh) | 一种双向通信控制方法和装置 | |
Wang et al. | Performance modelling and analysis of unreliable links with retransmissions using network calculus | |
JP6295609B2 (ja) | 受信装置、通信システム、およびプログラム | |
CN102843224B (zh) | Harq的合并方法及装置 | |
Loruenser et al. | Towards a Performance Model for Byzantine Fault Tolerant (Storage) Services | |
CN116909624B (zh) | 位图数据处理方法、随机存储器、电子设备和存储介质 | |
CN116737281B (zh) | 文件上注的方法、装置及存储介质 | |
CN114237973A (zh) | 一种串行通信总线数据校验方法和*** | |
Zhigulin et al. | Detecting faults in TFTP implementations using Finite State Machines with timeouts | |
WO2010103607A1 (ja) | データ転送装置及びデータ転送装置の制御方法 | |
Hercog et al. | The Importance of Sliding Window Protocol Generalisation in a Communication Protocols Course | |
CN111953445B (zh) | Harq-ack反馈模式的设置方法、装置和用户设备 | |
Rodriguez-Navas et al. | Harmonizing dependability and real time in CAN networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |