CN110008037A - 消息处理方法、装置及存储介质 - Google Patents

消息处理方法、装置及存储介质 Download PDF

Info

Publication number
CN110008037A
CN110008037A CN201910149924.0A CN201910149924A CN110008037A CN 110008037 A CN110008037 A CN 110008037A CN 201910149924 A CN201910149924 A CN 201910149924A CN 110008037 A CN110008037 A CN 110008037A
Authority
CN
China
Prior art keywords
request message
message
sequence number
missing
request
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.)
Pending
Application number
CN201910149924.0A
Other languages
English (en)
Inventor
李明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201910149924.0A priority Critical patent/CN110008037A/zh
Publication of CN110008037A publication Critical patent/CN110008037A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请是关于一种消息处理方法、装置及存储介质,包括:接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。避免在消息发送端和消息接收端之间建立消息处理环节来保证第一请求消息的时序性,降低了调用算法的复杂度,进而在保证消息时序性的同时提高了消息处理的效率。

Description

消息处理方法、装置及存储介质
技术领域
本申请属于计算机软件应用领域,尤其是一种消息处理方法、装置及存储介质。
背景技术
在分布式***中,大多服务器节点为了平行扩展以及容灾的需要,一般设计为无状态服务。每个节点平等无差别的对外提供服务,对同一个用户发送的消息,可能会被多个服务器节点并行处理,因而无法保证消息处理的时序性,产生乱序问题。在某些情况下,乱序可能导致一些严重的错误,例如,客户端对同一数据的***、删除请求,如果产生乱序,会导致逻辑上的错误发生,影响数据的正确性。
相关技术中,对于同一个用户发送的消息,一般需要在发送端和接收端之间的多个无状态服务器之间进行多次跳转。为了保证消息的时序性,一种方法是消息在多个无状态服务器之间的每次跳转使用HASH算法请求路由。另一种方法是将消息发送到消息队列进行处理。当消息发送到消息队列时,根据用户特性进行分片(partition)操作,保证同一用户发送的消息发送到同一分片区域,由消息队列来保证消息的时序性。两种方法都在发送端和接收端之间的多个无状态服务器设置消息处理环节,增加了调用算法的复杂度,还可能会导致状态服务器节点产生负载不均的现象。
一般,在无状态服务器内部,多线程或多进程之间通过竞争来进行消息处理,这也可能导致同一个用户发送的消息被多个线程或进程处理,产生乱序问题。为了保证进程内部消息处理的时序性,需要引入消息队列或者对处理消息的线程进行HASH路由处理,这同样增加了无状态服务器节点内部调用算法的复杂度,还可能会导致状态服务器节点内部产生负载不均的现象。
发明内容
为克服相关技术中存在的为保证消息时序性而产生的调用算法的复杂度和负载不均的问题,本申请公开一种消息处理方法、装置及存储介质,在消息接收端通过判断第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增来保证接收的第一请求消息的时序性。避免在消息发送端和消息接收端之间建立消息处理环节来保证第一请求消息的时序性,降低了调用算法的复杂度,进而在保证消息时序性的同时提高了消息处理的效率。
根据本申请实施例的第一方面,提供一种消息处理方法,所述消息处理方法应用于消息接收端,包括:
接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;
判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;
如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
可选地,所述的消息处理方法,还包括:
如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增,则将当前的所述第一请求消息存入缓存队列以等待重新接收缺失的所述第一请求消息。
可选地,所述的消息处理方法,还包括:在等待所述缺失的所述第一请求消息的预设时间内,接收后续的多个所述第一请求消息,并且将后续接收的所述多个所述第一请求消息依次序存入所述缓存队列。
可选地,所述的消息处理方法,还包括:在所述预设时间内,如果接收到所述缺失的所述第一请求消息,则按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
在超出所述预设时间后,如果还没有接收到所述缺失的所述第一请求消息,则根据相关策略对所述缺失的所述第一请求消息进行处理并且按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息。
可选地,所述相关策略包括:丢弃所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
删除所述缓存队列中的所述缺失的所述第一请求消息。
可选地,所述相关策略包括:保留所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
发送所述缺失的所述第一请求消息的重发消息给消息发送端;
重新接收所述缺失的所述第一请求消息。
可选地,所述判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增,包括:
在所述消息接收端,对所述上一个所述第一请求消息的所述序列号进行加一处理,得到参考序列号;
比较当前的所述第一请求消息的所述序列号和所述参考序列号是否相同;
如果当前的所述第一请求消息的所述序列号和所述参考序列号相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增;以及
如果当前的所述第一请求消息的所述序列号和所述参考序列号不相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增。
可选地,所述第一请求消息通过多个无状态服务器在所述消息发送端和所述消息接收端之间转发。
可选地,所述消息接收端,包括:有状态服务器和客户端。
可选地,所述消息发送端发送的所述第一请求消息的所述序列号是单调递增的。
根据本申请实施例的第二方面,提供一种消息处理装置,所述消息处理装置应用于消息接收端,包括:
第一接收单元,被配置为接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;
判断单元,被配置为判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;
第一响应单元,被配置为如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
可选地,所述的消息处理装置,还包括:第二响应单元,被配置为如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增,则将当前的所述第一请求消息存入缓存队列以等待重新接收缺失的所述第一请求消息。
可选地,所述的消息处理装置,还包括:第二接收单元,被配置为在等待所述缺失的所述第一请求消息的预设时间内,接收后续的多个所述第一请求消息,并且将后续接收的所述多个所述第一请求消息依次序存入所述缓存队列。
可选地,所述的消息处理装置,还包括:第三响应单元,被配置为在所述预设时间内,如果接收到所述缺失的所述第一请求消息,则按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
在超出所述预设时间后,如果还没有接收到所述缺失的所述第一请求消息,则根据相关策略对所述缺失的所述第一请求消息进行处理并且按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息。
可选地,所述相关策略包括:丢弃所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
删除所述缓存队列中的所述缺失的所述第一请求消息。
可选地,所述相关策略包括:保留所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
发送所述缺失的所述第一请求消息的重发消息给消息发送端;
重新接收所述缺失的所述第一请求消息。
可选地,所述判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增,包括:
在所述消息接收端,对所述上一个所述第一请求消息的所述序列号进行加一处理,得到参考序列号;
比较当前的所述第一请求消息的所述序列号和所述参考序列号是否相同;
如果当前的所述第一请求消息的所述序列号和所述参考序列号相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增;以及
如果当前的所述第一请求消息的所述序列号和所述参考序列号不相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增。
可选地,所述第一请求消息通过多个无状态服务器在所述消息发送端和所述消息接收端之间转发。
可选地,所述消息接收端,包括:有状态服务器和客户端。
可选地,所述消息发送端发送的所述第一请求消息的所述序列号是单调递增的。
根据本申请实施例的第三方面,提供一种消息处理控制装置,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任意一项所述的消息处理方法。
根据本申请实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种消息处理方法,所述方法包括上述任意一项所述的消息处理方法。
根据本申请实施例的第五方面,提供一种计算机程序产品,包括计算机程序产品,所述计算机程序包括程序指令,当所述程序指令被移动终端执行时,使所述移动终端执行上述消息处理方法的步骤。
本申请的实施例提供的技术方案可以包括以下有益效果:
(1)接收第一请求消息。第一请求消息中包括第一请求消息的序列号。该序列号是单调递增序列号。判断当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增。具体地,在消息接收端,对接收的上一个第一请求消息的序列号进行加一处理,得到参考序列号。比较接收的当前的第一请求消息的序列号和参考序列号是否相同。如果当前的第一请求消息的序列号和参考序列号相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则响应当前的第一请求消息。在消息接收端通过判断第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增来保证接收的第一请求消息的时序性。避免在消息发送端和消息接收端之间建立消息处理环节来保证第一请求消息的时序性,降低了调用算法的复杂度,进而在保证消息时序性的同时提高了消息处理的效率。
(2)在数据服务器或终端,通过对比第一请求消息对应的序列号的连续性的方法,来判断第一请求消息是否存在乱序。若第一请求消息不连续且递增,通过将缺失的第一请求消息存入缓存队列,来等待乱序的第一请求消息并对其做出响应。在保证时序性的基础上,不会对***的可用性造成负面影响,同时避免中间层级的业务服务器之间的负载不均衡,提高了消息处理的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种消息处理方法的流程图;
图2是根据一示例性实施例示出的一种消息处理方法的流程图;
图3是根据一示例性实施例示出的消息处理***的结构示意图;
图4是根据一示例性实施例示出的消息处理装置的框图;
图5是根据一示例性实施例示出的消息处理装置的框图;
图6是根据一示例性实施例示出的一种执行消息处理方法的装置的框图;
图7是根据一示例性实施例示出的一种执行消息处理方法的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种消息处理方法的流程图。消息处理方法应用于消息接收端。消息接收端,包括:有状态服务器和客户端。即,消息接收端可以是有状态服务器也可以是客户端。具体包括以下步骤:
在步骤S101中,接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号。
在该步骤中,接收第一请求消息。第一请求消息中包括第一请求消息的序列号。该序列号是单调递增序列号。
在步骤S102中,判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增。
在该步骤中,判断第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增。具体地,在消息接收端,对接收的上一个第一请求消息的序列号进行加一处理,得到参考序列号。比较接收的当前的第一请求消息的序列号和参考序列号是否相同。如果当前的第一请求消息的序列号和参考序列号相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。
在步骤S103中,如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
在该步骤中,如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则响应当前的第一请求消息。
根据本申请的实施例,接收第一请求消息。第一请求消息中包括第一请求消息的序列号。该序列号是单调递增序列号。判断当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增。具体地,在消息接收端,对接收的上一个第一请求消息的序列号进行加一处理,得到参考序列号。比较接收的当前的第一请求消息的序列号和参考序列号是否相同。如果当前的第一请求消息的序列号和参考序列号相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则响应当前的第一请求消息。在消息接收端通过判断第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增来保证接收的第一请求消息的时序性。避免在消息发送端和消息接收端之间建立消息处理环节来保证第一请求消息的时序性,降低了调用算法的复杂度,进而在保证消息时序性的同时提高了消息处理的效率。
图2是根据一示例性实施例示出的一种消息处理方法的流程图。下面以该方法应用于一种消息处理***来举例说明。其中,该消息处理***包括终端和多个服务器。终端上可安装并运行各种应用,并且可以通过互联网与服务器通信。
具体地,请参阅图3,图3是根据一示例性实施例示出的消息处理***的结构示意图,消息处理***包括终端301、接入服务器302、多个业务服务器303和数据服务器304。终端301发出的第一请求消息,经过TCP协议连接到接入服务器302(接入服务器302负责连接的维护,为有状态服务器),由于TCP协议连接的性质,可保证第一请求消息的时序性。在终端301发出第一请求消息时,在第一请求消息中包括第一请求消息的序列号seq,该序列号seq为单调递增。
接入服务器302将第一请求消息发送到任一业务服务器303进行处理,此时不保证第一请求消息的时序性。经过多个业务服务器303的转发和处理后,将第一请求消息发送给数据服务器304。在数据服务器304保证第一请求消息时序性的同时对第一请求消息做出响应。
图2所示的消息处理方法的实施例描述保证消息时序性的同时响应同一终端发送的请求消息的步骤,其应用于数据服务器304。数据服务器304为有状态服务器。该消息处理方法,包括以下步骤:
在步骤S201中,接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号。
在该步骤中,数据服务器304接收第一请求消息。同时,第一请求消息中包括第一请求消息的序列号seq。
在步骤S202中,判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增。如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则执行步骤S203。如果当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不连续且递增,则执行步骤S204。
在该步骤中,数据服务器304判断当前的第一请求消息的序列号seq与接收的上一个第一请求消息的序列号seq0是否连续且递增。具体地,具体地,在数据服务器304,对接收的上一个第一请求消息的序列号seq0进行加一处理,得到参考序列号seq1。即,seq1=seq0+1。比较接收的当前的第一请求消息的序列号seq和参考序列号seq1是否相同。如果当前的第一请求消息的序列号和参考序列号相同(seq=seq1),则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同(seq≠seq1),则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。
如果第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则执行步骤S203。如果当前的序列号与接收的上一个第一请求消息的序列号不连续且递增,则执行步骤S204。
在步骤S203中,响应当前的所述第一请求消息。
在该步骤中,数据服务器304响应当前的第一请求消息。
在步骤S204中,将当前的所述第一请求消息存入缓存队列以等待重新接收缺失的所述第一请求消息。并且在等待所述缺失的所述第一请求消息的预设时间内,接收后续的多个所述第一请求消息。
在该步骤中,数据服务器304将当前的第一请求消息存入缓存队列以等待重新接收缺失的第一请求消息。并且在等待缺失的第一请求消息的预设时间内,接收后续的多个第一请求消息。
在步骤S205中,判断是否接收到所述缺失的所述第一请求消息。在所述预设时间内,如果接收到所述缺失的所述第一请求消息,则执行步骤S206。在所述预设时间内,如果没有接收到所述缺失的所述第一请求消息,则执行步骤S207。
在该步骤中,数据服务器304判断是否接收到缺失的第一请求消息。在预设时间内,如果接收到缺失的第一请求消息,则执行步骤S206。在预设时间内,如果没有接收到缺失的所述第一请求消息,则执行步骤S207。
在步骤S206中,按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息。
在该步骤中,数据服务器304按照序列号的次序,依次响应当前缓存队列中的多个第一请求消息。
在步骤S207中,将后续接收的所述多个所述第一请求消息依次序存入所述缓存队列。
在该步骤中,数据服务器304将后续接收的多个第一请求消息依次序存入缓存队列。
在步骤S208中,判断等待所述缺失的所述第一请求消息的预设时间是否超时。如果等待所述缺失的所述第一请求消息的预设时间没有超时,则执行步骤S205。如果等待所述缺失的所述第一请求消息的预设时间超时,则执行步骤S209。
在该步骤中,数据服务器304判断等待缺失的所述第一请求消息的预设时间是否超时。如果等待缺失的第一请求消息的预设时间没有超时,则执行步骤S205。如果等待缺失的第一请求消息的预设时间超时,则执行步骤S209。
在步骤S209中,根据相关策略对所述缺失的所述第一请求消息进行处理。然后,执行步骤S206。
在该步骤中,数据服务器304根据相关策略对缺失的第一请求消息进行处理。具体地,数据服务器304丢弃缺失的第一请求消息后,删除缓存队列中的缺失的第一请求消息。数据服务器304保留缺失的第一请求消息后,发送缺失的第一请求消息的重发消息给消息发送端,等待重新接收缺失的第一请求消息。然后,执行步骤S206。
根据本申请的实施例,数据服务器304接收第一请求消息。同时,第一请求消息中包括第一请求消息的序列号seq。数据服务器304判断当前的第一请求消息的序列号seq与接收的上一个第一请求消息的序列号seq0是否连续且递增。具体地,具体地,在数据服务器304,对接收的上一个第一请求消息的序列号seq0进行加一处理,得到参考序列号seq1。即,seq1=seq0+1。比较接收的当前的第一请求消息的序列号seq和参考序列号seq1是否相同。如果当前的第一请求消息的序列号和参考序列号相同(seq=seq1),则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同(seq≠seq1),则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。
如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则数据服务器304响应当前的第一请求消息。如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不连续且递增,则数据服务器304将当前的第一请求消息存入缓存队列以等待重新接收缺失的第一请求消息。并且在等待缺失的第一请求消息的预设时间内,接收后续的多个第一请求消息。
数据服务器304判断是否接收到缺失的第一请求消息。在预设时间内,如果接收到缺失的第一请求消息,则数据服务器304按照序列号的次序,依次响应当前缓存队列中的多个第一请求消息。在预设时间内,如果没有接收到缺失的所述第一请求消息,则数据服务器304将后续接收的多个第一请求消息依次序存入缓存队列。
数据服务器304判断等待缺失的第一请求消息的预设时间是否超时。如果等待缺失的第一请求消息的预设时间没有超时,则数据服务器304判断是否接收到缺失的第一请求消息。如果等待缺失的第一请求消息的预设时间超时,则数据服务器304根据相关策略对缺失的第一请求消息进行处理。具体地,数据服务器304丢弃缺失的第一请求消息后,删除缓存队列中的缺失的第一请求消息。数据服务器304保留缺失的第一请求消息后,发送缺失的第一请求消息的重发消息给消息发送端,等待重新接收缺失的第一请求消息。然后,按照所述序列号的次序,依次响应当前缓存队列中的多个第一请求消息。
在数据服务器或终端,通过对比第一请求消息的序列号的连续性的方法,来判断第一请求消息是否存在乱序。若第一请求消息不连续且递增,通过将缺失的第一请求消息存入缓存队列,来等待乱序的第一请求消息并对其做出响应。在保证时序性的基础上,不会对***的可用性造成负面影响,同时避免中间层级的业务服务器之间的负载不均衡,提高了消息处理的效率。
图4是根据一示例性实施例示出的消息处理装置的框图。如图4所示,所述消息处理装置应用于消息接收端,包括:有状态服务器和客户端。该装置40包括:第一接收单元401、判断单元402和第一响应单元403。
第一接收单元401,被配置为接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号。
该单元被配置为接收第一请求消息。第一请求消息中包括第一请求消息的序列号。该序列号是单调递增序列号。
判断单元402,被配置为判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增。
该单元被配置为判断第一请求消息的序列号与接收的上一个第一请求消息的序列号是否连续且递增。具体地,在消息接收端,对接收的上一个第一请求消息的序列号进行加一处理,得到参考序列号。比较接收的当前的第一请求消息的序列号和参考序列号是否相同。如果当前的第一请求消息的序列号和参考序列号相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增。如果当前的第一请求消息的序列号和参考序列号不相同,则当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增的。
第一响应单元403,被配置为如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
该单元被配置为如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号连续且递增,则响应当前的第一请求消息。
图5是根据一示例性实施例示出的消息处理装置的框图。如图5所示,所述消息处理装置应用于消息接收端,包括:有状态服务器和客户端。该装置50包括:第一接收单元501、判断单元502、第一响应单元503、第二响应单元504、第二接收单元505和第三响应单元506。
本实施例是比前述实施例更加完善的实施例。第一接收单元501、判断单元502、第一响应单元503分别与图4中的第一接收单元401、判断单元402和第一响应单元403一致,这里就不在赘述。
第二响应单元504,被配置为如果当前的第一请求消息的序列号与接收的上一个第一请求消息的序列号不是连续且递增,则将当前的第一请求消息存入缓存队列以等待重新接收缺失的第一请求消息。
第二接收单元505,被配置为在等待缺失的所述第一请求消息的预设时间内,接收后续的多个第一请求消息,并且将后续接收的多个所述第一请求消息依次序存入缓存队列。
第三响应单元506,被配置为在预设时间内,如果接收到缺失的第一请求消息,则按照序列号的次序,依次响应当前缓存队列中的多个第一请求消息。
在超出预设时间后,如果还没有接收到缺失的第一请求消息,则根据相关策略对缺失的第一请求消息进行处理并且按序列号的次序,依次响应当前缓存队列中的多个第一请求消息。相关策略包括:丢弃缺失的第一请求消息,则对所述缺失的第一请求消息进行处理,包括:删除缓存队列中的缺失的第一请求消息。相关策略还包括:保留缺失的第一请求消息,则对缺失的第一请求消息进行处理,包括:发送缺失的第一请求消息的重发消息给消息发送端,重新接收缺失的所述第一请求消息。
图6是根据一示例性实施例示出的一种用于执行消息处理方法的装置1200的框图。例如,装置1200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,装置1200可以包括以下一个或多个组件:处理组件1202,存储器1204,电力组件1206,多媒体组件1208,音频组件1210,输入/输出(I/O)的接口1212,传感器组件1214,以及通信组件1216。
处理组件1202通常控制装置1200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1202可以包括一个或多个处理器1220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理组件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
存储器1204被配置为存储各种类型的数据以支持在设备1200的操作。这些数据的示例包括用于在装置1200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1206为装置1200的各种组件提供电力。电源组件1206可以包括电源管理***,一个或多个电源,及其他与为装置1200生成、管理和分配电力相关联的组件。
多媒体组件1208包括在所述装置1200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当设备1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(MIC),当装置1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
I/O接口1212为处理组件1202和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1214包括一个或多个传感器,用于为装置1200提供各个方面的状态评估。例如,传感器组件1214可以检测到设备1200的打开/关闭状态,组件的相对定位,例如所述组件为装置1200的显示器和小键盘,传感器组件1214还可以检测装置1200或装置1200一个组件的位置改变,用户与装置1200接触的存在或不存在,装置1200方位或加速/减速和装置1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1216被配置为便于装置1200和其他设备之间有线或无线方式的通信。装置1200可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件1216经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1216还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1200可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1204,上述指令可由装置1200的处理器1220执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序产品,所述计算机程序包括程序指令,当所述程序指令被移动终端执行时,使所述移动终端执行上述消息处理方法的迭代步骤:接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
图7是根据一示例性实施例示出的一种用于执行消息处理方法的装置1300的框图。例如,装置1300可以被提供为一服务器。参照图7,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述信息列表显示方法方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作***,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种消息处理方法,其特征在于,所述消息处理方法应用于消息接收端,包括:
接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;
判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;
如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
2.根据权利要求1所述的消息处理方法,其特征在于,还包括:
如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增,则将当前的所述第一请求消息存入缓存队列以等待重新接收缺失的所述第一请求消息。
3.根据权利要求2所述的消息处理方法,其特征在于,还包括:在等待所述缺失的所述第一请求消息的预设时间内,接收后续的多个所述第一请求消息,并且将后续接收的所述多个所述第一请求消息依次序存入所述缓存队列。
4.根据权利要求3所述的消息处理方法,其特征在于,还包括:在所述预设时间内,如果接收到所述缺失的所述第一请求消息,则按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
在超出所述预设时间后,如果还没有接收到所述缺失的所述第一请求消息,则根据相关策略对所述缺失的所述第一请求消息进行处理并且按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
优选地,所述相关策略包括:丢弃所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
删除所述缓存队列中的所述缺失的所述第一请求消息;
优选地,所述相关策略包括:保留所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
发送所述缺失的所述第一请求消息的重发消息给消息发送端;
重新接收所述缺失的所述第一请求消息;
优选地,所述判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增,包括:
在所述消息接收端,对所述上一个所述第一请求消息的所述序列号进行加一处理,得到参考序列号;
比较当前的所述第一请求消息的所述序列号和所述参考序列号是否相同;
如果当前的所述第一请求消息的所述序列号和所述参考序列号相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增;以及
如果当前的所述第一请求消息的所述序列号和所述参考序列号不相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增;
优选地,所述第一请求消息通过多个无状态服务器在所述消息发送端和所述消息接收端之间转发;
优选地,所述消息接收端,包括:有状态服务器和客户端;
优选地,所述消息发送端发送的所述第一请求消息的所述序列号是单调递增的。
5.一种消息处理装置,其特征在于,所述消息处理装置应用于消息接收端,包括:
第一接收单元,被配置为接收第一请求消息,所述第一请求消息中包括所述第一请求消息的序列号;
判断单元,被配置为判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增;
第一响应单元,被配置为如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增,则响应所述第一请求消息。
6.根据权利要求5所述的消息处理装置,其特征在于,还包括:第二响应单元,被配置为如果所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增,则将当前的所述第一请求消息存入缓存队列以等待重新接收缺失的所述第一请求消息。
7.根据权利要求6所述的消息处理装置,其特征在于,还包括:第二接收单元,被配置为在等待所述缺失的所述第一请求消息的预设时间内,接收后续的多个所述第一请求消息,并且将后续接收的所述多个所述第一请求消息依次序存入所述缓存队列。
8.根据权利要求7所述的消息处理装置,其特征在于,还包括:第三响应单元,被配置为在所述预设时间内,如果接收到所述缺失的所述第一请求消息,则按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
在超出所述预设时间后,如果还没有接收到所述缺失的所述第一请求消息,则根据相关策略对所述缺失的所述第一请求消息进行处理并且按照所述序列号的次序,依次响应当前所述缓存队列中的多个所述第一请求消息;
优选地,所述相关策略包括:丢弃所述缺失的所述第一请求消息,则所述对所述缺失的所述第一请求消息进行处理,包括:
删除所述缓存队列中的所述缺失的所述第一请求消息;
优选地,所述相关策略包括:保留所述缺失的所述第一请求消息,则
所述对所述缺失的所述第一请求消息进行处理,包括:
发送所述缺失的所述第一请求消息的重发消息给消息发送端;
重新接收所述缺失的所述第一请求消息;
优选地,所述判断所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号是否连续且递增,包括:
在所述消息接收端,对所述上一个所述第一请求消息的所述序列号进行加一处理,得到参考序列号;
比较当前的所述第一请求消息的所述序列号和所述参考序列号是否相同;
如果当前的所述第一请求消息的所述序列号和所述参考序列号相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号连续且递增;以及
如果当前的所述第一请求消息的所述序列号和所述参考序列号不相同,则当前的所述第一请求消息的所述序列号与接收的上一个所述第一请求消息的所述序列号不是连续且递增;
优选地,所述第一请求消息通过多个无状态服务器在所述消息发送端和所述消息接收端之间转发;
优选地,所述消息接收端,包括:有状态服务器和客户端;
优选地,所述消息发送端发送的所述第一请求消息的所述序列号是单调递增的。
9.一种消息处理控制装置,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1-4任意一项所述的消息处理方法。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种消息处理方法,所述方法包括上述权利要求1-4任意一项所述的消息处理方法。
CN201910149924.0A 2019-02-28 2019-02-28 消息处理方法、装置及存储介质 Pending CN110008037A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910149924.0A CN110008037A (zh) 2019-02-28 2019-02-28 消息处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910149924.0A CN110008037A (zh) 2019-02-28 2019-02-28 消息处理方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN110008037A true CN110008037A (zh) 2019-07-12

Family

ID=67166077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910149924.0A Pending CN110008037A (zh) 2019-02-28 2019-02-28 消息处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110008037A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111181999A (zh) * 2020-01-09 2020-05-19 山东超越数控电子股份有限公司 稳定高效易用的通信方法
CN112235363A (zh) * 2020-09-28 2021-01-15 华云数据控股集团有限公司 数据处理方法、装置、电子设备、存储介质及***
CN113489786A (zh) * 2021-07-01 2021-10-08 北京玩蟹科技有限公司 一种长连接网络弱网重连方法、重发方法
CN113810384A (zh) * 2021-08-25 2021-12-17 上海瓶钵信息科技有限公司 实现一次特性的消息传输方法
CN113965580A (zh) * 2020-06-29 2022-01-21 北京字节跳动网络技术有限公司 同步消息的方法和装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917472A (zh) * 2010-08-12 2010-12-15 北京星网锐捷网络技术有限公司 一种多链路报文的重组方法、装置及设备
CN102368700A (zh) * 2011-10-25 2012-03-07 曙光信息产业(北京)有限公司 一种分布式***中消息的传递方法
CN102869058A (zh) * 2007-03-22 2013-01-09 富士通株式会社 重排方法
CN103269260A (zh) * 2013-06-03 2013-08-28 腾讯科技(深圳)有限公司 数据传输方法、数据接收端、数据发送端和数据传输***
CN103533450A (zh) * 2013-06-09 2014-01-22 浙江宇视科技有限公司 一种媒体流可靠传输和接收的方法以及装置
US9311064B1 (en) * 2006-09-19 2016-04-12 United Services Automobile Association Systems and methods for automated centralized build/merge management
CN105516262A (zh) * 2015-11-27 2016-04-20 深圳市酷士多网络科技有限公司 应用程序远程操控方法及***
CN105812235A (zh) * 2016-03-04 2016-07-27 百度在线网络技术(北京)有限公司 消息处理方法、装置及***
CN107147481A (zh) * 2017-07-19 2017-09-08 北京数码视讯科技股份有限公司 丢包重传方法、装置及电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311064B1 (en) * 2006-09-19 2016-04-12 United Services Automobile Association Systems and methods for automated centralized build/merge management
CN102869058A (zh) * 2007-03-22 2013-01-09 富士通株式会社 重排方法
CN101917472A (zh) * 2010-08-12 2010-12-15 北京星网锐捷网络技术有限公司 一种多链路报文的重组方法、装置及设备
CN102368700A (zh) * 2011-10-25 2012-03-07 曙光信息产业(北京)有限公司 一种分布式***中消息的传递方法
CN103269260A (zh) * 2013-06-03 2013-08-28 腾讯科技(深圳)有限公司 数据传输方法、数据接收端、数据发送端和数据传输***
CN103533450A (zh) * 2013-06-09 2014-01-22 浙江宇视科技有限公司 一种媒体流可靠传输和接收的方法以及装置
CN105516262A (zh) * 2015-11-27 2016-04-20 深圳市酷士多网络科技有限公司 应用程序远程操控方法及***
CN105812235A (zh) * 2016-03-04 2016-07-27 百度在线网络技术(北京)有限公司 消息处理方法、装置及***
CN107147481A (zh) * 2017-07-19 2017-09-08 北京数码视讯科技股份有限公司 丢包重传方法、装置及电子设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111181999A (zh) * 2020-01-09 2020-05-19 山东超越数控电子股份有限公司 稳定高效易用的通信方法
CN113965580A (zh) * 2020-06-29 2022-01-21 北京字节跳动网络技术有限公司 同步消息的方法和装置
CN112235363A (zh) * 2020-09-28 2021-01-15 华云数据控股集团有限公司 数据处理方法、装置、电子设备、存储介质及***
CN112235363B (zh) * 2020-09-28 2022-02-01 华云数据控股集团有限公司 数据处理方法、装置、电子设备、存储介质及***
CN113489786A (zh) * 2021-07-01 2021-10-08 北京玩蟹科技有限公司 一种长连接网络弱网重连方法、重发方法
CN113489786B (zh) * 2021-07-01 2023-11-14 北京玩蟹科技有限公司 一种长连接网络弱网重连方法、重发方法
CN113810384A (zh) * 2021-08-25 2021-12-17 上海瓶钵信息科技有限公司 实现一次特性的消息传输方法

Similar Documents

Publication Publication Date Title
CN110008037A (zh) 消息处理方法、装置及存储介质
JP6101861B2 (ja) グループ作成方法、グループ脱退方法、装置、プログラム、及び記録媒体
US9635067B2 (en) Tracing and asynchronous communication network and routing method
US9641684B1 (en) Tracing and asynchronous communication network and routing method
US10462071B2 (en) Method and device for removing a control relationship between a user account and a device
EP3179397A1 (en) Methods and devices for managing automatic parallel login and logout in several applications
CN104767860B (zh) 来电提示方法、装置及终端
CN104125162B (zh) 网络资源的访问处理方法及装置
CN107094094B (zh) 应用程序的连网方法、装置及终端
CN109521918A (zh) 一种信息分享方法、装置、电子设备及存储介质
CN105208176B (zh) 联系人记录处理方法及装置
CN106657132A (zh) 访问网站的方法和装置
CN106101456A (zh) 一种呼叫联系人的方法及装置
CN109698794A (zh) 一种拥塞控制方法、装置、电子设备及存储介质
CN109274818A (zh) 应用程序的下载方法、移动终端及计算机存储介质
CN110113249A (zh) 即时通讯信息的合并方法、装置、电子设备及存储介质
JP2023530151A (ja) 通信方法、装置及び電子機器
WO2017020671A1 (zh) 视频交互方法、装置及视频源设备
CN109379783A (zh) 射频资源分配方法及装置
CN109302341A (zh) 即时通信方法、装置、电子设备及存储介质
CN111338971A (zh) 应用测试方法、装置、电子设备及存储介质
US11483263B2 (en) Method and terminal for facilitating chat between users of two terminals
CN109951701A (zh) 监控故障处理方法及装置
CN106533798B (zh) 检测方法和装置
CN106412481B (zh) 基于VoLTE视频通话的提示方法、装置及终端

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190712

RJ01 Rejection of invention patent application after publication