CN110601903B - 一种基于消息队列中间件的数据处理方法及装置 - Google Patents

一种基于消息队列中间件的数据处理方法及装置 Download PDF

Info

Publication number
CN110601903B
CN110601903B CN201910911585.5A CN201910911585A CN110601903B CN 110601903 B CN110601903 B CN 110601903B CN 201910911585 A CN201910911585 A CN 201910911585A CN 110601903 B CN110601903 B CN 110601903B
Authority
CN
China
Prior art keywords
message server
slave
master
message
server
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
CN201910911585.5A
Other languages
English (en)
Other versions
CN110601903A (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.)
Guangzhou Lizhi Network Technology Co ltd
Original Assignee
Guangzhou Lizhi Network 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 Guangzhou Lizhi Network Technology Co ltd filed Critical Guangzhou Lizhi Network Technology Co ltd
Priority to CN201910911585.5A priority Critical patent/CN110601903B/zh
Publication of CN110601903A publication Critical patent/CN110601903A/zh
Application granted granted Critical
Publication of CN110601903B publication Critical patent/CN110601903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • 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
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2871Implementation details of single intermediate entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于消息队列中间件的数据处理方法及装置,消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,主消息服务器以及从消息服务器均具有对应的同步节点,同步节点用于记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;该方法应用于管理节点中,包括:判断主消息服务器是否故障;若判定主消息服务器故障,则从从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据汇总信息从从消息服务器中选举出新的主消息服务器。本实施例在不影响消息队列的性能前提下,保证Broker集群的故障恢复在数秒内完成,并且最大努力保证数据的完整性。

Description

一种基于消息队列中间件的数据处理方法及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于消息队列中间件的数据处理方法及装置。
背景技术
分布式消息队列(Message Queue,简称MQ)中间件已经逐渐成为企业信息***内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC(Remote Procedure Call,远程过程调用)的主要手段之一。作为高并发***的核心组件之一,能够帮助业务***解构提升开发效率和***稳定性。
MQ的组成主要包括如下部分:
Broker:消息服务器,作为server(服务器)提供消息核心服务。
Producer:消息生产者,业务的发起方,负责生产消息传输给Broker。
Consumer:消息消费者,业务的处理方,负责从Broker获取消息并进行业务逻辑处理。
Topic:主题,发布订阅模式(Pub/Sub)下的消息统一汇集地,不同生产者向Topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播。
Queue:队列,PTP(Point To Point,点对点)模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收。
Message:消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输。
然而,相关技术中公开的分布式消息队列中间件并没有提供选举功能,当主Broker宕机后,会有丢失消息的可能,并且该Broker集群不再接收新消息的写入,会对业务方的使用带来一定的影响。在消息队列进程异常挂掉后,如何快速保证消息队列节点的选举以及数据的同步,是一个值得探讨的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于消息队列中间件的数据处理方法及装置。
第一方面,本申请提供了一种基于消息队列中间件的数据处理方法,所述消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,所述主消息服务器以及所述从消息服务器均具有对应的同步节点,所述同步节点用于记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;
所述方法应用于所述管理节点中,包括:
判断所述主消息服务器是否故障;
若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,所述新的主消息服务器用于从所述故障的主消息服务器对应的同步节点中同步尚未同步的消息,并对外提供服务。
可选地,所述判断所述主消息服务器是否故障,包括:
若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;
若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;
若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
可选地,所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,包括:
计算各从消息服务器的同步节点记录的汇总信息与所述主消息服务器的同步节点记录的汇总信息的差值,所述汇总信息包括各主题和各分区的消息数量,或者,保存消息的各消息文件的总大小;
将差值最小的汇总信息所在的同步节点对应的从消息服务器确定为新的主消息服务器。
可选地,在所述判断所述主消息服务器是否故障之前,所述方法还包括:
接收所述主消息服务器或者所述从消息服务器发送注册请求,其中,所述注册请求包括所述主消息服务器或所述从消息服务器的设备信息,以及表示其为主消息服务器或从消息服务器角色的代码信息;
根据所述注册请求,对所述主消息服务器或者所述从消息服务器进行注册处理,所述注册处理包括将所述设备信息以及对应的代码信息关联存储。
可选地,在所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器之后,所述方法还包括:
向剩余的从消息服务器发送所述新的主消息服务器的连接地址,所述剩余的从消息服务器用于根据所述连接地址连接所述新的主消息服务器。
第二方面,本申请提供了一种基于消息队列中间件的数据处理装置,所述消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,所述主消息服务器以及所述从消息服务器均具有对应的同步节点,所述同步节点用于记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;
所述装置应用于所述管理节点中,包括:
故障判断模块,用于判断所述主消息服务器是否故障;
选举模块,用于若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,所述新的主消息服务器用于从所述故障的主消息服务器对应的同步节点中同步尚未同步的消息,并对外提供服务。
可选地,所述故障判断模块包括:
心跳判断子模块,用于若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;
连接查询子模块,用于若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
可选地,所述选举模块具体用于:
计算各从消息服务器的同步节点记录的汇总信息与所述主消息服务器的同步节点记录的汇总信息的差值,所述汇总信息包括各主题和各分区的消息数量,或者,保存消息的各消息文件的总大小;
将差值最小的汇总信息所在的同步节点对应的从消息服务器确定为新的主消息服务器。
可选地,所述装置还包括:
注册模块,用于在所述判断所述主消息服务器是否故障之前,接收所述主消息服务器或者所述从消息服务器发送注册请求,其中,所述注册请求包括所述主消息服务器或所述从消息服务器的设备信息,以及表示其为主消息服务器或从消息服务器角色的代码信息;根据所述注册请求,对所述主消息服务器或者所述从消息服务器进行注册处理,所述注册处理包括将所述设备信息以及对应的代码信息关联存储。
可选地,所述装置还包括:
连接地址发送模块,用于在所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器之后,向剩余的从消息服务器发送所述新的主消息服务器的连接地址,所述剩余的从消息服务器用于根据所述连接地址连接所述新的主消息服务器。
第三方面,本申请提供了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述的方法。
第四方面,本申请提供了一种存储介质,当所述存储介质中的指令由所述设备的处理器执行时,使得所述电子设备能够执行如上述的方法。
本发明具有如下有益效果:
在本实施例中,当判定主消息服务器Broker Master故障时,新的主消息服务器的选举和数据的同步都由管理节点Mq Manager执行,原有的MQ只需要能够接收命令,从Broker Slave切换到Broker Master,其余的部分,例如数据的同步等处理都是原有MQ自带的功能,在小量的代码修改下,可以实现成通用的方案,兼容现在的消息队列,减少代码的耦合,通用性和可用性较高。
另外,通过独立的管理节点实现新的主消息服务器的选举,通过同步节点进行消息的同步和消息的汇总信息的记录,能够在不影响消息队列的性能前提下,保证Broker集群的故障恢复在数秒内完成,并且最大努力保证数据的完整性。
附图说明
图1为本申请的一种消息队列中间件的架构示意图;
图2为本申请的一种基于消息队列中间件的数据处理方法实施例的步骤流程图;
图3为本申请的一种基于消息队列中间件的数据处理装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本申请的一种消息队列中间件的架构示意图,该消息队列中间件至少可以包括管理节点Mq Manager、主消息服务器Broker Master、从消息服务器BrokerSlave以及同步节点Mq SyncNode。
其中,Broker Master可以有一个或多个,Broker Slave可以有多个,BrokerMaster与Broker Slave组成Broker集群。在Broker集群中,Broker Master主要承载读写请求,Broker Slave承载部分读请求,同时从Broker master中同步数据。
在本实施例中,在消息队列中间件中部署管理节点Mq Manager的作用是对消息队列进程的管理,例如,包括Broker Master的选举、切换、心跳检测等。
在一种例子中,消息队列的Broker可以通过向Mq Manager注册来获得Mq Manager的管理。Mq Manager通过接收Broker Master或者Broker Slave发送的注册请求,来实现对Broker Master或者Broker Slave的注册。
示例性地,注册请求可以包括Broker Master或者Broker Slave的设备信息,以及表示其为Broker Master或者Broker Slave角色的代码信息。其中,设备信息可以包括设备ID、连接地址(如IP地址)等。代码信息可以为预先设定的表示各角色的代码,例如,若Broker为Broker Master,则其代码信息可以为数值0;若Broker为Broker Slave,则其代码信息可以为数值1。
当Mq Manager接收到注册请求以后,可以将该Broker的设备信息以及对应的代码信息关联存储,这样Mq Manager就可以知悉Broker集群中哪个是Broker Master,哪个是Broker Slave,便于后续对Broker Master故障的判断和选举。
注册完成以后,Broker可以定时向Mq Manager发送心跳消息,以便于Mq Manager对Broker进行心跳检测,确认Broker是否故障。同时,Broker对应的MQ SyncNode开始记录该Broker上的数据。
需要说明的是,为了防止Mq Manager出现故障导致本方案的选举流程不可用且便于对Mq Manager的管理,本实施例可以在部署多个Mq Manager实例,并为各Mq Manager实例配置一个唯一的序列号(但只需要一个Mq Manager实例负责选举工作),当当前MqManager出现故障时,可以采用下一序列号的Mq Manager继续提供服务。在其他实施方式中,也可以从Mq syncNode中选举Mq Manager,例如为每个Mq syncNode配置唯一的序列号,当当前Mq Manager出现故障时,可以采用下一序列号的Mq syncNode作为新的Mq Manager继续提供服务。另外,本实施例对于每个消息队列进程,即每个Broker(包括Broker Master和Broker Slave)都部署一个同步节点Mq syncNode,作用是同步对应的Broker Master或Broker Slave中的消息,以及记录对应的Broker Master或Broker Slave中已存储的消息的汇总信息等。
作为一种示例,汇总信息可以包括Broker中各主题topic和各分区partion的消息数量。例如,Mq syncNode可以采用如下方式记录汇总信息:
假设有topic A,第1个partion有10条消息,第2个partion有20条消息,那么MqsyncNode中记录的该汇总信息如下:
Figure BDA0002214861450000061
作为另一种示例,汇总信息可以包括Broker中保存消息的各消息文件的总大小(由于消息都只会写入,不会修改,所以可以根据文件大小进行增量同步)。例如,MqsyncNode可以采用如下方式记录汇总信息:
假设消息队列中msg_a文件保存了20MB的消息,msg_b保存了30MB的消息,那么MqsyncNode可以记录如下:
Figure BDA0002214861450000062
Figure BDA0002214861450000071
基于图1的消息队列中间件,参照图2,示出了本申请的一种基于消息队列中间件的数据处理方法实施例的步骤流程图。当本实施例应用于管理节点时,具体可以包括如下步骤:
步骤101,判断所述主消息服务器是否故障。
在本实施例中,Mq Manager可以判断Broker集群中的Broker Master是否出现宕机等故障。
在一种实施方式中,Mq Manager可以通过如下方式判断Broker Master是否发生故障:
若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
具体的,在分布式场景下,Mq Manager与Broker Master的通信可能会有延迟或通信网络异常,导致Mq Manager错误判断Broker Master故障。为了避免这种情况,在该实施例中,当Mq Manager在预设时长内没有接收到Broker Master发送的心跳包,即Mq Manager与Broker Master的心跳断开时,Mq Manager可以向该Broker Master对应的部分或全部Broker Slave发送连接询问请求,以询问该Broker Slave是否能与Broker Master连接,如果该Broker Slave确认不能与Broker Master连接,则向Mq Manager发送连接断开消息,MqManager根据该连接断开消息可以确定Broker Master故障。否则,如果该Broker Slave确认与Broker Master连接成功,则向Mq Manager发送连接成功消息,Mq Manager根据该连接成功消息可以确定Broker Master没有故障。
步骤102,若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器。
在该步骤中,当Mq Manager确定当前Broker集群的Broker Master故障时,则进行新的Broker Master的选举,由于该选举由Mq Manager单节点控制,不存在并发竞选问题(并发竞选可能会导致出现多个选举结果而造成异常),可以保证在秒级时间内完成新的Broker Master的选举。
在该实施例中,Mq Manager可以获取Broker集群中各Broker对应的Mq syncNode记录的汇总信息,当判定Broker Master对应的机器故障时,可以根据该Broker Master对应的各Broker Slave的Mq syncNode记录的汇总信息,从多个Broker Slave中选举出新的Broker Master。
在一种实施方式中,Mq Manager可以计算各Broker Slave的Mq syncNode记录的汇总信息与Broker Master的Mq syncNode记录的汇总信息的差值,并将差值最小的汇总信息所在的Mq syncNode对应的Broker Slave确定为新的Broker Master。
在实现时,上述差值的计算方式可以根据Mq syncNode记录文件的方式不同而不同。例如,针对Mq syncNode记录的汇总信息为各主题和各分区的消息数量的情况,假设Broker Master的Mq syncNode记录的topic1的消息数量为30条,Broker Slave 1-5对应的Mq syncNode记录的topic1的消息数量分别为20条、23条、18条、25条和21条,对应的差值分别为:10条、7条、12条、5条和9条,则可以将Broker Slave 4作为新的Broker Master。又如,针对Mq syncNode记录的汇总信息为保存消息的各消息文件的总大小的情况,假设BrokerMaster的Mq syncNode记录的消息文件1的总大小为20MB,Broker Slave 1-5对应的MqsyncNode记录的消息文件1的总大小分别为20MB、18MB、19MB、15MB和10MB,对应的差值分别为:0MB、2MB、1MB、5MB和10MB,则可以将Broker Slave 1作为新的Broker Master。
当然,本实施例并不限于上述两种记录消息的方式以及选举新的Broker Master的方式,本领域技术人员根据实际需求确定Mq Manager的其他选举方式均是可以的。
当选举出新的Broker Master以后,可以由新的Broker Master从故障的BrokerMaster对应的Mq syncNode中同步尚未同步的消息,并对外提供服务。在一种实施方式中,Mq Manager可以向剩余的Broker Slave发送所述新的Broker Master的连接地址,该剩余的Broker Slave用于根据该连接地址连接新的Broker Master。
在实际中,如果原Broker Master的Mq SyncNode还能连接,那么新的BrokerMaster的Mq SyncNode节点可以从原Broker Master的Mq SyncNode中同步尚未同步的消息,以确保新的Broker Master拥有所有的消息,这样的同步可以在数秒内完成。在其他实施方式中,若原Broker Master的Mq SyncNode不能连接,则新的Broker Master可以不进行消息同步,直接对外提供服务。针对后一种实施方式可能会丢失少量消息,可以通过MQ提供的半同步复制的方式来避免这种情况,即将消息发送给Broker Master后,需要等BrokerMaster将消息同步给其中一个或多外Broker Slave才能算消息发送成功。
当新的Broker Master同步完成以后,Mq Manager可以向剩余的Broker Slave发送新的Broker Master的连接地址,当前Broker集群中剩下的Broker Slave可以通过该连接地址直接与新的Broker Master进行数据同步,使得当前Broker集群可以在数秒内重新对外提供服务。
在本实施例中,当判定主消息服务器Broker Master故障时,新的主消息服务器的选举和数据的同步都由管理节点Mq Manager执行,原有的MQ只需要能够接收命令,从Broker Slave切换到Broker Master,其余的部分,例如数据的同步等处理都是原有MQ自带的功能,在小量的代码修改下,可以实现成通用的方案,兼容现在的消息队列,减少代码的耦合,通用性和可用性较高。
另外,通过独立的管理节点实现新的主消息服务器的选举,通过同步节点进行消息的同步和消息的汇总信息的记录,能够在不影响消息队列的性能前提下,保证Broker集群的故障恢复在数秒内完成,并且最大努力保证数据的完整性。
基于上述基于消息队列中间件的数据处理方法,参照图3,示出了本发明一种基于消息队列中间件的数据处理装置实施例的结构框图,所述消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,所述主消息服务器以及所述从消息服务器均具有对应的同步节点,所述同步节点用于记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;
所述装置应用于所述管理节点中,可以包括如下模块:
故障判断模块301,用于判断所述主消息服务器是否故障;
选举模块302,用于若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,所述新的主消息服务器用于从所述故障的主消息服务器对应的同步节点中同步尚未同步的消息,并对外提供服务。
在一种实施方式中,所述故障判断模块301包括:
心跳判断子模块,用于若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;
连接查询子模块,用于若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
在一种实施方式中,所述选举模块302具体用于:
计算各从消息服务器的同步节点记录的汇总信息与所述主消息服务器的同步节点记录的汇总信息的差值,所述汇总信息包括各主题和各分区的消息数量,或者,保存消息的各消息文件的总大小;
将差值最小的汇总信息所在的同步节点对应的从消息服务器确定为新的主消息服务器。
在一种实施方式中,所述装置还包括:
注册模块,用于在所述判断所述主消息服务器是否故障之前,接收所述主消息服务器或者所述从消息服务器发送注册请求,其中,所述注册请求包括所述主消息服务器或所述从消息服务器的设备信息,以及表示其为主消息服务器或从消息服务器角色的代码信息;根据所述注册请求,对所述主消息服务器或者所述从消息服务器进行注册处理,所述注册处理包括将所述设备信息以及对应的代码信息关联存储。
在一种实施方式中,所述装置还包括:
连接地址发送模块,用于在所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器之后,向剩余的从消息服务器发送所述新的主消息服务器的连接地址,所述剩余的从消息服务器用于根据所述连接地址连接所述新的主消息服务器。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和***通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (12)

1.一种基于消息队列中间件的数据处理方法,其特征在于,所述消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,所述主消息服务器以及所述从消息服务器均具有对应的同步节点,所述同步节点用于同步对应的主消息服务器或从消息服务器中的消息,以及记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;
所述方法应用于所述管理节点中,包括:
判断所述主消息服务器是否故障;
若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,所述新的主消息服务器用于从所述故障的主消息服务器对应的同步节点中同步尚未同步的消息,并对外提供服务。
2.根据权利要求1所述的方法,其特征在于,所述判断所述主消息服务器是否故障,包括:
若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;
若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;
若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,包括:
计算各从消息服务器的同步节点记录的汇总信息与所述主消息服务器的同步节点记录的汇总信息的差值,所述汇总信息包括各主题和各分区的消息数量,或者,保存消息的各消息文件的总大小;
将差值最小的汇总信息所在的同步节点对应的从消息服务器确定为新的主消息服务器。
4.根据权利要求1所述的方法,其特征在于,在所述判断所述主消息服务器是否故障之前,所述方法还包括:
接收所述主消息服务器或者所述从消息服务器发送注册请求,其中,所述注册请求包括所述主消息服务器或所述从消息服务器的设备信息,以及表示其为主消息服务器或从消息服务器角色的代码信息;
根据所述注册请求,对所述主消息服务器或者所述从消息服务器进行注册处理,所述注册处理包括将所述设备信息以及对应的代码信息关联存储。
5.根据权利要求1或2或4所述的方法,其特征在于,在所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器之后,所述方法还包括:
向剩余的从消息服务器发送所述新的主消息服务器的连接地址,所述剩余的从消息服务器用于根据所述连接地址连接所述新的主消息服务器。
6.一种基于消息队列中间件的数据处理装置,其特征在于,所述消息队列中间件包括管理节点、主消息服务器、从消息服务器以及同步节点,其中,所述主消息服务器以及所述从消息服务器均具有对应的同步节点,所述同步节点用于同步对应的主消息服务器或从消息服务器中的消息,以及记录对应的主消息服务器或者从消息服务器中已存储的消息的汇总信息;
所述装置应用于所述管理节点中,包括:
故障判断模块,用于判断所述主消息服务器是否故障;
选举模块,用于若判定所述主消息服务器故障,则从所述从消息服务器对应的同步节点中获取该同步节点记录的汇总信息,并根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器,所述新的主消息服务器用于从所述故障的主消息服务器对应的同步节点中同步尚未同步的消息,并对外提供服务。
7.根据权利要求6所述的装置,其特征在于,所述故障判断模块包括:
心跳判断子模块,用于若在预设时长内没有接收到所述主消息服务器发送的心跳包,则向所述从消息服务器发送连接询问请求;
连接查询子模块,用于若接收到所述从消息服务器针对所述连接询问请求返回的连接断开消息时,则判定所述主消息服务器故障,其中,所述连接断开消息为所述从消息服务器确定与所述主消息服务器的连接断开时生成的消息;若接收到所述从消息服务器针对所述连接询问请求返回的连接成功消息时,则判定所述主消息服务器没有故障,其中,所述连接成功消息为所述从消息服务器确定与所述主消息服务器的连接没有断开时生成的消息。
8.根据权利要求6或7所述的装置,其特征在于,所述选举模块具体用于:
计算各从消息服务器的同步节点记录的汇总信息与所述主消息服务器的同步节点记录的汇总信息的差值,所述汇总信息包括各主题和各分区的消息数量,或者,保存消息的各消息文件的总大小;
将差值最小的汇总信息所在的同步节点对应的从消息服务器确定为新的主消息服务器。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
注册模块,用于在所述判断所述主消息服务器是否故障之前,接收所述主消息服务器或者所述从消息服务器发送注册请求,其中,所述注册请求包括所述主消息服务器或所述从消息服务器的设备信息,以及表示其为主消息服务器或从消息服务器角色的代码信息;根据所述注册请求,对所述主消息服务器或者所述从消息服务器进行注册处理,所述注册处理包括将所述设备信息以及对应的代码信息关联存储。
10.根据权利要求6或7或9所述的装置,其特征在于,所述装置还包括:
连接地址发送模块,用于在所述根据所述汇总信息从所述从消息服务器中选举出新的主消息服务器之后,向剩余的从消息服务器发送所述新的主消息服务器的连接地址,所述剩余的从消息服务器用于根据所述连接地址连接所述新的主消息服务器。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-5任一项所述的方法。
12.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-5中任一项所述的方法。
CN201910911585.5A 2019-09-25 2019-09-25 一种基于消息队列中间件的数据处理方法及装置 Active CN110601903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910911585.5A CN110601903B (zh) 2019-09-25 2019-09-25 一种基于消息队列中间件的数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910911585.5A CN110601903B (zh) 2019-09-25 2019-09-25 一种基于消息队列中间件的数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN110601903A CN110601903A (zh) 2019-12-20
CN110601903B true CN110601903B (zh) 2022-04-01

Family

ID=68863333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910911585.5A Active CN110601903B (zh) 2019-09-25 2019-09-25 一种基于消息队列中间件的数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN110601903B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527520A (zh) * 2020-12-01 2021-03-19 中国建设银行股份有限公司 一种部署消息中间件的方法和装置
CN112822238B (zh) * 2020-12-29 2023-05-26 深圳市金证科技股份有限公司 一种主节点的切换方法以及计算机可读存储介质
CN112804332B (zh) * 2021-01-14 2023-02-28 广州虎牙科技有限公司 消息处理***、方法、装置、设备及计算机可读存储介质
CN112564990B (zh) * 2021-02-23 2021-05-14 全时云商务服务股份有限公司 一种用于音频管理服务器切换的管理方法
CN113641511B (zh) * 2021-07-09 2024-06-04 阿里云计算有限公司 一种消息通信方法和装置
CN114116258B (zh) * 2021-11-12 2024-05-07 苏州浪潮智能科技有限公司 队列管理器热备方法、***、终端及存储介质
CN114598593B (zh) * 2022-02-16 2023-08-29 阿里巴巴(中国)有限公司 消息处理方法、***、计算设备及计算机存储介质
CN115086153B (zh) * 2022-05-20 2024-05-28 阿里巴巴(中国)有限公司 消息处理***、消息处理方法、设备和存储介质
CN116893914A (zh) * 2023-09-11 2023-10-17 中移(苏州)软件技术有限公司 消息处理的方法、消息队列***、客户端和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878473A (zh) * 2017-04-20 2017-06-20 腾讯科技(深圳)有限公司 一种消息处理方法、服务器集群及***
CN109669820A (zh) * 2018-12-24 2019-04-23 广州君海网络科技有限公司 基于Kettle的任务监管方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8577976B2 (en) * 2010-04-27 2013-11-05 International Business Machines Corporation Application of system level policy in message oriented middleware

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878473A (zh) * 2017-04-20 2017-06-20 腾讯科技(深圳)有限公司 一种消息处理方法、服务器集群及***
CN109669820A (zh) * 2018-12-24 2019-04-23 广州君海网络科技有限公司 基于Kettle的任务监管方法和装置

Also Published As

Publication number Publication date
CN110601903A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
CN110601903B (zh) 一种基于消息队列中间件的数据处理方法及装置
US10764369B2 (en) Data storage method and server applicable to distributed server cluster
CN107465767B (zh) 一种数据同步的方法和***
CN111368002A (zh) 一种数据处理方法、***、计算机设备和存储介质
CN113641511B (zh) 一种消息通信方法和装置
CN102143194A (zh) 数据同步的方法、***、中间数据节点及终止数据节点
CN112804332B (zh) 消息处理***、方法、装置、设备及计算机可读存储介质
CN110677282B (zh) 一种分布式***的热备份方法及分布式***
CN107682169B (zh) 一种利用Kafka集群发送消息的方法和装置
CN112052230B (zh) 多机房数据同步方法、计算设备及存储介质
CN110069365B (zh) 管理数据库的方法和相应的装置、计算机可读存储介质
WO2012171346A1 (zh) 电话号码映射域名解析***(enum-dns)及其容灾方法
CN108509296B (zh) 一种处理设备故障的方法和***
CN114625566A (zh) 数据容灾方法、装置、电子设备及存储介质
CN105812492A (zh) 一种数据同步方法及***
CN111211927B (zh) 一种资源同步方法及装置
CN111510336B (zh) 一种网络设备状态管理方法及装置
CN114422335A (zh) 通信方法、装置、服务器及存储介质
CN114490188A (zh) 同步主备数据库的方法及装置
CN114598593A (zh) 消息处理方法、***、计算设备及计算机存储介质
CN113890817A (zh) 一种通信优化方法和装置
CN111083182B (zh) 分布式物联网设备管理方法及装置
CN113890880A (zh) 一种多节点间的数据同步方法、***、设备及存储介质
CN110716827A (zh) 适用于分布式***的热备份方法及分布式***
CN110890989A (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
GR01 Patent grant