CN115086153B - 消息处理系统、消息处理方法、设备和存储介质 - Google Patents

消息处理系统、消息处理方法、设备和存储介质 Download PDF

Info

Publication number
CN115086153B
CN115086153B CN202210555988.2A CN202210555988A CN115086153B CN 115086153 B CN115086153 B CN 115086153B CN 202210555988 A CN202210555988 A CN 202210555988A CN 115086153 B CN115086153 B CN 115086153B
Authority
CN
China
Prior art keywords
proxy server
message
target
main
processed
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
Application number
CN202210555988.2A
Other languages
English (en)
Other versions
CN115086153A (zh
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210555988.2A priority Critical patent/CN115086153B/zh
Publication of CN115086153A publication Critical patent/CN115086153A/zh
Application granted granted Critical
Publication of CN115086153B publication Critical patent/CN115086153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例提供一种消息处理系统、消息处理方法、设备和存储介质,该系统包括:名字服务器和代理服务器集群。名字服务器监测代理服务器集群中各代理服务器的运行状态,若监测到代理服务器集群中的一主代理服务器下线,则从此主代理服务器对应的备代理服务器中确定目标代理服务器。此目标代理服务器响应于主代理服务器的下线,获取消息处理系统产生的待处理请求和/或从主代理服务器同步至所述目标代理服务器的消息中确定未处理的目标消息,并由目标代理服务器处理上述获取到的信息。上述过程中,在主代理服务器下线后,未处理的消息和/或待处理请求都会由目标服务器继续进行处理,消息和/或请求的处理不会中断,也不会造成消息消费的中断。

Description

消息处理系统、消息处理方法、设备和存储介质
技术领域
本发明涉及消息处理技术领域,尤其涉及一种消息处理系统、消息处理方法、设备和存储介质。
背景技术
消息中间件是消息传输系统中重要的一部分,其是基于队列与消息传递技术,在网络环境中提供同步或异步、可靠的消息传输的支撑性软件系统。消息传输系统可以包括消息生产者(Producer)、消息消费者(Consumer)、名字服务器(Name Server)集群和消息中间件。消息中间件具体又包括代理服务器(Broker Server)集群。其中,消息生产者用于产生消息,消息消费者用于同步或异步处理消息,且消息生产者和消费者都可以是服务器集群。名字服务器用于为消息生产者以及消息消费者提供消息发送或获取所需的路由信息。消息中间件用于存储消息生产者发送来的消息,并通过对此消息进行预处理以为消息消费者的消息获取做准备。
在实际中,出于容灾的考虑,消息中间件即代理服务器集群可以包括主代理服务器和备代理服务器。而对于消息产生者产生的某些特殊消息比如定时消息、事务消息,以及消息传输系统中各部分产生的特殊操作,比如顺序消息的锁操作,其只可以由主代理服务器处理。因此,当主代理服务器故障下线后,上述的特殊消息和特殊操作的处理会出现中断,并会进一步影响消息消费者对消息的消费。
因此,在主代理服务器下线时,如何保证消息处理不中断就成为一个亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种消息处理系统、消息处理方法、设备和存储介质,用以在主代理服务器下线时保证消息处理不中断。
第一方面,本发明实施例提供一种消息处理系统,包括:代理服务器集群和名字服务器;
所述名字服务器,用于若监测到所述代理服务器集群中的第一主代理服务器下线,则在所述第一主代理服务器对应的备代理服务器中确定目标代理服务器;
所述目标代理服务器,用于响应于所述第一主代理服务器下线,获取待处理信息,所述待处理信息包括所述消息处理系统中产生的待处理请求和/或所述第一主代理服务器同步至所述目标代理服务器的消息中未处理的目标消息;处理所述待处理信息。
第二方面,本发明实施例提供一种消息处理系统,包括:代理服务器集群中的第一主代理服务器和目标代理服务器:
所述第一主代理服务器,用于处理待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述第一主代理服务器中未处理的目标消息;
所述目标代理服务器,用于响应于所述第一主代理服务器下线,获取所述待处理信息,所述第一主代理服务器在下线前将所述目标消息同步至所述目标代理服务器;处理所述待处理信息。
第三方面本发明实施例提供一种消息处理方法,应用于消息处理系统中代理服务器集群包括的备代理服务器,包括:
响应于所述代理服务器集群中主代理服务器的下线,获取待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述主代理服务器同步至所述备代理服务器的消息中未处理的目标消息;
处理所述待处理信息。
第四方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第三方面中的消息处理方法。该电子设备还可以包括通信接口,用于与其他设备或通信网络通信。
第五方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第三方面所述的消息处理方法。
本发明实施例提供的消息处理系统,包括名字服务器和代理服务器集群。系统的工作过程具体为:
名字服务器实时监测代理服务器集群中各代理服务器的运行状态,若监测到代理服务器集群中的一主代理服务器下线,则从此主代理服务器对应的备代理服务器中确定目标代理服务器。此目标代理服务器响应于主代理服务器的下线,获取消息处理系统产生的待处理请求和/或已经下线的主代理服务器同步至目标代理服务器的消息中确定未处理的目标消息,并最终由目标代理服务器对上述获取到的待处理请求和/或目标消息进行处理。
当主代理服务器下线后,主代理服务器中消息的处理会中断,同时消息处理系统中其他设备发送的、需要由主代理服务器来处理的待处理请求也会无法得到响应,即请求的处理也会中断。而使用上述方式,在主代理服务器下线后,未处理的消息和其他设备发送的待处理请求都会由目标服务器继续进行处理,消息和/或请求的处理不会中断,进一步,也就不会造成消息消费的中断。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种消息处理系统的结构示意图;
图2为本发明实施例提供的另一种消息处理系统的结构示意图;
图3为本发明实施例提供的事务消息处理方法的流程图;
图4为本发明实施例提供的一种代理服务器集群的部署拓扑示意图;
图5为本发明实施例提供的第二主代理服务器选择方法的流程图;
图6为与图5所示实施例对应的另一种代理服务器集群的部署拓扑示意图;
图7为本发明实施例提供的一种顺序消息处理流程的信令图;
图8为本发明实施例提供的另一种顺序消息处理流程的信令图;
图9为本发明实施例提供的又一种消息处理系统的结构示意图;
图10为本发明实施例提供的又一种消息处理系统的结构示意图;
图11为本发明实施例提供的一种消息处理方法的流程图;
图12为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于识别”。类似地,取决于语境,短语“如果确定”或“如果识别(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当识别(陈述的条件或事件)时”或“响应于识别(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种消息处理系统的结构示意图。该系统中包括:代理服务器集群和名字服务器。
在对消息处理系统的工作过程进行详细描述之前,还可以先对消息处理系统中的代理服务器集群进行以下说明:
代理服务器集群可以包括至少一个主代理服务器和至少一个备代理服务器。一个主代理服务器和与其对应的至少一个备代理服务器可以称为一组代理服务器。对于一组代理服务器,该组中的主代理服务器还会将本地日志(commit log)中存储的消息及时同步到该组中的各备代理服务器中,同步的消息也会存储于备代理服务器的日志中。
集群中的主代理服务器具有消息读功能、消息写功能,即能够接收消息生产者产生的消息。主代理服务器还具有消息预处理功能以及请求响应功能,即能够对消息处理系统中其他设备比如消息生产者或者管控设备发送的待处理请求进行响应。其中,对于主代理服务器所处理的消息和请求,二者之间的区别可以为:消息可以是消息生产者产生的、存储于主代理服务器的日志中的数据,主代理服务器可以不对消息立即进行预处理。请求可以是系统中其他设备产生的、不会存储于日志中数据,主代理服务器需要及时对请求进行响应。而消息的预处理过程以及待处理请求的响应过程可以参见下述实施例中的相关介绍。
并且集群中的各备代理服务器具有不同的工作模式,在不同的工作模式下,备代理服务器可以具有不同的功能。具体地,当主代理服务器和备代理服务器都在线时,备代理服务器处于普通工作模式,此时,备代理服务器具有消息读功能,并且不具有上述的消息写功能、消息预处理和请求响应功能。当主代理服务器因故障等各种原因下线时,备代理服务器处于增强工作模式,在该模式下,备代理服务器在具有消息读功能的同时还能够进行消息预处理以及请求的响应。
基于上述描述,对消息传输系统的具体工作过程进行描述:
系统中的名字服务器,用于实时监测代理服务器集群中各代理服务器的运行状态,正常运行的即为在线,发生故障的即为下线。并当监测到集群中的第一主代理服务器下线时,则名字服务器会进一步从第一主代理服务器对应的备代理服务器中确定目标代理服务器。其中,目标代理服务器可以是第一主代理服务器对应的备代理服务器中的任意一个代理服务器。可选地,名字服务器也可以是服务器集群。
接着,系统中的目标代理服务器,在知晓第一主代理服务器下线后,可以自动将自身的工作模式从普通工作模式切换至增强工作模式。可选地,名字服务器可以主动将监测到的结果发送至目标代理服务器,以使目标代理服务器获知第一主代理服务器下线。可选地,目标代理服务器也可以主动向名字服务器获取第一主代理服务器的运行情况。
进一步的,在增强工作模式下,目标代理服务器还可以获取到待处理信息,并对其进行处理,此待处理信息即为上述提及的需要主代理服务器处理的消息和/或待处理请求。具体的,消息包括第一主代理服务器下线时还未处理的目标消息,待处理请求包括在第一主代理服务器下线后,系统中其他设备发送的待处理请求。目标代理服务器对待处理信息的处理具体又包括对目标消息的预处理和/或对待处理请求的响应。此时,目标代理服务器具有绝大部分主代理服务器的功能,因此,此目标代理服务器也可以认为是一组代理服务器中的影子主代理服务器。
需要说明的有,由于消息的预处理结果,第一主代理服务器在进行消息同步的同时,也会将消息的预处理结果同步到备代理服务器中,因此,目标代理服务器也可以根据处理结果从本地获取未处理的目标消息。并且需要说明的还有,对于第一主代理服务器中存储的消息,有些消息是需要第一主服务器先对其进行预处理,之后才能被消息消费者获取并进行处理,这些消息即为上述的目标消息,消息消费者对消息的处理也即是消息消费者对消息的消费。而有些消息无需主代理服务器进行预处理即可被消费者直接获取并消费。
对于名字服务器对运行状态的监测,一种可选地方式,集群中的各代理服务器可以定时向名字服务器发送心跳包,即名字服务器可以根据是否按时接收到各代理服务器发送的心跳包来监测各代理服务器是否在线。
当然,代理服务器注册到名字服务器上之后才能被名字服务器监测其的运行状态,则另一种可选地方式,各代理服务器还可以定期向名字服务器注册,即名字服务器可以根据是否按时接收到各代理服务器发送的注册消息来确定各代理服务器的运行状态。对于代理服务器的注册,其可以认为是将代理服务器的网络协议地址(IP地址)以及代理服务器对应的消息主题(topic)发送至名字服务器的过程。举例来说,若代理服务器1用于接收具有主题1的消息,则代理服务器1与主题1具有对应关系。
本实施例中,名字服务器可以实时监测代理服务器集群中各代理服务器的运行状态。若监测到代理服务器集群中的第一主代理服务器下线,则再从此第一主代理服务器对应的备代理服务器中确定目标代理服务器。此目标代理服务器响应于主代理服务器的下线,获取并处理待处理信息。
在实际中,当主代理服务器下线后,对主代理服务器中已存储消息的处理就会中断,同时消息处理系统产生的、需要由主代理服务器来处理的待处理请求也会无法得到响应,即请求的处理也会中断。而使用上述实施例中提供的方式,在第一主代理服务器下线后,第一主代理服务器中已存储但未处理的消息和/或其他设备发送的待处理请求都会继续由目标服务器处理,消息和/或请求的处理不会中断,也就不会造成消息消费的中断。
图1所示系统中的代理服务器集群可以作为消息中间件对消息进行存储、预处理、请求响应等等。一个完整的消息处理过程还包括消息的产生和处理过程。因此,图2为本发明实施例提供的另一种消息处理系统的结构示意图。在图1所示系统的基础上,该系统还可以包括:消息生产者和消息消费者。
消息生产者用于生成消息,并根据生成消息的消息主题,将消息写入注册有此消息主题的、在线的第一主代理服务器。消息生产者产生的、需要第一主代理服务器进行预处理的消息即为上述的目标消息。此目标消息可以是定时消息、延时消息、事务消息等等。
其中,定时消息可以为消息生产者将消息发送至代理服务器后,此消息并不希望其立即被消费者获取并消费,而是推迟到在当前时间点之后的某一个时间再被消费者获取并消费。
延时消息即可以消息生产者将消息发送至代理服务器后,此消息并不希望其立即被消费者获取并消费,而是延迟一定时间后再被消费者获取并消费。
事务消息与事务对应,用以反映事务的执行结果。其中,事务执行成功,则事务消息为Commit状态;事务执行失败,则事务消息为Rrollback状态。以在线购物场景为例,上述的事务消息对应的事务可以是在线购物过程中的不同阶段,按照先后顺序事务可以包括生成订单、更新购物车、更新积分等等。
当第一主代理服务器下线后,名字服务器可以确定出目标代理服务器,并由此目标代理服务器继续对第一主代理服务器中未处理的目标消息进行预处理。预处理过程包括消息扫描和重新写入,但由于目标代理服务器不具有消息写功能,因此,目标代理服务器还可以进一步在代理服务器集群中确定一个在线的第二主代理服务器,并将扫描到的消息转发至此第二主代理服务器中(即将扫描到的目标消息写入第二主代理服务器的日志中)。目标消息的具体预处理过程可以参见下述相关描述。
消息消费者用于订阅至少一种消息主题,并从在线的第二主代理服务器处获取并消费订阅了的至少一种消息主题的消息。
根据上述描述可知,消息产生者和消息消费者在及时了解各代理服务器是否下线的同时,还可以知晓代理服务器各自对应的消息主题,从而能够实现消息的正常发送和处理。其中,代理服务器是否下线以及各自对应的消息主题可以通过向名字服务器发送运行状态的请求消息得到。
本实施例中,消息生产者用于产生并写入消息至消息处理系统中的代理服务器,系统中的目标代理服务器用于对主代理服务器中已存储的目标消息和/或系统中其他设备发送的待处理请求进行处理,消息消费者用于根据处理结果获取并消费消息。上述过程中,在主代理服务器下线后,已存储但未处理的消息和/或其他设备发送的待处理请求都会由目标代理服务器继续进行处理,消息和/或请求的处理不会中断,进一步,也就不会造成消息消费的中断。
在图2所示实施例中以及提及目标代理服务器可以对目标消息进行预处理的过程包括扫描和重新写入,则可选地,预处理过程具体来说是:
首先,目标代理服务器可以定时对存储于本地日志中的目标消息进行扫描,此扫描也可以认为是目标代理服务器从存储消息的日志中读取该消息,其中,目标消息具有第一主题。接着,由于消息消费者无法根据第一主题直接获取目标消息,因此,若被扫描到的目标消息满足预设处理条件,则修改目标消息的主题为与第一主题对应的第二主题,第二主题可以认为是第一主题的解析结果,此具有第二主题的目标消息即为预处理结果。具有第二主题的目标消息可以被写入第二主代理服务器的日志中。之后,订阅了第二主题的消息消费者可以直接从第二主代理服务器上获取此具有第二主题的消息。
在实际中,对于被扫描到的、不同的目标消息,其需要满足的预设处理条件也不同。
具体地,当目标消息为定时消息时,若目标消息的扫描时间达到目标消息的定时发送时间,则确定被扫描到的此目标消息满足预设处理条件。
当目标消息为延时消息时,若目标消息的扫描时间达到目标消息的延时发送时间,则确定被扫描到的此目标消息满足预设处理条件。
当目标消息为事务消息时,若被扫描到的事务消息能表明此事务消息对应的事务已经执行成功,则确定此事务消息满足预设处理条件,此事务消息会被修改主题并写入第二主代理服务器。若被扫描到的事务消息能够表明事务执行失败,则确定此事务消息不满足预设处理条件,也不将此事务消息写入第二主代理服务器,此事务消息对应的事务需要被重新执行。
若被扫描到的事务消息不能表明事务的执行结果,即不能表明事务是执行成功还是失败,则确定事务消息不满足预设处理条件,目标代理服务器可以主动向消息生产者确认事务的执行结果,即进行事务回查。若执行结果为执行成功,则满足预设处理条件并修改主题并发送至第二主代理服务器。
图3为本发明实施例提供的一种事务消息处理方法的流程图。上述事务消息的处理过程也可以参见图3所示的流程图理解。
在上述图2和图3所示实施例中,目标代理服务器在对目标消息进行预处理后,还需要从代理服务器集群中选择在线的第二主代理服务器,以将预处理结果转发至此第二主代理服务器。而选择第二主代理服务器的方式与消息处理系统中的各代理服务器的部署方式有关。
一种可选地部署方式,集群中的每个代理服务器都是一台独立的物理主机。
基于此种部署方式,目标代理服务器选择第二主代理服务器的选择方式即为:先从命名服务器处获取代理服务器集群中各主代理服务器的运行状态;再根据所述运行状态,将注册有第二主题的、在线的主代理服务器确定为第二主代理服务器。此种情况下,目标消息实际上是在两台物理设备之间进行传输。上述过程还可以借助图4所示的代理服务器部署拓扑图进行理解。
另一种可选地部署方式,代理服务器集群中的各代理服务器可以作为虚拟设备运行于不同的物理主机上;其中,虚拟设备具体为虚拟机或者容器。并且同一组代理服务器中的主备代理服务器可以是运行于相同或者不同的物理主机上的虚拟设备。
基于此种部署方式,可选地,图5为本发明实施例提供的一种主代理服务器选择方法的流程图。该方法可以由消息处理系统中的目标代理服务器执行。
如图5所示,该方法可以包括如下步骤:
S101,获取代理服务器集群中各主代理服务器的运行状态。
S102,根据运行状态,将与目标代理服务器运行于同一物理主机上的主代理服务器确定为第二主代理服务器。
目标代理服务器从名字服务器处获取代理服务器集群中各主代理服务器的运行状态,并将与目标代理服务器运行于同一物理主机上的、注册有第二主题的、在线的主代理服务器确定为第二主代理服务器。此时,由于目标代理服务器和第二主代理服务器运行于同一物理主机上,并且目标消息在目标代理服务器和第二主代理服务器上的处理使用的都是物理主机上相同的线程,因此,目标消息能够快速写入第二主代理服务器中。
S103,若在与目标代理服务器运行于同一物理主机上的主代理服务器下线,则确定运行于其他物理主机上的主代理服务器为第二主代理服务器。
在实际中,若与目标代理服务器运行于同一物理主机上的主代理服务器都下线,则可以进一步确定运行于其他物理主机上的、注册有第二主题的、在线的主代理服务器确定为第二主代理服务器。
上述的过程还可以借助图6所示的代理服务器部署拓扑图进行理解。
本实施例中,由于多个代理服务器可以作为虚拟设备运行于同一台物理主机上,因此,确定出的第二主代理服务器可以与目标代理服务器运行于同一台物理主机上,从而能够使目标消息快速写入第二主代理服务器中,也就不对消费者获取和消费消息产生影响。并且在实际中可以根据需求选择上述任一种第二主代理服务器的选择方式。
可选地,在图2所示的系统中,消息生产者产生的并存储于代理服务器中的消息也可以是顺序消息。其中,顺序消息为一种对消息发送和消费顺序有严格要求的消息。即对于顺序消息,要严格按照先进先出的原则进行消息发布和消费,即先产生的消息先被消费,后产生的消息后被消费。
为了实现顺序消息的正常消费,可选地,消息消费者可以向目标代理服务器发送第一锁定请求。接着,目标代理服务器响应于此第一锁定请求,建立目标代理服务器中、包含顺序消息的目标消息队列和消息消费者之间的绑定关系。最后,消息消费者根据此绑定关系,从目标代理服务器中获取包含顺序消息的目标消息队列,并对顺序消息进行顺序消费。
可见,锁定请求和绑定关系的作用是使消息消费者对目标消息队列有独占权,即绑定关系对应的消息消费者才可以获取目标消息队列中的顺序消息。在实际中,一个目标消息队列中的顺序消息只能被一个消息消费者独占。因此,当有多个消息消费者先后向目标代理服务器发送锁定请求时,目标代理服务器会建立最先发送锁定请求的消息消费者与目标消息队列之间的绑定关系。需要说明的还有,在消息消费者根据绑定关系获取顺序消息时,目标代理服务器也会利用此绑定关系对消息消费者的身份进行验证,验证通过后此消息消费者才能够正常获取目标消息队列。
上述包含顺序消息的目标消息队列的获取过程可以结合信令图7理解。
可选地,当目标消息队列读取完毕后,消息消费者还可以向目标代理服务器发送解锁请求,从而解除消息消费者对消息队列的独占。
本实施例中,对于不需要进行预处理但对于消费顺序有严格限制的顺序消息,当第一主代理服务器下线时,消息消费者可以通过向目标代理服务器发送锁定请求的方式锁定顺序消息,在保证顺序消息处理不中断的同时也能够保证顺序消息的顺序获取和顺序消费。
在实际中,在第一主代理服务器下线期间,由同一组代理服务器中的目标代理服务器继续进行消息的处理和请求的响应。当第一主代理服务器重新上线后,前述的目标代理服务器往往还处于增强工作模式。则在一段时间内,就会出现在同一组代理服务器中,存在两个能够处理消息和响应请求的代理服务器,并且这两个代理服务器中均有可以被消息消费者获取的、包含于目标消息队列中的顺序消息。此时,不同的消息消费者可以分别向重新上线的第一主代理服务器以及还处于增强工作模式的目标代理服务器获取目标消息队列中的顺序消息,并分别进行消息消费。但这样会使得顺序消息出现重复消费,造成服务器资源浪费的同时也会造成顺序消息的乱序和重复。
为了改善上述问题,当名字服务器监测到第一主代理服务器重新上线后,不同的消息消费者中的任一消息消费者即目标消息消费者可以先后向目标代理服务器发送第一锁定请求,向第一主代理服务器发送第二锁定请求。
目标代理服务器可以响应于此第一锁定请求,建立目标消息消费者和目标消息队列之间的第一绑定关系,第一主代理服务器可以响应于此第二锁定请求,建立目标消息消费者和目标消息队之间的第二绑定关系。
此时,不同代理服务器中相同的目标消息队列都会被同一消息消费者即目标消息消费者独占,由于不同代理服务器上的目标消息队列中包含的顺序消息都是相同的,因此,目标消息消费者可以获取并消费某一个代理服务器中的目标消息队列中的顺序消息即可,这也就不会出现上述由于消息重复消费而导致的资源浪费和顺序消息的乱序的问题。
对于目标消息消费者获取顺序消息的过程,可选地,目标消息消费者可以从任一代理服务器上获取顺序消息。可选地,目标消息消费者也可以从最先建立的绑定关系的代理服务器上获取顺序消息。即若第二绑定关系的建立早于第一绑定关系的建立,则根据第二绑定关系,从第一主代理服务器上获取目标消息队列中的顺序消息。
上述顺序消息的锁定过程也可以结合信令图8理解。
本实施例中,在第一主代理服务器重新上线的初期,一组代理服务器中可以同时有两个能够处理目标消息和其他设备发送的请求的代理服务器,此时,只有同时锁定这两个代理服务器上的目标消息队列的消息消费者才能够进行顺序消息的获取和消费,也即是对顺序消息的获取提出了更严格的要求,从而在避免代理服务器资源浪费的同时也能够保证顺序消息的顺序消费,不会出现乱序问题。
当然,在第一主代理服务器重新上线运行一段期间后,目标代理服务器则会切换至普通工作模式,此时也就不会出现上述问题。
上述各实施例中都提及了当第一主代理服务器下线时,目标代理服务器可以继续处理消息处理系统中其他设备产生的待处理请求。则图9为本发明实施例提供的又一种消息处理系统的结构示意图。在图2所示系统的基础上,该系统还包括:用于产生待处理请求的管控设备。
管控设备并不直接参与消息的产生、转发和消费,其主要用于监测消息处理系统中各代理服务器对消息的处理状态。
具体地,当第一主代理服务器下线后,管控设备可以先向系统中的名字服务器获取目标代理服务器的网络地址,并按照此网络地址发送待处理请求至目标代理服务器。接着,目标代理服务器响应此待处理请求,发送反映目标代理服务器中消息处理状态的响应结果至管控平台,也即是实现了对目标代理服务器中消息处理状态的监测。其中,管控设备产生的待处理请求可以包括确定当前目标代理服务器中正在处理的是哪条消息即消息处理进度的请求,也可以包括确定当前目标代理服务器中的消息总量以及未处理消息数量的请求等等。
本实施例中,管控设备用于生成监测目标代理服务器中消息处理状态的待处理请求。当主代理服务器下线后,管控设备发送的需要由主代理服务器来处理的待处理请求也会无法得到响应,即请求的处理也会中断。而使用上述方式,在主代理服务器下线后,待处理请求会由目标服务器继续进行处理,管控设备对目标代理服务器的消息处理状态的监测不会中断。
根据上述各实施例中的描述,为了保证消息和请求的处理不中断,目标代理服务器的确定是必不可少的过程。对于目标代理服务器确定的详细过程可以进行以下说明。
在实际中,在第一主代理服务器下线期间,每当消息生产者需要将消息写入主代理服务器,又或者消息消费者需要从代理服务器中获取消息时,都会向名字服务器发送代理服务器运行状态的请求消息。名字服务器在确定出目标代理服务器后,可以将目标代理服务器的IP地址以及对应的主题反馈给消息生产者或者消息消费者。
则对于目标代理服务器的确定,一种可选地方式,名字服务器每当接收到运行状态的请求消息后,就会执行一次目标代理服务器的确定过程。
在此种方式下,名字服务器可以将第一主代理服务器对应的所有备代理服务器中具有预设编号的备代理服务器确定为目标代理服务器。其中,预设编号可以为所有备代理服务器中编号最大或编号最小或某一特定编号的备代理服务器确定为目标代理服务器。按照上述方式,即使名字服务器需要频繁确定目标代理服务器,但由于每次确定出的目标代理服务器都是相同的,因此,也能够避免出现第一主代理服务器对应的不同备代理服务器被频繁确定为目标代理服务器的情况,避免不同的代理服务器频繁发生工作模式切换,也进一步避免消息生产者向不同的代理服务器发送消息,避免消息消费者向不同的代理服务器获取。
在此种方式下,当第一主代理服务器对应的各备代理服务器知晓第一主代理服务器下线后,则各备代理服务器可以根据自身的编号确定自己是否是目标代理服务器,即具有预设编号的备代理服务器可以自动确定自身是目标代理服务器,并切换自身的工作模式至增强工作模式。
则对于目标代理服务器的确定,另一种可选地方式,当名字服务器第一次响应运行状态的请求消息确定出目标代理服务器后,则在第一主代理服务器下线并且此目标代理服务器在线期间,不会再响应消息生产者和消息消费者发送的运行状态的请求消息。在此种情况下,可选地,名字服务器可以将第一主代理服务器对应的备代理服务器中的任一备代理服务器确定为目标代理服务器。
在此种方式下,名字服务器可以主动发送目标代理服务器的确定结果,以使目标代理服务器在接收到确定结果后,切换自身的工作模式至增强工作模式。
上述各实施例中从整个消息处理系统角度描述当第一主代理服务器下线时,目标代理服务器如何继续处理其未处理完的消息,可选地,下面还可以从代理服务器集群的角度描述消息处理的过程。
图10为本发明实施例提供的又一种消息处理系统的结构示意图。该系统包括:代理服务器集群中的第一主代理服务器和目标代理服务器。该消息处理系统也可认为是一个代理服务器集群。
代理服务器集群中处于在线状态的第一主代理服务器可以正常接收并处理消息生产者产生消息,基于第一主代理服务器对消息的处理结果,消息消费者可以进一步获取并消费消息。
当第一主代理服务器下线时,代理服务器集群中第一主代理服务器对应的至少一个备代理服务器中的目标代理服务器可以响应于第一主代理服务器的下线,切换至增强工作模式,以在此模式下继续执行第一主代理服务器未处理完成的目标消息,并且在第一主代理服务器下线期间,也可以由此目标代理服务器继续处理消息处理系统中其他设备产生的待处理请求。
可选地,消息处理系统中还可以包括代理服务器集群中的其他主代理服务器。而当第一主代理服务器下线时,目标代理服务器对目标消息处理可以包括对其进行预处理,目标消息的预处理结果可以被发送到其他主代理服务器中在线的第二主代理服务器。消息消费方可以从第二主代理服务器获取目标消息。
其中,对于第一主代理服务器上线或者下线的监测过程,目标代理服务器的确定过程,待处理信息的处理过程,第二主代理服务器的选择过程等等均可以参见上述各实施例中的相关描述。另外,本实施例中未详细描述的过程也都可以参见上述各实施例中的相关描述,不再此赘述。
本实施例中,第一主代理服务器在线期间可以正常处理待处理信息。而当第一主代理服务器下线后,目标代理服务器响应于第一主代理服务器的下线,获取待处理的消息和/或请求。在实际中,当主代理服务器下线后,对主代理服务器中已存储消息的处理就会中断,同时消息处理系统产生的、需要由主代理服务器来处理的待处理请求也会无法得到响应,即请求的处理也会中断。而使用上述实施例中提供的方式,在第一主代理服务器下线后,第一主代理服务器中已存储但未处理的消息和/或其他设备发送的待处理请求都会继续由目标服务器处理,消息和/或请求的处理不会中断,也就不会造成消息消费的中断。
图11为本发明实施例提供的一种消息处理方法的流程图。该方法可以由消息处理系统中代理服务器集群包括的备代理服务器执行。如图11所示,该方法可以包括如下步骤:
S201,响应于代理服务器集群中主代理服务器的下线,获取待处理信息,待处理信息包括消息处理系统产生的待处理请求和/或主代理服务器同步至备代理服务器的消息中未处理的目标消息。
S202,处理待处理信息。
备代理服务器响应于主代理服务器下线,切换自身的工作模式至增强工作模式,同时获取待处理信息,待处理信息具体可以包括待处理请求和/或目标消息,并在增强工作模式下对获取到的待处理信息进行处理。
另外,本实施例中未详细描述的内容还可以参见上述各实施例中的相关描述,在此不再赘述。需要说明的有,本方法实施例中主代理服务器所具有的能力和执行的处理过程与上述各实施例中第一主代理服务器相同;备代理服务器所具有的能力和执行的处理过程与上述各实施例中目标代理服务器相同。
本实施例中,主代理服务器在线期间可以正常处理待处理信息。当主代理服务器下线期间,备代理服务器响应于此主代理服务器的下线,获取并处理待处理的消息和/或请求。在实际中,当主代理服务器下线后,对主代理服务器中已存储消息的处理就会中断,同时消息处理系统产生的、需要由主代理服务器来处理的待处理请求也会无法得到响应,即请求的处理也会中断。而使用上述实施例中提供的方式,在主代理服务器下线后,主代理服务器中已存储但未处理的消息和/或其他设备发送的待处理请求都会继续由备服务器处理,消息和/或请求的处理不会中断,也就不会造成消息消费的中断。
可选地,为了后续描述清晰,还可以将图11所示实施例中的主代理服务器称为第一主代理服务器。则当待处理信息为目标消息时,备代理服务器对目标消息的处理即为对目标消息的预处理,此预处理结果还可以进一步发送至代理服务器集群中在线的第二主代理服务器,消息消费者可以从第二主代理服务器处获取并消费目标消息的预处理结果。
在一个可能的设计中,上述各实施例提供的消息处理方法可以应用在一电子设备中,如图12所示,该电子设备可以包括:处理器31和存储器32。其中,所述存储器32用于存储支持该电子设备执行上述图11所示实施例中提供的消息处理方法的程序,所述处理器31被配置为用于执行所述存储器32中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器31执行时能够实现如下步骤:
响应所述代理服务器集群中主代理服务器的下线,获取待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述主代理服务器同步至所述备代理服务器的消息中未处理的目标消息;
处理所述待处理信息。
可选地,所述处理器31还用于执行前述图11所示实施例中的全部或部分步骤。
其中,所述电子设备的结构中还可以包括通信接口33,用于该电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存上述电子设备所用的计算机软件指令,其包含用于执行上述图11所示方法实施例消息处理方法所涉及的程序。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (13)

1.一种消息处理系统,其特征在于,包括:代理服务器集群和名字服务器;
所述名字服务器,用于若监测到所述代理服务器集群中的第一主代理服务器下线,则在所述第一主代理服务器对应的备代理服务器中确定目标代理服务器;
所述目标代理服务器,用于响应于所述第一主代理服务器下线,获取待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述第一主代理服务器同步至所述目标代理服务器的消息中未处理的目标消息;对所述待处理信息中的目标消息进行预处理;转发所述目标消息的预处理结果至所述代理服务器集群中在线的第二主代理服务器。
2.根据权利要求1所述的系统,其特征在于,所述目标代理服务器,用于扫描具有第一主题的所述目标消息;若扫描到的所述目标消息满足预设处理条件,则修改所述目标消息的主题为与所述第一主题对应的第二主题;将具有所述第二主题的所述目标消息作为所述预处理结果发送至所述第二主代理服务器。
3.根据权利要求2所述的系统,其特征在于,所述目标消息包括事务消息;所述系统还包括:消息生产者;
所述消息生产者,用于写入所述事务消息至所述第一主代理服务器;
所述目标代理服务器,用于若所述事务消息不能表明事务的执行结果,则确定所述事务消息不满足所述预设处理条件;
向所述消息生产者确认事务的执行结果;
若所述执行结果为执行成功,则修改所述事务消息的主题为所述第二主题。
4.根据权利要求2或3所述的系统,其特征在于,所述系统还包括:订阅所述第二主题的消息消费者;
所述消息消费者,用于从所述第二主代理服务器上获取具有所述第二主题的所述目标消息。
5.根据权利要求1所述的系统,其特征在于,所述代理服务器集群中的各代理服务器作为虚拟设备运行于多台物理主机构建的隔离环境中;
所述目标代理服务器,用于获取所述代理服务器集群中各主代理服务器的运行状态;
根据所述运行状态,将与所述目标代理服务器运行于同一物理主机上的主代理服务器确定为所述第二主代理服务器。
6.根据权利要求5所述的系统,其特征在于,所述目标代理服务器,还用于若在与所述目标代理服务器运行于同一物理主机上的主代理服务器下线,则确定运行于其他物理主机上的主代理服务器为所述第二主代理服务器。
7.根据权利要求1所述的系统,其特征在于,所述系统还包括:管控设备;所述待处理信息包括所述管控设备产生的所述待处理请求;
所述管控设备,用于向所述名字服务器获取所述目标代理服务器的网络地址;按照所述网络地址发送所述待处理请求至所述目标代理服务器;
所述目标代理服务器,用于响应所述待处理请求,发送反映所述目标代理服务器中消息处理状态的响应结果至所述管控设备。
8.根据权利要求1所述的系统,其特征在于,所述系统还包括:消息消费者;所述待处理请求包括第一锁定请求;
所述消息消费者,用于向所述目标代理服务器发送所述第一锁定请求;根据所述目标代理服务器中的目标消息队列和所述消息消费者之间的绑定关系,获取所述目标代理服务器中所述目标消息队列包含的顺序消息;
所述目标代理服务器,用于响应于所述第一锁定请求,建立所述绑定关系。
9.根据权利要求1所述的系统,其特征在于,所述待处理请求包括第一锁定请求和第二锁定请求;
所述名字服务器,用于监测所述第一主代理服务器重新上线;
所述目标代理服务器,用于响应于消息消费者发送的所述第一锁定请求,建立所述目标代理服务器中的目标消息队列和所述消息消费者之间的第一绑定关系;
所述第一主代理服务器,用于响应于所述消息消费者发送的所述第二锁定请求,建立所述第一主代理服务器中的目标消息队列和所述消息消费者之间的第二绑定关系;
所述消息消费者,用于若所述第二绑定关系的建立早于所述第一绑定关系的建立,则根据所述第二绑定关系,获取所述第一主代理服务器中目标消息队列包含的顺序消息。
10.一种消息处理系统,其特征在于,包括:代理服务器集群中的第一主代理服务器、第二主代理服务器和所述第一主代理服务器对应的备代理服务器中的目标代理服务器:
所述第一主代理服务器,用于处理待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述第一主代理服务器中未处理的目标消息;
所述目标代理服务器,用于响应于所述第一主代理服务器下线,获取所述待处理信息,所述第一主代理服务器在下线前将所述目标消息同步至所述目标代理服务器;对所述待处理信息中的目标消息进行预处理;转发所述目标消息的预处理结果至在线的所述第二主代理服务器;
所述第二主代理服务器,用于处理所述目标消息的预处理结果。
11.一种消息处理方法,其特征在于,应用于消息处理系统中代理服务器集群包括的备代理服务器,包括:
响应于所述代理服务器集群中的主代理服务器的下线,获取待处理信息,所述待处理信息包括所述消息处理系统产生的待处理请求和/或所述主代理服务器同步至所述备代理服务器的消息中未处理的目标消息;
对所述待处理信息中的目标消息进行预处理;转发所述目标消息的预处理结果至所述代理服务器集群中在线的第二主代理服务器。
12.一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求11所述的消息处理方法。
13.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求11所述的消息处理方法。
CN202210555988.2A 2022-05-20 2022-05-20 消息处理系统、消息处理方法、设备和存储介质 Active CN115086153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210555988.2A CN115086153B (zh) 2022-05-20 2022-05-20 消息处理系统、消息处理方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210555988.2A CN115086153B (zh) 2022-05-20 2022-05-20 消息处理系统、消息处理方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN115086153A CN115086153A (zh) 2022-09-20
CN115086153B true CN115086153B (zh) 2024-05-28

Family

ID=83248248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210555988.2A Active CN115086153B (zh) 2022-05-20 2022-05-20 消息处理系统、消息处理方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN115086153B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710394A (zh) * 2018-12-27 2019-05-03 出门问问信息科技有限公司 定时任务处理系统及方法
CN110601903A (zh) * 2019-09-25 2019-12-20 广州荔支网络技术有限公司 一种基于消息队列中间件的数据处理方法及装置
WO2020206783A1 (zh) * 2019-04-09 2020-10-15 网宿科技股份有限公司 一种数据传输调度方法和系统
CN112583931A (zh) * 2020-12-25 2021-03-30 北京百度网讯科技有限公司 消息处理方法、消息中间件、电子设备和存储介质
CN112804332A (zh) * 2021-01-14 2021-05-14 广州虎牙科技有限公司 消息处理系统、方法、装置、设备及计算机可读存储介质
CN113296971A (zh) * 2020-07-14 2021-08-24 阿里巴巴集团控股有限公司 消息队列的扩容、缩容、处理方法、装置及设备
CN113641511A (zh) * 2021-07-09 2021-11-12 阿里云计算有限公司 一种消息通信方法和装置
CN114064311A (zh) * 2021-11-05 2022-02-18 广州朱雀信息科技有限公司 消息代理传递控制方法及其装置、设备、介质、产品

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11064022B2 (en) * 2019-01-29 2021-07-13 Verizon Patent And Licensing Inc. Messaging system failover

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710394A (zh) * 2018-12-27 2019-05-03 出门问问信息科技有限公司 定时任务处理系统及方法
WO2020206783A1 (zh) * 2019-04-09 2020-10-15 网宿科技股份有限公司 一种数据传输调度方法和系统
CN110601903A (zh) * 2019-09-25 2019-12-20 广州荔支网络技术有限公司 一种基于消息队列中间件的数据处理方法及装置
CN113296971A (zh) * 2020-07-14 2021-08-24 阿里巴巴集团控股有限公司 消息队列的扩容、缩容、处理方法、装置及设备
CN112583931A (zh) * 2020-12-25 2021-03-30 北京百度网讯科技有限公司 消息处理方法、消息中间件、电子设备和存储介质
CN112804332A (zh) * 2021-01-14 2021-05-14 广州虎牙科技有限公司 消息处理系统、方法、装置、设备及计算机可读存储介质
CN113641511A (zh) * 2021-07-09 2021-11-12 阿里云计算有限公司 一种消息通信方法和装置
CN114064311A (zh) * 2021-11-05 2022-02-18 广州朱雀信息科技有限公司 消息代理传递控制方法及其装置、设备、介质、产品

Also Published As

Publication number Publication date
CN115086153A (zh) 2022-09-20

Similar Documents

Publication Publication Date Title
US10491560B2 (en) Message delivery in messaging networks
US7076689B2 (en) Use of unique XID range among multiple control processors
US7194652B2 (en) High availability synchronization architecture
US8375363B2 (en) Mechanism to change firmware in a high availability single processor system
EP1451687B1 (en) Real composite objects for providing high availability of resources on networked systems
US7188237B2 (en) Reboot manager usable to change firmware in a high availability single processor system
EP1518385A1 (en) Opc server redirection manager
JP2003022258A (ja) サーバーのバックアップシステム
JP2004519024A (ja) 多数のノードを含むクラスタを管理するためのシステム及び方法
CN105610972A (zh) 集群式的任务调派系统
EP2196906B1 (en) Cluster-based business process management through eager displacement and on-demand recovery
CN111460039A (zh) 关系型数据库处理系统、客户端、服务器及方法
CN104158707A (zh) 一种检测并处理集群脑裂的方法和装置
CN112084004A (zh) 一种面向容器应用的容器探测与维护方法及系统
JP4612714B2 (ja) データ処理方法、クラスタシステム、及びデータ処理プログラム
US8201017B2 (en) Method for queuing message and program recording medium thereof
JP2005301436A (ja) クラスタシステムおよびクラスタシステムにおける障害回復方法
CN115086153B (zh) 消息处理系统、消息处理方法、设备和存储介质
JP4806382B2 (ja) 冗長化システム
US20090106781A1 (en) Remote call handling methods and systems
CN115086203A (zh) 数据发送方法、装置、电子设备及计算机可读存储介质
CN114422335A (zh) 通信方法、装置、服务器及存储介质
CN110716827A (zh) 适用于分布式系统的热备份方法及分布式系统
JP2007316719A (ja) メッセージ通信方法、装置及びプログラム
CN116886707A (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
GR01 Patent grant