CN117278563A - 消息处理方法、装置、分布式系统、电子设备及存储介质 - Google Patents

消息处理方法、装置、分布式系统、电子设备及存储介质 Download PDF

Info

Publication number
CN117278563A
CN117278563A CN202311353959.9A CN202311353959A CN117278563A CN 117278563 A CN117278563 A CN 117278563A CN 202311353959 A CN202311353959 A CN 202311353959A CN 117278563 A CN117278563 A CN 117278563A
Authority
CN
China
Prior art keywords
message
sequence number
received
association result
serial number
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
CN202311353959.9A
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 Century TAL Education Technology Co Ltd
Original Assignee
Beijing Century TAL Education 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 Century TAL Education Technology Co Ltd filed Critical Beijing Century TAL Education Technology Co Ltd
Priority to CN202311353959.9A priority Critical patent/CN117278563A/zh
Publication of CN117278563A publication Critical patent/CN117278563A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/043Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services
    • 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
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开涉及一种消息处理方法、装置、分布式系统、电子设备及存储介质,方法包括:接收第一消息;生成第一消息的第一序列号;基于第二消息的第一序列号,确定第一消息的第二序列号;第二消息为服务端接收到第一消息之前接收到的最后一个消息;将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送第一消息的关联结果。其可以实现在能够进行消息排序、重复、丢失等逻辑判断的前提下,不要求序列号是连续且递增的,可以降低生成序列号的难度,因此不需要在分布式系统中,布设专门提供生成序列号服务的服务器,可以降低分布式应用系统开发、运维成本。

Description

消息处理方法、装置、分布式系统、电子设备及存储介质
技术领域
本公开涉及计算机软件技术领域,尤其涉及一种消息处理方法、装置、分布式系统、电子设备及存储介质。
背景技术
在分布式系统中,大多服务器节点为了平行扩展以及容灾的需要,一般设计为无状态服务。每个节点平等无差别的对外提供服务,对同一个用户发送的消息,可能会被多个服务器节点并行处理,因而无法保证消息处理的时序性,产生乱序问题。在某些情况下,乱序可能导致一些严重的错误,例如,客户端对同一数据的插入、删除请求,如果产生乱序,会导致逻辑上的错误发生,影响数据的正确性。
为了保证消息的顺序性,现有技术中需要为每一个消息生成序列号,并确保序列号是连续且递增的,以便后续客户端进行消息排序、重复、丢失等逻辑判断。但是这种方式由于对序列号的要求较高,生成序列号的难度较大,通常需要在分布式系统中,布设专门提供生成序列号服务的服务器,这种方式会造成分布式应用系统开发、运维成本较高。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种消息处理方法、装置、分布式系统、电子设备及存储介质。
第一方面,本公开提供了一种消息处理方法,包括:
接收第一消息;
生成所述第一消息的第一序列号;
基于第二消息的第一序列号,确定所述第一消息的第二序列号;所述第二消息为服务端接收到所述第一消息之前接收到的最后一个消息;
将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;
向消息接收端发送所述第一消息的关联结果。
第二方面,本公开还提供了一种消息处理方法,包括:
接收到第一消息的关联结果,所述第一消息的关联结果包括第一消息的第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容;所述第一消息的第二序列号为根据第二消息的第一序列号得到的,所述第二消息为服务端在接收到所述第一消息之前接收到的最后一个消息;
根据所述第一消息的第二序列号,得到所述第二消息的第一序列号;
重复执行循环步骤,直至确定接收到所述第二消息;
所述循环步骤包括:基于所述第二消息的第一序列号,判断是否已接收到所述第二消息的关联结果;若未接收到所述第二消息,向服务端发送消息丢失提醒信息;所述消息丢失提醒信息包括所述第二消息的第一序列号,所述消息丢失提醒信息用于提示所述第二消息丢失。
第三方面,本公开还提供了一种消息处理装置,包括:
第一接收模块,用于接收第一消息;
生成模块,用于生成所述第一消息的第一序列号;
第一确定模块,用于基于第二消息的第一序列号,确定所述第一消息的第二序列号;所述第二消息为服务端接收到所述第一消息之前接收到的最后一个消息;
关联模块,用于将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果;
发送模块,用于向消息接收端发送所述第一消息的关联结果。
第四方面,本公开还提供了一种消息处理装置,包括:
第二接收模块,用于接收到第一消息的关联结果,所述第一消息的关联结果包括第一消息的第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容;所述第一消息的第二序列号为根据第二消息的第一序列号得到的,所述第二消息为服务端在接收到所述第一消息之前接收到的最后一个消息;
第二确定模块,用于根据所述第一消息的第二序列号,得到所述第二消息的第一序列号;
循环步骤执行模块,用于重复执行循环步骤,直至确定接收到所述第二消息;
所述循环步骤包括:基于所述第二消息的第一序列号,判断是否已接收到所述第二消息的关联结果;若未接收到所述第二消息,向服务端发送消息丢失提醒信息;所述消息丢失提醒信息包括所述第二消息的第一序列号,所述消息丢失提醒信息用于提示所述第二消息丢失。
第五方面,本公开还提供了一种分布式系统,
所述分布式服务系统包括负载均衡设备、至少两个工作节点以及数据存储设备;
所述负载均衡设备与各所述工作节点均通讯连接,各所述工作节点均与所述数据存储设备通讯连接;
所述负载均衡设备用于接收第一消息,并将所述第一消息发送至所述至少两个工作节点中的其中一个工作节点;
接收到所述第一消息的所述工作节点用于生成所述第一消息的第一序列号,从所述数据存储设备获取第二消息的第一序列号,基于第二消息的第一序列号,确定所述第一消息的第二序列号;将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送所述第一消息的关联结果;以及将所述第一消息的关联结果存储在所述数据存储设备中,其中,所述第二消息为分布式系统接收到所述第一消息之前接收到的最后一个消息。
第六方面,本公开还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的消息处理方法。
第七方面,本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的消息处理方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的技术方案通过设置基于第二消息的第一序列号,确定第一消息的第二序列号;第二消息为服务端接收到第一消息之前接收到的最后一个消息;将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送第一消息的关联结果;实质是将每个消息重新打包,打包后的关联结果不仅包括消息本身的内容,还包括消息本身的序列号以及前一个消息的序列,如此同一个业务下的多个消息将构成一个接一个的链式结构,可以实现在在序列号无须递增、无须连续的情况下,就能够进行消息排序、重复、丢失等逻辑判断。由于不要求序列号是连续且递增的,可以降低生成序列号的难度,因此不需要在分布式系统中布设专门提供生成序列号服务的服务器,可以降低分布式应用系统开发、运维成本。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1为本公开实施例提供的一种消息处理方法的流程图;
图2为本公开实施例提供的一种第一序列号的示意图;
图3为本公开实施例提供的一种消息处理原理的示意图;
图4为本公开实施例提供的另一种消息处理方法的流程图;
图5为本公开实施例提供的一种分布式系统的结构示意图;
图6为本公开实施例中的一种消息处理装置的结构示意图;
图7为本公开实施例中的另一种消息处理装置的结构示意图;
图8为本公开实施例中的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开实施例提供的一种消息处理方法的流程图,该方法可以由消息处理装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中,例如服务端中。
如图1所示,该方法具体可以包括:
S110、接收第一消息。
第一消息为本次执行本申请提供的消息处理方法时的处理对象。第一消息由消息发送端发送,被本实施例提供的消息处理方法的执行主体接收后,本实施例提供的消息处理方法的执行主体按照本实施例提供的消息处理方法对第一消息进行处理,并将处理结果(即后文中提及的第一消息关联结果)发送至消息接收端。
可选地,第一消息与第一业务对应。第一业务是正在处理或执行的任务。在处理或执行第一业务的过程中,需要进行消息的传递。第一消息为为了处理或执行第一业务需要传递的消息。
在一个实施例中,若第一业务为单聊会话业务,第一消息为一方会话主体向另一方会话主体发送的会话信息。在又一个实施例中,若第一业务为群聊会话业务,第一消息为群聊中一成员向其他成员发送的会话信息。在又一个实施例中,若第一业务为下单业务,第一消息为终端向服务器发送的关于所购买商品的相关信息的查询请求。
S120、生成第一消息的第一序列号。
第一序列号可视作为第一消息的标识。基于多个消息的第一序列号可以判断两个消息是否为相同的消息,以及二者接收的先后顺序。
本步骤的具体实现方法有多种,本申请对此不作限制。示例性地,可以选取与其他消息的序列号不重复的随机数或随机字符串作为与第一消息的第一序列号。可选地,不同消息对应的序列号的字符位数可以相同,也可以不同。
在一个示例中,可选地,设置第一序列号包括时间信息和序号信息;时间信息为根据第一消息的接收时间确定的,序号信息为根据第一消息在目标消息队列中的次序确定;目标消息队列为将在第一消息的接收时间对应的时段内接收到的所有消息按照接收先后顺序排列得到的排列结果。
通常情况下,在时间长度较短(如1秒)的时段内接收的消息的数量较少,这意味着很多情况下仅通过时间信息足以判断同一业务下两个消息的接收先后顺序,以及两个消息是否相同。在无法仅通过时间信息判断两个消息的接收先后顺序时,意味着这两个消息的接收时间相同,可以进一步借助序号信息确定二者接收的先后顺序。因此这种第一序列号的设计方案可以快速确定不同消息的先后顺序。
进一步地,第一消息与第一业务对应,时间信息为基于第一消息的接收时间和第一业务的开始时间确定的。这样设置的目的是使得第一消息的第一序列号还包括消息对应的业务的相关信息,丰富第一序列号所包括的内容。
进一步地,时间信息为基于第一消息的接收时间与第一业务的开始时间的时间差确定的。这样设置可以压缩时间信息,减少存储第一序列号需要的存储空间。
进一步地,在第一序列号中,时间信息排列在序号信息之前。由于在实际中,多数情况下仅通过时间信息就可以获知两个消息的接收先后顺序。设置时间信息排列在序号信息之前,便于快速找到时间信息。
进一步地,时间信息可以为第一消息的接收时间与第一业务的开始时间的相差时间戳的二进制转化结果。这样可以减少存储第一序列号需要的存储空间。
在一个实施例中,可以用int64存储第一序列号。参见图2,考虑到有些语言不支持符号位,第1位不使用,2-54位表示时间信息;55-64位表示序号信息。若第一业务的开始时间为2023-06-06 00:00:00,第一消息的接收时间为2023-06-09 14:00:00。2023-06-0600:00:00与1970-01-01 00:00:00(计算机起始时间)的相差时间戳为1685980800000(即第一业务开始的时间戳)。2023-06-09 14:00:00与1970-01-01 00:00:00(计算机起始时间)的相差时间戳为1686290400000(即第一消息接收时间戳),1686290400000-1685980800000=309600000,即第一消息的接收时间与第一业务的开始时间的相差时间戳为309600000。将309600000进行二进制转化,得到的结果为10010011101000001111100000000。该二进制转化结果为29位,在其前方补0,使其整体呈53位。将最终得到的53的二进制数作为第一序列号中的时间信息。
由于时间信息所使用的第一消息的接收时间和第一业务的开始时间精确到秒。即采用此种设置方式适用于1秒中接收的消息的最大数量小于或等于1024的情况。在实际中,还可以根据1秒中接收的消息的最大数量,调整时间信息和序号信息分别所占的位数。
S130、基于第二消息的第一序列号,确定第一消息的第二序列号;第二消息为服务端接收到第一消息之前接收到的最后一个消息。
第二消息为服务端前一次执行本申请提供的消息处理方法时的处理对象。示例性地,参见图3,假设在处理第一业务的过程中,在t1时刻之前接收到的最后一个消息为消息1,在t1时刻接收到消息2。针对消息2,执行本申请提供的消息处理方法时,消息2为第一消息,消息1为第二消息。在t1时刻和t2时刻之间未接收到其他消息。在t2时刻接收到消息3。针对消息3,执行本申请提供的消息处理方法时,消息3为第一消息,消息2为第二消息。
第二消息的第一序列号是在前一次执行本申请提供的消息处理方法的过程中生成的。示例性地,继续参见图3,假设在t1时刻执行本申请提供的消息处理方法为第N次执行本申请提供的消息处理方法,在t2时刻执行本申请提供的消息处理方法为第N+1次执行本申请提供的消息处理方法。在第N+1次执行本申请提供的消息处理方法时,将消息2作为第二消息,但消息2的第一序列号是在第N次执行本申请提供的消息处理方法时生成的。
本步骤的实现方法有多种,本申请对此不作限制。示例性地,可以将第二消息的第一序列号作为第一消息的第二序列号,也可以借助加密算法将第二消息的第一序列号进行加密,将加密结果作为第一消息的第二序列号。
在实际中,第一消息与第二消息的发送端可以相同,也可以不同,本申请对此不作限制。类似地,第一消息与第二消息的接收端可以相同,也可以不同。
在一个实施例中,基于第二消息的第一序列号,确定第一消息的第二序列号之前,该方法还包括:获取第二消息的关联结果;基于第二消息的关联结果,得到第二消息的第一序列号。这样设置的实质是,每接收到一个消息,针对所接收到的信息,均执行一次本申请提供的消息处理方法,并生成一个关联结果。在确定第二消息的第一序列号时,直接查询之前生成的第二消息的关联结果。
可选地,若第一消息为第一业务下的第一个消息,确定第一消息的第二序列号为预设序列号。其中,预设序列号用于表明第一消息为第一业务下的第一个消息。本申请对预设序列号具体为何种序列号不作限制。
S140、将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果。
本步骤的实现方法有多种,本申请对此不作限制。示例性地,本步骤的实现方法包括:将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行打包,得到数据包;将数据包作为第一消息的关联结果。
示例性地,参见图3,假设在第一业务下,按照接收先后顺序,依次接收到的消息为消息1、消息2以及消息3。当消息1为第一消息时,由于在接收到消息1之前,未接收到的其他消息。设置第二序列号为预设序列号,预设序列号为0,并生成消息1的第一序列号,为a。此处,预设序列号用于提示在接收消息1之前,没有接收到与第一业务对应的其他消息;或者,该消息1为执行第一业务的过程中,需要传递的第一个消息。
当消息2为第一消息时,由于在接收到消息2之前,最后一个接收到的消息为消息1,设置消息2的第二序列号为a,并生成消息2的第一序列号,为c。
当消息3为第一消息时,由于在接收到消息3之前,最后一个接收到的消息为消息2,设置消息3的第二序列号为c,并生成与消息2请求对应的第一序列号,为b。
S150、向消息接收端发送第一消息的关联结果。
上述技术方案通过设置基于第二消息的第一序列号,确定第一消息的第二序列号;第二消息为服务端接收到第一消息之前接收到的最后一个消息;将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送第一消息的关联结果;实质是将每个消息重新打包,打包后的关联结果不仅包括消息本身的内容,还包括消息本身的序列号以及前一个消息的序列号,如此同一个业务下的多个消息将构成一个接一个的链式结构,可以实现在在序列号无须递增、无须连续的情况下,就能够进行消息排序、重复、丢失等逻辑判断。由于不要求序列号是连续且递增的,可以降低生成序列号的难度,因此不需要在分布式系统中布设专门提供生成序列号服务的服务器,可以降低分布式应用系统开发、运维成本。
在上述技术方案的基础上,可选地,S140之后,存储第一消息的关联结果。由于后续将基于本次执行消息处理方法时生成的第一消息的第一序列号,得到下一次执行消息处理方法时需使用的第二消息的第一序列号。通过设置存储关联结果可以确保能够实现将同一个业务下的多个消息处理为一个接一个的链式结构的目的。
在上述技术方案的基础上,可选地,该方法还包括:获取由消息接收端发送的消息丢失提醒信息;消息丢失提醒信息包括丢失消息的第一序列号;基于丢失消息的第一序列号,查询丢失消息的关联结果;向消息接收端发送丢失消息的关联结果。
这样设置的目的是在接收到消息丢失提醒信息后,将消息丢失提醒信息所提示的丢失的信息的关联结果再次发送给消息接收端,已实现消息无损传输。
图4为本公开实施例提供的另一种消息处理方法的流程图。该方法可以由消息处理装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于作为消息接收端的电子设备中,例如终端或服务器。若该电子设备为终端,其具体包括但不限于智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备等。
参见图4,该消息处理方法包括:
S210、接收到第一消息的关联结果,第一消息的关联结果包括第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容;第一消息的第二序列号为根据第二消息的第一序列号得到的,第二消息为服务端在接收到第一消息之前接收到的最后一个消息。
S220、根据第一消息的第二序列号,得到第二消息的第一序列号。
本步骤为S130的逆操作。示例性地,若在S130中,直接将第二消息的第一序列号作为第一消息的第二序列号,在执行本步骤时,将第一消息的第二序列号作为第二消息的第一序列号。若在S130中,借助加密算法将第二消息的第一序列号进行加密,将加密结果作为第一消息的第二序列号,在执行本步骤时,借助与该加密算法对应的解密算法对第一消息的第二序列号进行解密,得到第二消息的第一序列号。
S230、重复执行循环步骤,直至确定接收到第二消息;循环步骤包括:基于第二消息的第一序列号,判断是否已接收到第二消息的关联结果;若未接收到第二消息,向服务端发送消息丢失提醒信息;消息丢失提醒信息包括第二消息的第一序列号,消息丢失提醒信息用于提示第二消息丢失。
其中,“基于第二消息的第一序列号,判断是否已接收到第二消息”的具体实现方法有多种,本申请对此不作限制。示例性地,“基于第二消息的第一序列号,判断是否已接收到第二消息”的具体实现方法包括:将第二消息的第一序列号和已接收到的各关联结果中的第一序列号进行匹配;若匹配中,将匹配中的关联结果确定为第二消息的关联结果;若未匹配中,确定未接收到第二消息。
示例性地,继续参见图3,假设终端接收到关联结果3,由于关联结果3包括消息3的第二序列号,基于消息3的第二序列号可以得到消息2的第一序列号。消息2接收端以消息2的第一序列号为查询条件,在已接收到的所有消息的关联结果中进行查询。若查询到一消息的关联结果中第一序列号与消息2的第一序列号一致,该消息即为消息2,即未丢失第二消息(即接收到第二消息),将与消息2的第一序列号一致的关联结果确定为第二消息的关联结果。若未查询到第一序列号与消息2的第一序列号一致的关联结果,确定第二消息丢失,向服务端发送消息丢失提醒信息。消息丢失提醒信息包括消息2的第一序列号。间隔预设时间后,再次执行基于第二消息的第一序列号,判断是否已接收到第二消息的关联结果。直至确定接收到第二消息。
可选地,“根据第一消息的第二序列号,得到第二消息的第一序列号”之前,判断第一消息的第二序列号是否为预设序列号。若第一消息的第二序列号为预设序列号,表明第一消息为执行第一业务的过程中,需要传递的第一个消息,其之前无第二消息,后续不需要执行S220和S230。若第一消息的第二序列号不是预设序列号,表明第一消息不是执行第一业务的过程中需要传递的第一个消息,其之前有第二消息,后续需要执行S220和S230。
上述技术方案通过设置接收到第一消息的关联结果,第一消息的关联结果包括第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容;第一消息的第二序列号为根据第二消息的第一序列号得到的,第二消息为服务端在接收到第一消息之前接收到的最后一个消息;根据第一消息的第二序列号,得到第二消息的第一序列号;重复执行循环步骤,直至确定接收到第二消息;循环步骤包括:基于第二消息的第一序列号,判断是否已接收到第二消息的关联结果;若未接收到第二消息,向服务端发送消息丢失提醒信息;消息丢失提醒信息包括第二消息的第一序列号,消息丢失提醒信息用于提示第二消息丢失,可以实现在能够进行消息排序、重复、丢失等逻辑判断的前提下,不要求序列号是连续且递增的,可以降低生成序列号的难度,因此不需要在分布式系统中,布设专门提供生成序列号服务的服务器,可以降低分布式应用系统开发、运维成本。
在上述技术方案的基础上,可选地,该方法还包括存储第一消息的关联结果。这样设置的目的是便于后续执行“将第二消息的第一序列号和已接收到的各关联结果中的第一序列号进行匹配”的步骤。
在上述各技术方案的基础上,可选地,在检测到第二消息的消息内容被展示后,展示第一消息的消息内容。这样设置的目的是确保同一业务下各消息按照先后顺序被展示在消息接收端的显示界面中。
图5为本公开实施例提供的一种分布式系统的结构示意图。参见图5,该分布式系统包括负载均衡设备310、至少两个工作节点320以及数据存储设备330;
负载均衡设备310与各工作节点320均通讯连接,各工作节点320均与数据存储设备330通讯连接;负载均衡设备310用于接收第一消息,并将第一消息发送至至少两个工作节点320中的其中一个工作节点320;接收到第一消息的工作节点320用于生成第一消息的第一序列号,从数据存储设备330获取第二消息的第一序列号,基于第二消息的第一序列号,确定第一消息的第二序列号;将第一消息的第一序列号、第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送第一消息的关联结果;以及将第一消息的关联结果存储在数据存储设备330中,其中,第二消息为分布式系统接收到第一消息之前接收到的最后一个消息。
上述技术方案可以实现在能够进行消息排序、重复、丢失等逻辑判断的前提下,不要求序列号是连续且递增的,可以降低生成序列号的难度,因此不需要在分布式系统中,布设专门提供生成序列号服务的服务器,可以降低分布式应用系统开发、运维成本。
还需要说明的是,在现有技术中,由于在分布式系统中布设专门提供生成序列号服务的服务器,该专门提供生成序列号服务的服务器与所有工作节点通讯连接,且与数据存储设备通讯连接。所有消息的序列号均需要通过该提供生成序列号服务的服务器生成。在工作节点接收到消息后,需要将消息的序列号生成请求发送至提供生成序列号服务的服务器,该服务器生成序列号后还需要将序列号返回至工作节点,会造成消息延迟。本申请提供的技术方案由于不需要设置专门提供生成序列号服务的服务器,对消息延迟的影响极小。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
图6为本公开实施例中的一种消息处理装置的结构示意图。本公开实施例所提供的消息处理装置可以配置于服务端中。参见图6,该消息处理装置具体包括:
第一接收模块410,用于接收第一消息;
生成模块420,用于生成所述第一消息的第一序列号;
第一确定模块430,用于基于第二消息的第一序列号,确定所述第一消息的第二序列号;所述第二消息为服务端接收到所述第一消息之前接收到的最后一个消息;
关联模块440,用于将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果;
发送模块450,用于向消息接收端发送所述第一消息的关联结果。
进一步地,第一确定模块430,用于基于第二消息的第一序列号,确定所述第一消息的第二序列号之前,获取第二消息的关联结果;
基于所述第二消息的关联结果,得到所述第二消息的第一序列号。
进一步地,第一确定模块430,用于将所述第二消息的第一序列号作为所述第一消息的第二序列号。
进一步地,关联模块440,用于:
将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行打包,得到数据包;
将所述数据包作为所述第一消息的关联结果。
进一步地,该装置还包括第一存储模块,用于所述将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果之后,存储所述第一消息的关联结果。
进一步地,所述第一序列号包括时间信息和序号信息;所述时间信息为根据所述第一消息的接收时间确定的,所述序号信息为根据所述第一消息在目标消息队列中的次序确定;所述目标消息队列为将在所述第一消息的接收时间对应的时段内接收到的所有消息按照接收先后顺序排列得到的排列结果。
进一步地,该装置还包括丢失处理模块,用于:
获取由消息接收端发送的消息丢失提醒信息;所述消息丢失提醒信息包括丢失消息的第一序列号;
基于丢失消息的第一序列号,查询所述丢失消息的关联结果;
向所述消息接收端发送所述丢失消息的关联结果。
本公开实施例提供的消息处理装置,可执行本公开方法实施例所提供的消息处理方法中服务端所执行的步骤,具备执行步骤和有益效果,此处不再赘述。
图7为本公开实施例中的另一种消息处理装置的结构示意图。本公开实施例所提供的消息处理装置可以配置于客户端中。参见图7,该消息处理装置具体包括:
第二接收模块510,用于接收到第一消息的关联结果,所述第一消息的关联结果包括第一消息的第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容;所述第一消息的第二序列号为根据第二消息的第一序列号得到的,所述第二消息为服务端在接收到所述第一消息之前接收到的最后一个消息;
第二确定模块520,用于根据所述第一消息的第二序列号,得到所述第二消息的第一序列号;
循环步骤执行模块530,用于重复执行循环步骤,直至确定接收到所述第二消息;
所述循环步骤包括:基于所述第二消息的第一序列号,判断是否已接收到所述第二消息的关联结果;若未接收到所述第二消息,向服务端发送消息丢失提醒信息;所述消息丢失提醒信息包括所述第二消息的第一序列号,所述消息丢失提醒信息用于提示所述第二消息丢失。
进一步地,第二确定模块520,用于:
将所述第一消息的第二序列号作为所述第二消息的第一序列号。
进一步地,循环步骤执行模块530,用于:
将第二消息的第一序列号和已接收到的各关联结果中的第一序列号进行匹配;
若匹配中,将匹配中的所述关联结果确定为所述第二消息的关联结果;
若未匹配中,确定未接收到所述第二消息。
进一步地,该装置还包括第二存储模块,用于:
存储所述第一消息的关联结果。
进一步地,该装置还包括展示模块,用于:
在检测到所述第二消息的消息内容被展示后,展示所述第一消息的消息内容。
本公开实施例提供的消息处理装置,可执行本公开方法实施例所提供的消息处理方法中消息接收端所执行的步骤,具备执行步骤和有益效果,此处不再赘述。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的方法。
本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
参考图8,现将描述可以作为本公开的服务器或客户端的电子设备800的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806、输出单元807、存储单元808以及通信单元809。输入单元806可以是能向电子设备800输入信息的任何类型的设备,输入单元806可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元807可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元808可以包括但不限于磁盘、光盘。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理。例如,在一些实施例中,消息处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM802和/或通信单元809而被载入和/或安装到电子设备800上。在一些实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行消息处理方法。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

Claims (17)

1.一种消息处理方法,其特征在于,包括:
接收第一消息;
生成所述第一消息的第一序列号;
基于第二消息的第一序列号,确定所述第一消息的第二序列号;所述第二消息为服务端接收到所述第一消息之前接收到的最后一个消息;
将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及第一消息的消息内容进行关联,得到第一消息的关联结果;
向消息接收端发送所述第一消息的关联结果。
2.根据权利要求1所述的消息处理方法,其特征在于,基于第二消息的第一序列号,确定所述第一消息的第二序列号之前,该方法还包括:
获取第二消息的关联结果;
基于所述第二消息的关联结果,得到所述第二消息的第一序列号。
3.根据权利要求1所述的消息处理方法,其特征在于,基于第二消息的第一序列号,确定所述第一消息的第二序列号,包括:
将所述第二消息的第一序列号作为所述第一消息的第二序列号。
4.根据权利要求1所述的消息处理方法,其特征在于,所述将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果,包括:
将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行打包,得到数据包;
将所述数据包作为所述第一消息的关联结果。
5.根据权利要求1所述的消息处理方法,其特征在于,所述将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果之后,还包括:
存储所述第一消息的关联结果。
6.根据权利要求1所述的消息处理方法,其特征在于,所述第一序列号包括时间信息和序号信息;所述时间信息为根据所述第一消息的接收时间确定的,所述序号信息为根据所述第一消息在目标消息队列中的次序确定;所述目标消息队列为将在所述第一消息的接收时间对应的时段内接收到的所有消息按照接收先后顺序排列得到的排列结果。
7.根据权利要求1所述的消息处理方法,其特征在于,还包括:
获取由消息接收端发送的消息丢失提醒信息;所述消息丢失提醒信息包括丢失消息的第一序列号;
基于丢失消息的第一序列号,查询所述丢失消息的关联结果;
向所述消息接收端发送所述丢失消息的关联结果。
8.一种消息处理方法,其特征在于,包括:
接收到第一消息的关联结果,所述第一消息的关联结果包括第一消息的第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容;所述第一消息的第二序列号为根据第二消息的第一序列号得到的,所述第二消息为服务端在接收到所述第一消息之前接收到的最后一个消息;
根据所述第一消息的第二序列号,得到所述第二消息的第一序列号;
重复执行循环步骤,直至确定接收到所述第二消息;
所述循环步骤包括:基于所述第二消息的第一序列号,判断是否已接收到所述第二消息的关联结果;若未接收到所述第二消息,向服务端发送消息丢失提醒信息;所述消息丢失提醒信息包括所述第二消息的第一序列号,所述消息丢失提醒信息用于提示所述第二消息丢失。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一消息的第二序列号,得到所述第二消息的第一序列号,包括:
将所述第一消息的第二序列号作为所述第二消息的第一序列号。
10.根据权利要求8所述的方法,其特征在于,所述基于所述第二消息的第一序列号,判断是否已接收到所述第二消息,包括:
将第二消息的第一序列号和已接收到的各关联结果中的第一序列号进行匹配;
若匹配中,将匹配中的所述关联结果确定为所述第二消息的关联结果;
若未匹配中,确定未接收到所述第二消息。
11.根据权利要求8所述的方法,其特征在于,还包括:
存储所述第一消息的关联结果。
12.根据权利要求8所述的方法,其特征在于,还包括:
在检测到所述第二消息的消息内容被展示后,展示所述第一消息的消息内容。
13.一种消息处理装置,其特征在于,包括:
第一接收模块,用于接收第一消息;
生成模块,用于生成所述第一消息的第一序列号;
第一确定模块,用于基于第二消息的第一序列号,确定所述第一消息的第二序列号;所述第二消息为服务端接收到所述第一消息之前接收到的最后一个消息;
关联模块,用于将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果;
发送模块,用于向消息接收端发送所述第一消息的关联结果。
14.一种消息处理装置,其特征在于,包括:
第二接收模块,用于接收到第一消息的关联结果,所述第一消息的关联结果包括第一消息的第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容;所述第一消息的第二序列号为根据第二消息的第一序列号得到的,所述第二消息为服务端在接收到所述第一消息之前接收到的最后一个消息;
第二确定模块,用于根据所述第一消息的第二序列号,得到所述第二消息的第一序列号;
循环步骤执行模块,用于重复执行循环步骤,直至确定接收到所述第二消息;
所述循环步骤包括:基于所述第二消息的第一序列号,判断是否已接收到所述第二消息的关联结果;若未接收到所述第二消息,向服务端发送消息丢失提醒信息;所述消息丢失提醒信息包括所述第二消息的第一序列号,所述消息丢失提醒信息用于提示所述第二消息丢失。
15.一种分布式系统,其特征在于,所述分布式服务系统包括负载均衡设备、至少两个工作节点以及数据存储设备;
所述负载均衡设备与各所述工作节点均通讯连接,各所述工作节点均与所述数据存储设备通讯连接;
所述负载均衡设备用于接收第一消息,并将所述第一消息发送至所述至少两个工作节点中的其中一个工作节点;
接收到所述第一消息的所述工作节点用于生成所述第一消息的第一序列号,从所述数据存储设备获取第二消息的第一序列号,基于第二消息的第一序列号,确定所述第一消息的第二序列号;将所述第一消息的所述第一序列号、所述第一消息的第二序列号以及所述第一消息的消息内容进行关联,得到第一消息的关联结果;向消息接收端发送所述第一消息的关联结果;以及将所述第一消息的关联结果存储在所述数据存储设备中,其中,所述第二消息为分布式系统接收到所述第一消息之前接收到的最后一个消息。
16.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-12中任一项所述的方法。
17.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的方法。
CN202311353959.9A 2023-10-18 2023-10-18 消息处理方法、装置、分布式系统、电子设备及存储介质 Pending CN117278563A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311353959.9A CN117278563A (zh) 2023-10-18 2023-10-18 消息处理方法、装置、分布式系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311353959.9A CN117278563A (zh) 2023-10-18 2023-10-18 消息处理方法、装置、分布式系统、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117278563A true CN117278563A (zh) 2023-12-22

Family

ID=89208054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311353959.9A Pending CN117278563A (zh) 2023-10-18 2023-10-18 消息处理方法、装置、分布式系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117278563A (zh)

Similar Documents

Publication Publication Date Title
CN108984662B (zh) 一种区块链数据同步方法
CN105787077B (zh) 数据同步方法和装置
CN108933695B (zh) 用于处理信息的方法和装置
CN113342503B (zh) 实时进度反馈方法、装置、设备及存储介质
CN108764866B (zh) 用于分配资源、领取资源的方法和设备
CN107688978B (zh) 用于检测重复订单信息的方法及装置
CN110597920B (zh) 一种信息处理的方法及装置
CN104618324A (zh) 一种用于数据发送以及数据合法性检查的方法与装置
WO2013086867A1 (zh) 信息处理方法及设备
CN117278563A (zh) 消息处理方法、装置、分布式系统、电子设备及存储介质
CN111161072A (zh) 基于区块链的随机数生成方法、设备及存储介质
CN110995780A (zh) Api调用方法、装置、存储介质及电子设备
CN115277684A (zh) 文件传输方法、装置、设备以及存储介质
CN111626802A (zh) 用于处理信息的方法和装置
CN112925623B (zh) 任务处理方法、装置、电子设备和介质
CN110545296A (zh) 一种日志数据获取方法、装置及其设备
CN114915516A (zh) 一种通信方法及装置
CN113868687A (zh) 一种任务处理进度的管理方法和装置
CN114461912A (zh) 一种信息处理方法、装置、电子设备及存储介质
CN111984613A (zh) 一种共享文件的方法、装置和系统
CN113032040B (zh) 用于处理任务的方法、装置、设备、介质和产品
CN114237752B (zh) 推送页面的显示方法、装置、电子设备和存储介质
CN113726883B (zh) 云数据处理方法、相关装置及计算机程序产品
EP4142258A1 (en) Edge computing network, data transmission method and apparatus, device and storage medium
CN116662276B (zh) 数据处理方法、装置、电子设备及存储介质

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