CN111064608A - 消息系统的主从切换方法、装置、电子设备及存储介质 - Google Patents
消息系统的主从切换方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111064608A CN111064608A CN201911268888.6A CN201911268888A CN111064608A CN 111064608 A CN111064608 A CN 111064608A CN 201911268888 A CN201911268888 A CN 201911268888A CN 111064608 A CN111064608 A CN 111064608A
- Authority
- CN
- China
- Prior art keywords
- agent
- machine
- abnormal
- slave
- role
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例提供了一种消息系统的主从切换方法、装置、电子设备及存储介质。其中方法包括:接收代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。本发明实施例能够避免消息系统的吞吐量降低,避免造成系统崩溃的现象。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及消息系统的主从切换方法、装置、电子设备及存储介质。
背景技术
消息系统是一个消息订阅和发布的系统,消息系统中包括代理机(Broker)。将消息的发布表述为生产,将消息的订阅表述为消费,将中间的存储称作代理机。生产者将消息生产出来,发给消息系统的代理机进行存储,消费者需要消费消息时,就从代理机中取出所需的消息。
消息系统是解耦各系统通信的基础分布式中间件,它的稳定与可靠直接关系着企业相关各系统的正常运行。在互联网系统环境下,对各系统的容灾提出了更严格的要求,主从互备是容灾中常见的部署方式。消息系统采用master/slave(主/从)的部署方式,针对一台主代理机设置至少一台从代理机。正常服务时,消息的生产和消费都在主代理机上完成,从机进行消息的备份,从而提高集群的可用性。
但是,当主代理机发生异常无法提供服务时,虽然消费者可连接从代理机进行消息消费,但是生产者无法连接从代理机进行消息生产。因此生产者生产的消息将无法顺利存储至原有的主代理机上,从而导致消息系统的吞吐量降低,甚至在无法顺利存储的消息数量较大时造成系统崩溃。
发明内容
本发明实施例的目的在于提供一种消息系统的主从切换方法、装置、电子设备及存储介质,以避免在主代理机发生异常时,消息系统的吞吐量降低,甚至造成系统崩溃的现象。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种消息系统的主从切换方法,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述方法包括:
接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
可选地,所述方法还包括:定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。
可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。
可选地,所述托管平台包括分布式协调服务zookeeper;所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。
可选地,所述方法还包括:预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
可选地,所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色,包括:从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
可选地,所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。
可选地,在所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色之后,还包括:在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
在本发明实施的第二方面,还提供了一种消息系统的主从切换装置,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述装置包括:
确定模块,用于接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
第一查询模块,用于根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
第二查询模块,用于在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
切换模块,用于将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
可选地,所述装置还包括:第一保存模块,用于定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。
可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。
可选地,所述托管平台包括分布式协调服务zookeeper;所述第二查询模块包括:第一映射查询单元,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;发送单元,用于当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;获取单元,用于从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。
可选地,所述装置还包括:第二保存模块,用于预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
可选地,所述第一查询模块,具体用于从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
可选地,所述第二查询模块包括:第二映射查询单元,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;第二获取单元,用于当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;选取单元,用于从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。
可选地,所述装置还包括:修改模块,用于在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
在本发明实施的又一方面,还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一所述的方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的方法。
本发明实施例提供的消息系统的主从切换方法、装置、电子设备及存储介质,接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。由此可知,本发明实施例中能够根据代理机发送的心跳消息确定代理机是否发生异常,在主代理机发生异常时,将该主代理机对应的目标从代理机的角色切换为主代理机,切换后生产者可以连接切换后的主代理机进行消息生产,消费者可以连接切换后的主代理机进行消息消费,因此切换后的主代理机能够代替发生异常的主代理机继续提供生产和消费服务,从而能够避免消息系统的吞吐量降低,避免造成系统崩溃的现象。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中的一种系统架构图。
图2为本发明实施例中的一种消息系统的主从切换方法的步骤流程图。
图3为本发明实施例中的另一种消息系统的主从切换方法的步骤流程图。
图4为本发明实施例中的再一种消息系统的主从切换方法的步骤流程图。
图5为本发明实施例中的一种消息系统的主从切换装置的结构框图。
图6为本发明实施例中的另一种消息系统的主从切换装置的结构框图。
图7为本发明实施例中的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
消息系统中包括多个代理机,代理机的角色可以包括主代理机和从代理机两种。其中可以包括至少一个主代理机,每个主代理机可以对应至少一个从代理机。本发明实施例中要对消息系统的各代理机进行检测,并在检测到主代理机发生异常时,能够将发生异常的代理机对应的目标从代理机的角色切换为主代理机。上述检测、切换角色等过程可以由故障转移服务器(Failover Server)实现。图1为本发明实施例中的一种系统架构图。图1为本发明实施例中的一种系统架构图。
如图1所示,消息系统中可以包括名称服务器(Name Server)、主代理机(MasterBroker)和与主代理机对应的从代理机(Slave Broker)。其中,名称服务器可以对接生产者和消费者,可以提供路由和负载均衡作用,当有生产者或消费者连接名称服务器时,名称服务器会选择一台主代理机,随后生产者和消费者就与主代理机建立起长连接,生产者直接将消息发到主代理机,消费者从主代理机获取消息。主代理机可以向名称服务器进行心跳上报,以便名称服务器根据主代理机的心跳确定主代理机是否正常。主代理机还可以向从代理机进行主备复制,以便将主代理机中存储的生产者生产的消息备份到从代理机中。
如图1所示,消息系统中的代理机(主代理机和从代理机)可以与故障转移服务器进行通信。代理机向故障转移服务器进行心跳上报,故障转移服务器可以根据代理机上报的心跳消息检测代理机是否发生异常,并在检测到代理机发生异常后,将发生异常的代理机对应的从代理机的角色切换为主代理机。代理机可以从故障转移服务器获取角色,从代理机可以根据获取的角色自动切换为主代理机。故障转移服务器还可以与托管平台进行通信,托管平台可以用于保存代理机的标识与角色的映射关系,并可以主动修改该映射关系。
下面,对本发明实施例中的消息系统的主从切换方法进行详细介绍。
图2为本发明实施例中的一种消息系统的主从切换方法的步骤流程图。
本发明实施例中的消息系统的主从切换方法可以包括以下步骤:
步骤201,接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识。
消息系统中的各代理机可以定时向故障转移服务器发送心跳消息。故障转移服务器接收代理机发送的心跳消息,以便确定各代理机是否发生异常。当确定出某台代理机发生异常后,故障转移服务器获取发生异常的代理机的标识。
步骤202,根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色。
故障转移服务器根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色。
步骤203,在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机。
故障转移服务器查询到发生异常的代理机的角色为主代理机时,进而查询与该发生异常的代理机对应的一个目标从代理机。
步骤204,将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
故障转移服务器查询到目标从代理机后,将该目标从代理机的角色切换为主代理机。各代理机定时向故障转移服务器发送角色获取请求,故障转移服务器在接收到某台代理机发送的角色请求后,将该发送请求的代理机的角色返回给发送请求的代理机。因此,故障转移服务器在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。目标从代理机在得知自身的角色被切换为主代理机后,重启消息系统相关的服务,重启服务后切换后的角色生效,也即该目标从代理机变为了一台主代理机,代替发生异常的主代理机继续提供服务。
其中,对于各代理机定时发送心跳消息,以及定时发送角色获取请求的时间间隔的具体数值,本领域技术人员可以根据实际经验设置任意适用的数值,本发明实施例对此不作限制。
本发明实施例中能够根据代理机发送的心跳消息确定代理机是否发生异常,在主代理机发生异常时,将该主代理机对应的目标从代理机的角色切换为主代理机,切换后生产者可以连接切换后的主代理机进行消息生产,消费者可以连接切换后的主代理机进行消息消费,因此切换后的主代理机能够代替发生异常的主代理机继续提供生产和消费服务,从而能够避免消息系统的吞吐量降低,避免造成系统崩溃的现象。
图3为本发明实施例中的另一种消息系统的主从切换方法的步骤流程图。
本发明实施例中的消息系统的主从切换方法可以包括以下步骤:
步骤301,预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
步骤302,接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识。
步骤303,根据所述发生异常的代理机的标识,从自身缓存中查询所述发生异常的代理机的角色。
步骤304,判断所述发生异常的代理机的角色是否为主代理机。若是,则执行步骤305;若否,则执行步骤308。
步骤305,在所述发生异常的代理机的角色为主代理机时,从自身缓存中查询与所述发生异常的代理机对应的目标从代理机。
步骤306,将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
步骤307,将所述发生异常的代理机的角色切换为从代理机,并在接收到所述发生异常的代理机恢复正常后发送的角色获取请求后,将切换后的角色返回至恢复正常的代理机。
步骤308,在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
步骤309,在所述发生异常的代理机恢复正常后,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为正常。
在步骤301中,预先将代理机的标识与角色的对应关系保存在故障转移服务器自身的缓存中。本发明实施例中无需利用托管平台保存代理机的标识与角色的对应关系。
在步骤302中,各代理机暴露心跳接口,定时向故障转移服务器发送心跳消息。故障转移服务器拉取代理机的心跳接口,接收各代理机发送的心跳消息,实时检测代理机是否发生异常。如果故障转移服务器在预设时间内未接收到某台代理机发送的心跳消息,则可以确定该代理机发生异常。其中,对于预设时间的具体数值,本领域技术人员可以根据实际经验设置任意适用的数值,本发明实施例对此不作限制。比如,代理机每隔1分钟发送一次心跳消息,如果连续3次未接收到某台代理机发送的心跳消息,也即在3分钟之内未接收到某台代理机发送的心跳消息,则可以确定该代理机发生异常。
故障转移服务器中可以预先保存各代理机的标识,在确定出某台代理机发生异常后,获取发生异常的代理机的标识。其中,标识可以为IP(Internet Protocol,网络之间互联的协议)地址等能够唯一标识一台代理机的信息。
在步骤303中,由于预先将代理机的标识与角色的映射关系保存至故障转移服务器的自身缓存中。因此,故障转移服务器可以从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
在步骤305中,如果步骤304中判断出发生异常的代理机的角色为主代理机,则为了保证消息系统能够继续正常运行,故障转移服务器可以从自身缓存中查询该发生异常的代理机对应的一台从代理机作为目标从代理机,将目标从代理机的角色切换为主代理机,以便代替发生异常的代理机继续提供主代理机的服务。
在实现中,故障转移服务器的自身缓存中可以保存主代理机与从代理机的映射关系,以及各代理机的状态,代理机的状态可以包括正常和异常两种。查询与所述发生异常的代理机对应的目标从代理机的步骤可以包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态,从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机;当查询到的从代理机为一个时,将查询到的从代理机作为目标从代理机。其中,从查询到的多个从代理机中选取一个状态为正常的从代理机的过程,可以为从查询到的多个从代理机中随机选取任意一个状态为正常的从代理机。
在步骤306中,故障转移服务器将自身保存的目标从代理机的角色切换为主代理机。各代理机定时向故障转移服务器发送角色获取请求,用于获取各代理机自身的角色。故障转移服务器在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色(也即主代理机角色)返回至所述目标从代理机。目标从代理机在得知自身的角色被切换后,重启消息系统相关的服务,重启服务后该目标从代理机变为了一台主代理机。切换后的主代理机可以向名称服务器进行心跳上报,后续当有生产者或消费者连接名称服务器时,名称服务器会选择切换后的主代理机,随后生产者和消费者就与切换后的主代理机建立起长连接,生产者直接将消息发到切换后的主代理机,消费者从切换后的主代理机获取消息。
在步骤307中,由于发生异常的代理机的角色为主代理机,而通常情况下主代理机为一台,因此故障转移服务器还可以将所述发生异常的代理机的角色切换为从代理机。维护人员可以对发生异常的代理机进行异常检测和修复,在修复成功后发生异常的代理机恢复正常。在发生异常的代理机恢复正常后,可以向故障转移服务器发送角色获取请求,故障转移服务器接收到该角色获取请求后,将切换后的角色(也即从代理机角色)返回至恢复正常的代理机,恢复正常的代理机即可按照从代理机的角色运行。
在步骤308中,如果步骤304中判断出所述发生异常的代理机的角色为从代理机,则故障转移服务器对自身缓存中保存的该发生异常的代理机的状态进行更新。故障转移服务器从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常,从而保证代理机状态的准确性。
在步骤309中,维护人员可以对发生异常的代理机进行异常检测和修复,在修复成功后发生异常的代理机恢复正常。由于发生异常的代理机的角色为从代理机,因此发生异常的代理机恢复正常后,故障转移服务器从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为正常。
本发明实施例中,将相关信息保存至故障转移服务器的自身缓存中,由故障转移服务器进行异常检测、角色切换等操作,避免使用较多的外部系统,有效降低对外部系统的依赖。
图4为本发明实施例中的再一种消息系统的主从切换方法的步骤流程图。
本发明实施例中的消息系统的主从切换方法可以包括以下步骤:
步骤401,定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中。
步骤402,接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识。
步骤403,根据所述发生异常的代理机的标识,从自身缓存中查询所述发生异常的代理机的角色。
步骤404,判断所述发生异常的代理机的角色是否为主代理机。若是,则执行步骤405;若否,则执行步骤408。
步骤405,在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机。
步骤406,将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
步骤407,将所述发生异常的代理机的角色切换为从代理机,并在接收到所述发生异常的代理机恢复正常后发送的角色获取请求后,将切换后的角色返回至恢复正常的代理机。
步骤408,在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
步骤409,在所述发生异常的代理机恢复正常后,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为正常。
在步骤401中,预先将代理机的标识与角色的对应关系保存在托管平台中。托管平台可以包括分布式协调服务zookeeper和/或配置中心。其中“和/或”是指两个中的至少一个。
Zookeeper是一个开源的分布式协调服务,是分布式数据一致性解决方案,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、主机(Master)选举、分布式锁和分布式队列等功能。在本发明实施例中Zookeeper可以用于保存代理机的标识与代理机的角色的映射关系,供故障转移服务器查询。
配置中心是一种统一的配置管理平台,能够集中管理应用在不同环境,不同集群下的配置,配置修改后能够实时地被获取到。支持版本管理和灰度发布,并具备规范的权限和流程管理。在本发明实施例中配置中心可以用于保存代理机的标识与代理机的角色的映射关系,供故障转移服务器查询。
托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。比如,某个主代理机发生故障,但是该故障的影响较小,不会导致该主代理机掉线,因此该主代理机还是可以正常向故障转移服务器发送心跳消息的,这种情况下故障转移服务器不能检测到该主代理机发生异常,因此故障转移服务器不会自动对代理机的标识与角色的映射关系进行修改。针对这种情况,如果维护人员想要对该主代理机进行检测和修复,则可以主动对托管平台中保存的代理机的标识与角色的映射关系进行修改,将该主代理机对应的一台从代理机的角色切换为主代理机,将该主代理机的角色切换为从代理机,之后可以对该主代理机进行检测和修复。
故障转移服务器可以定时从托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中。因此,如果维护人员主动修改了代理机的标识与角色的映射关系,则故障转移服务器可以获取到修改后的映射关系。其中,对于定时获取的时间间隔的具体数值,本领域技术人员可以根据实际经验设置任意适用的数值,本发明实施例对此不作限制。
步骤402~步骤404与上述步骤302~步骤304相同,具体参照上述的相关描述即可,本发明实施例在此不再详细论述。
在步骤405中,如果步骤404中判断出发生异常的代理机的角色为主代理机,则为了保证消息系统能够继续正常运行,故障转移服务器可以查询该发生异常的代理机对应的一台从代理机作为目标从代理机。
在一种可选实施方式中,故障转移服务器的自身缓存中可以保存主代理机与从代理机的映射关系,以及各代理机的状态,代理机的状态可以包括正常和异常两种。查询与所述发生异常的代理机对应的目标从代理机的步骤可以包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机;当查询到的从代理机为一个时,将查询到的从代理机作为目标从代理机。
在另一种可选实施方式中,Zookeeper可以提供投票选取功能,因此可以利用Zookeeper查询与发生异常的代理机对应的目标从代理机。查询与发生异常的代理机对应的目标从代理机的步骤可以包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为一个时,将查询到的从代理机作为目标从代理机;当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,zookeeper在获取到查询到的从代理机的标识后,可以根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,查询到的每个从代理机进行一个投票,zookeeper将得票数最多的从代理机作为所述目标从代理机,故障转移服务器即可从zookeeper中获取与发生异常的代理机对应的目标从代理机。
步骤406~步骤409与上述步骤306~步骤309相同,具体参照上述的相关描述即可,本发明实施例在此不再详细论述。
本发明实施例中基于Zookeeper或配置中心托管代理机的标识与角色的映射关系,不仅能够在检测到主代理机发生异常时进行角色切换,还能够支持主动进行角色切换,更好地满足用户的各种需求。
图5为本发明实施例中的一种消息系统的主从切换装置的结构框图。消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机。
本发明实施例中的消息系统的主从切换装置可以包括以下模块:
确定模块501,用于接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识。
第一查询模块502,用于根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色。
第二查询模块503,用于在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机。
切换模块504,用于将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
图6为本发明实施例中的另一种消息系统的主从切换装置的结构框图。
本发明实施例中的消息系统的主从切换可以包括以下模块:
确定模块601,用于接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识。
第一查询模块602,用于根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色。
第二查询模块603,用于在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机。
切换模块604,用于将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
可选地,所述装置还包括:第一保存模块605,用于定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。
可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。
可选地,所述托管平台包括分布式协调服务zookeeper;所述第二查询模块603包括:第一映射查询单元6031,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;发送单元6032,用于当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;获取单元6033,用于从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。
可选地,所述装置还包括:第二保存模块606,用于预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
可选地,所述第一查询模块602,具体用于从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
可选地,所述第二查询模块603包括:第二映射查询单元6034,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;第二获取单元6035,用于当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;选取单元6036,用于从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。
可选地,所述装置还包括:修改模块607,用于在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
本发明实施例中能够根据代理机发送的心跳消息确定代理机是否发生异常,在主代理机发生异常时,将该主代理机对应的目标从代理机的角色切换为主代理机,切换后生产者可以连接切换后的主代理机进行消息生产,消费者可以连接切换后的主代理机进行消息消费,因此切换后的主代理机能够代替发生异常的主代理机继续提供生产和消费服务,从而能够避免消息系统的吞吐量降低,避免造成系统崩溃的现象。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
可选地,所述方法还包括:定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。
可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。
可选地,所述托管平台包括分布式协调服务zookeeper;所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。
可选地,所述方法还包括:预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
可选地,所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色,包括:从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
可选地,所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。
可选地,在所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色之后,还包括:在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的消息系统的主从切换方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的消息系统的主从切换方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (11)
1.一种消息系统的主从切换方法,其特征在于,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述方法包括:
接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。
3.根据权利要求2所述的方法,其特征在于,所述托管平台包括分布式协调服务zookeeper和/或配置中心。
4.根据权利要求2所述的方法,其特征在于,所述托管平台包括分布式协调服务zookeeper;所述查询与所述发生异常的代理机对应的目标从代理机,包括:
从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;
当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;
从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先将所述代理机的标识与角色的映射关系保存至自身缓存中。
6.根据权利要求2或5所述的方法,其特征在于,所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色,包括:
从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。
7.根据权利要求1所述的方法,其特征在于,所述查询与所述发生异常的代理机对应的目标从代理机,包括:
从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;
当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;
从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。
8.根据权利要求1所述的方法,其特征在于,在所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色之后,还包括:
在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。
9.一种消息系统的主从切换装置,其特征在于,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述装置包括:
确定模块,用于接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
第一查询模块,用于根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
第二查询模块,用于在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
切换模块,用于将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如权利要求1-8中任一所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268888.6A CN111064608A (zh) | 2019-12-11 | 2019-12-11 | 消息系统的主从切换方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268888.6A CN111064608A (zh) | 2019-12-11 | 2019-12-11 | 消息系统的主从切换方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111064608A true CN111064608A (zh) | 2020-04-24 |
Family
ID=70298836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911268888.6A Pending CN111064608A (zh) | 2019-12-11 | 2019-12-11 | 消息系统的主从切换方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111064608A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115379012A (zh) * | 2022-10-25 | 2022-11-22 | 航天云网数据研究院(广东)有限公司 | 基于标识解析的工业互联平台消息队列部署方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665705B1 (en) * | 1999-10-19 | 2003-12-16 | International Business Machines Corporation | Method and apparatus for proxy replication |
CN103916936A (zh) * | 2013-01-04 | 2014-07-09 | 中国移动通信集团公司 | 实现数据长连接的方法、系统及移动终端、服务器 |
CN109828852A (zh) * | 2019-01-23 | 2019-05-31 | 北京奇艺世纪科技有限公司 | 一种权限管理方法、装置、系统、设备及可读存储介质 |
CN109918360A (zh) * | 2019-02-28 | 2019-06-21 | 携程旅游信息技术(上海)有限公司 | 数据库平台系统、创建方法、管理方法、设备及存储介质 |
-
2019
- 2019-12-11 CN CN201911268888.6A patent/CN111064608A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665705B1 (en) * | 1999-10-19 | 2003-12-16 | International Business Machines Corporation | Method and apparatus for proxy replication |
CN103916936A (zh) * | 2013-01-04 | 2014-07-09 | 中国移动通信集团公司 | 实现数据长连接的方法、系统及移动终端、服务器 |
CN109828852A (zh) * | 2019-01-23 | 2019-05-31 | 北京奇艺世纪科技有限公司 | 一种权限管理方法、装置、系统、设备及可读存储介质 |
CN109918360A (zh) * | 2019-02-28 | 2019-06-21 | 携程旅游信息技术(上海)有限公司 | 数据库平台系统、创建方法、管理方法、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115379012A (zh) * | 2022-10-25 | 2022-11-22 | 航天云网数据研究院(广东)有限公司 | 基于标识解析的工业互联平台消息队列部署方法及装置 |
CN115379012B (zh) * | 2022-10-25 | 2023-03-24 | 航天云网数据研究院(广东)有限公司 | 基于标识解析的工业互联平台消息队列部署方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109344014B (zh) | 一种主备切换方法、装置及通信设备 | |
US9367261B2 (en) | Computer system, data management method and data management program | |
CN110830283B (zh) | 故障检测方法、装置、设备和系统 | |
GB2407887A (en) | Automatically modifying fail-over configuration of back-up devices | |
CN110417600B (zh) | 分布式系统的节点切换方法、装置及计算机存储介质 | |
CN110958151B (zh) | 保活检测方法、装置、节点、存储介质及通信系统 | |
CN112764956B (zh) | 数据库的异常处理系统、数据库的异常处理方法及装置 | |
CN114265753A (zh) | 消息队列的管理方法、管理系统和电子设备 | |
CN116126457A (zh) | 容器迁移方法和服务器集群 | |
CN111309515B (zh) | 一种容灾控制方法、装置及系统 | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
CN112260902B (zh) | 网络设备监控方法、装置、设备及存储介质 | |
CN111064608A (zh) | 消息系统的主从切换方法、装置、电子设备及存储介质 | |
JP2010244463A (ja) | イベント検出制御方法及びシステム | |
CN117370316A (zh) | 数据库的高可用管理方法和装置、电子设备及存储介质 | |
CN113055203B (zh) | Sdn控制平面的异常恢复方法及装置 | |
CN112231123A (zh) | 消息处理方法、装置、存储介质及电子装置 | |
CN111064609A (zh) | 消息系统的主从切换方法、装置、电子设备及存储介质 | |
US20190124145A1 (en) | Method and apparatus for availability management | |
CN114443438A (zh) | 节点状态的检测方法、节点异常的处理方法及装置 | |
CN110650059B (zh) | 故障群集检测方法、装置、计算机设备和存储介质 | |
CN113794595A (zh) | 一种基于工业互联网的IoT设备高可用方法 | |
CN113064950A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
JP2013003956A (ja) | 故障復旧管理装置、故障復旧管理方法及び故障復旧管理プログラム | |
JP2008226153A (ja) | コンピュータ冗長システム |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200424 |