实现一次特性的消息传输方法技术

技术编号:31484492 阅读:15 留言:0更新日期:2021-12-18 12:19
本发明专利技术提供了一种实现一次特性的消息传输方法,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:步骤S1:上层传入待发送的消息;步骤S2:读取版本号;步骤S3:存储待发送的消息内容;步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器。本发明专利技术可以在协议层保证“恰好一次”特性,因此在构建在本方法之上的应用或业务逻辑不需要考虑信息传输过程中可能出现的丢包或者重复发送问题。问题。问题。

【技术实现步骤摘要】
实现一次特性的消息传输方法


[0001]本专利技术涉及网络传输的
,具体地,涉及实现一次特性的消息传输方法。

技术介绍

[0002]由于传输介质、传输过程中软硬件问题,网络传输的过程通常被认为是不确定的。为了应对这类问题带来的影响,硬件及软件的不同层级的协议都需要采用多种方式处理收到的数据包或数据流,如传输控制协议(Transmission Control Protocol,简称TCP协议)就采用了类似滑动窗口自动重传等技术处理以处理网络传输中可能出现的丢包以及乱序的现象。
[0003]但在协议采取了相关措施后,应用层仍然无法假设自己运行在一个理想的网络环境中,在极端情况下,因为应用层或者协议层的重发机制,同一个数据包可以被远端收到多次,而这可能引发一些业务逻辑中的错误,比如一个扣费的数据包被重发多次后造成的重复扣费。
[0004]在公开号为CN106789427A的专利文献中公开了一种网络传输量计算方法,包含四个步骤,第一步,通过调整发送速率来调整丢包率,第二步,构建网络带宽的估算模型,第三步,对传输的帧率进行调整,对网络传输的数据包进行采样,第四步,在传输的过程中,进行纠错。
[0005]上层应用可以调整相关业务,将其实现为幂等业务,以避免该类问题。但该调整在某些情况下可能需要较大的工作量,或者在业务逻辑上难以实现。因此,需要提出一种技术方案以改善上述技术问题。

技术实现思路

[0006]针对现有技术中的缺陷,本专利技术的目的是提供一种实现一次特性的消息传输方法。r/>[0007]根据本专利技术提供的一种实现一次特性的消息传输方法,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:
[0008]步骤S1:上层传入待发送的消息;
[0009]步骤S2:读取版本号;
[0010]步骤S3:存储待发送的消息内容;
[0011]步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器。
[0012]优选地,所述步骤S2包括如下步骤:
[0013]步骤S2.1:若版本号为奇数,则直接跳转至步骤S3;
[0014]步骤S2.2:若版本号为偶数,则将版本号递增1并保存版本号。
[0015]优选地,所述打包指使用方法使版本号与消息内容进行绑定。
[0016]优选地,所述消息发送消息阶段中的消息接收端包括如下步骤:
[0017]步骤1:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起发送消息阶段;
[0018]步骤2:如果在超时计数器超时前接收消息,则检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑。
[0019]优选地,所述步骤2包括如下步骤:
[0020]步骤2.1:若版本号与消息接收端的版本号之差小于0,说明上次只在阶段二出错,忽略本消息并返回成功;
[0021]步骤2.2:若消息的版本号比接收端的版本号大1,则说明发送端发送了一个新的消息,此时接收端根据消息执行相关业务,将接收端的版本号递增1并保存,保存接收到的消息内容与该业务的执行结果,并向消息发送端返回成功;
[0022]步骤2.3:若消息的版本号与接收端的版本号相等,说明发送端重复了一次发送消息步骤;检查消息内容与接收端之前保存的消息内容是否一致,若不一致,说明两端状态产生了预期外的问题,报错并结束;否则,则向消息发送端返回成功。
[0023]优选地,所述接收回复阶段包括消息发送端和消息接收端,所述接收回复阶段的消息发送端包括如下步骤:
[0024]步骤A:读取版本号,若版本号为偶数,说明未执行过发送消息阶段,报错并退出;
[0025]步骤B:将该版本号发送至消息接收端,设置超时计数器。
[0026]优选地,所述消息发送端还包括如下步骤:
[0027]步骤一:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起接收回复阶段;
[0028]步骤二:如果在超时计数器超时前接收到消息接收端的回复,则比较消息接收端的内容的版本号与自身的版本号;
[0029]步骤三:若回复中的版本号比消息接收端的版本号大1,说明该回复内容对应了之前的发送消息请求,回复内容中的业务相关内容即为一次完整消息传输的回复;
[0030]步骤四:其他情况下,报错;
[0031]步骤五:将消息发送端的版本号递增1并保存;
[0032]步骤六:向上层返回接受到的数据中的业务内容。
[0033]优选地,所述接收回复阶段的消息接收端包括如下步骤:
[0034]步骤a:接收消息,并检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑;
[0035]步骤b:若版本号与消息接收端的版本号相等,则说明该条接收回复请求对应了上一次发送消息请求;此时将消息接收端的版本号加1并保存,并将增加后的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
[0036]步骤c:若消息的版本号比接收端的版本号小1,则说明消息发送端曾经发出过接收回复请求,但未正确地处理消息接收端对该请求的返回内容,重新发送了接受回复的请求;此时,将当前消息接收端的版本号与发送消息阶段中保存的业务执行输出的结果打包发回至消息发送端;
[0037]步骤d:其他情况,报错并返回。
[0038]优选地,所述方法向用户提供恰好一次的消息传输抽象;恰好一次是一个消息服务的特性,表示系统保证每条消息有且仅会发送并生效一次。
[0039]优选地,所述方法在消息的发送端和接收端同时维护一个版本号。与现有技术相比,本专利技术具有如下的有益效果:
[0040]本专利技术可以在协议层保证“恰好一次”特性,因此在构建在本方法之上的应用或业务逻辑不需要考虑信息传输过程中可能出现的丢包或者重复发送问题。
附图说明
[0041]通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:
[0042]图1为本专利技术的流程原理图。
具体实施方式
[0043]下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。
[0044]本专利技术提供了一种实现一次特性的消息传输方法,可以向方案使用者提供恰好一次的消息传输抽象。恰好一次Exactly once是一个消息服务的特性,其表示系统保证每条消息有且仅会发送并生效一次。
[0045]为实现该特性,方案在消息的发送端和接收端同时维护一个版本号。该方案要求版本号的更改拥有持久性且不可回退,即在修改版本号后,读出的版本号将一直为写入的值,直到下本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种实现一次特性的消息传输方法,其特征在于,所述方法包括发送消息和接收回复两个阶段,所述发送消息阶段包括消息发送端和消息接收端,所述发送消息阶段中的消息发送端包括如下步骤:步骤S1:上层传入待发送的消息;步骤S2:读取版本号;步骤S3:存储待发送的消息内容;步骤S4:将存储的消息内容与版本号打包一起发送至消息接收端;并设置超时计数器。2.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述步骤S2包括如下步骤:步骤S2.1:若版本号为奇数,则直接跳转至步骤S3;步骤S2.2:若版本号为偶数,则将版本号递增1并保存版本号。3.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述打包指使用方法使版本号与消息内容进行绑定。4.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述消息发送消息阶段中的消息接收端包括如下步骤:步骤1:如果在超时计数器超时后还没有接收到消息接收端的回复,则再次发起发送消息阶段;步骤2:如果在超时计数器超时前接收消息,则检查消息中的版本号,根据消息中版本号的值与接收端版本号的值进行对应的逻辑。5.根据权利要求4所述的实现一次特性的消息传输方法,其特征在于,所述步骤2包括如下步骤:步骤2.1:若版本号与消息接收端的版本号之差小于0,说明上次只在阶段二出错,忽略本消息并返回成功;步骤2.2:若消息的版本号比接收端的版本号大1,则说明发送端发送了一个新的消息,此时接收端根据消息执行相关业务,将接收端的版本号递增1并保存,保存接收到的消息内容与该业务的执行结果,并向消息发送端返回成功;步骤2.3:若消息的版本号与接收端的版本号相等,说明发送端重复了一次发送消息步骤;检查消息内容与接收端之前保存的消息内容是否一致,若不一致,说明两端状态产生了预期外的问题,报错并结束;否则,则向消息发送端返回成功。6.根据权利要求1所述的实现一次特性的消息传输方法,其特征在于,所述接收回复阶段包括消息发送端和消息接收端,所述接收回复阶...

【专利技术属性】
技术研发人员:汪海梁凉李子男利文浩
申请(专利权)人:上海瓶钵信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1