消息系统的主从切换方法、装置、电子设备及存储介质制造方法及图纸

技术编号:23938300 阅读:31 留言:0更新日期:2020-04-25 04:01
本发明专利技术实施例提供了一种消息系统的主从切换方法、装置、电子设备及存储介质。其中方法包括:接收代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。本发明专利技术实施例能够避免消息系统的吞吐量降低,避免造成系统崩溃的现象。

Master-slave switching method, device, electronic equipment and storage medium of message system

【技术实现步骤摘要】
消息系统的主从切换方法、装置、电子设备及存储介质
本专利技术涉及数据处理
,特别是涉及消息系统的主从切换方法、装置、电子设备及存储介质。
技术介绍
消息系统是一个消息订阅和发布的系统,消息系统中包括代理机(Broker)。将消息的发布表述为生产,将消息的订阅表述为消费,将中间的存储称作代理机。生产者将消息生产出来,发给消息系统的代理机进行存储,消费者需要消费消息时,就从代理机中取出所需的消息。消息系统是解耦各系统通信的基础分布式中间件,它的稳定与可靠直接关系着企业相关各系统的正常运行。在互联网系统环境下,对各系统的容灾提出了更严格的要求,主从互备是容灾中常见的部署方式。消息系统采用master/slave(主/从)的部署方式,针对一台主代理机设置至少一台从代理机。正常服务时,消息的生产和消费都在主代理机上完成,从机进行消息的备份,从而提高集群的可用性。但是,当主代理机发生异常无法提供服务时,虽然消费者可连接从代理机进行消息消费,但是生产者无法连接从代理机进行消息生产。因此生产者生产的消息将无法顺利存储至原有的主代理机上,从而导致消息系统的吞吐量降低,甚至在无法顺利存储的消息数量较大时造成系统崩溃。
技术实现思路
本专利技术实施例的目的在于提供一种消息系统的主从切换方法、装置、电子设备及存储介质,以避免在主代理机发生异常时,消息系统的吞吐量降低,甚至造成系统崩溃的现象。具体技术方案如下:在本专利技术实施的第一方面,首先提供了一种消息系统的主从切换方法,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述方法包括:接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。可选地,所述方法还包括:定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。可选地,所述托管平台包括分布式协调服务zookeeper;所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。可选地,所述方法还包括:预先将所述代理机的标识与角色的映射关系保存至自身缓存中。可选地,所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色,包括:从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。可选地,所述查询与所述发生异常的代理机对应的目标从代理机,包括:从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。可选地,在所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色之后,还包括:在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。在本专利技术实施的第二方面,还提供了一种消息系统的主从切换装置,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述装置包括:确定模块,用于接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;第一查询模块,用于根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;第二查询模块,用于在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;切换模块,用于将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。可选地,所述装置还包括:第一保存模块,用于定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。可选地,所述托管平台包括分布式协调服务zookeeper和/或配置中心。可选地,所述托管平台包括分布式协调服务zookeeper;所述第二查询模块包括:第一映射查询单元,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;发送单元,用于当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;获取单元,用于从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。可选地,所述装置还包括:第二保存模块,用于预先将所述代理机的标识与角色的映射关系保存至自身缓存中。可选地,所述第一查询模块,具体用于从自身缓存的所述代理机的标识与角色的映射关系中,查询所述发生异常的代理机的标识对应的角色,作为所述发生异常的代理机的角色。可选地,所述第二查询模块包括:第二映射查询单元,用于从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;第二获取单元,用于当查询到的从代理机为多个时,从自身缓存的所述代理机的状态中,获取查询到的各从代理机的状态;选取单元,用于从查询到的从代理机中选取一个状态为正常的从代理机,作为所述目标从代理机。可选地,所述装置还包括:修改模块,用于在所述发生异常的代理机的角色为从代理机时,从自身缓存的所述代理机的状态中,获取所述发生异常的代理机的状态,将所述发生异常的代理机的状态修改为异常。在本专利技术实施的又一方面,还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一所述的方法。在本专利技术实施的又一本文档来自技高网...

【技术保护点】
1.一种消息系统的主从切换方法,其特征在于,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述方法包括:/n接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;/n根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;/n在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;/n将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。/n

【技术特征摘要】
1.一种消息系统的主从切换方法,其特征在于,所述消息系统中包括代理机,所述代理机的角色包括主代理机和从代理机,所述方法包括:
接收所述代理机发送的心跳消息,确定所述代理机是否发生异常,并在所述代理机发生异常后获取发生异常的代理机的标识;
根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色;
在所述发生异常的代理机的角色为主代理机时,查询与所述发生异常的代理机对应的目标从代理机;
将所述目标从代理机的角色切换为主代理机,并在接收到所述目标从代理机发送的角色获取请求后,将切换后的角色返回至所述目标从代理机。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定时从预设托管平台中获取所述代理机的标识与角色的映射关系,并将获取的映射关系保存至自身缓存中;所述托管平台中保存的所述代理机的标识与角色的映射关系允许外部修改。


3.根据权利要求2所述的方法,其特征在于,所述托管平台包括分布式协调服务zookeeper和/或配置中心。


4.根据权利要求2所述的方法,其特征在于,所述托管平台包括分布式协调服务zookeeper;所述查询与所述发生异常的代理机对应的目标从代理机,包括:
从自身缓存的主代理机与从代理机的映射关系中,查询所述发生异常的代理机对应的从代理机;
当查询到的从代理机为多个时,将查询到的从代理机的标识发送至所述zookeeper,以使所述zookeeper根据所述查询到的从代理机的标识通知各查询到的从代理机分别进行投票,并将得票数最多的从代理机作为所述目标从代理机;
从所述zookeeper中获取与所述发生异常的代理机对应的目标从代理机。


5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先将所述代理机的标识与角色的映射关系保存至自身缓存中。


6.根据权利要求2或5所述的方法,其特征在于,所述根据所述发生异常的代理机的标识,查询所述发生异常的代理机的角色,包括:
从自身缓存的所述代理机的标识与角色的映...

【专利技术属性】
技术研发人员:冯浩姜智慧
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1