【技术实现步骤摘要】
一种消息中间件容灾处理方法、装置以及设备
[0001]本说明书涉及消息中间件
,尤其涉及一种消息中间件容灾处理方法、装置以及设备。
技术介绍
[0002]在互联网行业,为了处理大量高并发的数据,通常会使用到消息中间件。比如,kafka作为一款分布式、多副本、支持海量数据处理的消息中间件,被很多公司广泛使用。kafka作为连接公司上下游应用的核心组件,需要增强其容灾能力以保证服务的可用性。
[0003]为了增强容灾能力,通常的做法是采用多机房部署,通过将服务部署在多个机房,当本地机房服务整体宕机时,隔壁机房的服务还可以继续提供服务。
[0004]kafka服务端部署在多个机房,而kafka客户端也部署在多个机房,多个机房同一个主题(Topic)对应的生产者和消费者是相同的,生产者和消费者可以访问整个kafka集群分布在不同机房的部分,来收发消息。
[0005]而多机房部署面临的一个核心问题就是异地机房之间的网络访问耗时大,比如使得kafka客户端访问kafka服务时经常容易出现超时,基于此,需要更 ...
【技术保护点】
【技术特征摘要】
1.一种消息中间件容灾处理方法,在第一机房、第二机房内分别部署有一套消息中间件集群,以及消息生产客户端和消息消费客户端,每套所述消息中间件集群包含多个消息服务端,所述方法包括:所述第一机房的消息生产客户端,在自身所在的机房内确定第一分区的主副本所在的一个或多个消息服务端,在正常情况下,生产机房内用消息,并发送至所述第一机房的所述一个或多个消息服务端上;所述第二机房的消息生产客户端,在自身所在的机房内确定所述第一分区的主副本所在的一个或多个消息服务端,在正常情况下,生产机房内用消息,并发送至所述第二机房的所述一个或多个消息服务端上;所述第一机房的消息消费客户端,消费从所述第一机房内的所述第一分区的主副本获取的机房内用消息;所述第二机房的消息消费客户端,消费从所述第二机房内的所述第一分区的主副本获取的机房内用消息;所述第一机房的消息生产客户端,若对应的所述第一机房的消息服务端不可用,则生产跨机房用消息,并发送至所述第二机房内的所述第一分区的主副本;所述第二机房的消息消费客户端,消费从所述第二机房内的所述第一分区的主副本获取的跨机房用消息。2.如权利要求1所述的方法,所述在自身所在的机房内确定第一分区的主副本,具体包括:在自身所在的机房内确定指定主题的第一分区的主副本,不同机房的消息生产客户端确定的所述第一分区对应的所述指定主题是同一个主题。3.如权利要求2所述的方法,所述指定主题分别处于对应机房内的多个消息服务端上;所述在自身所在的机房内确定指定主题的第一分区的主副本,具体包括:在自身所在的机房内确定指定主题;确定所述指定主题的多个分区中当前作为目标分区的第一分区,其中,在不同的机房内当前均将自身所在机房内的所述第一分区作为目标分区;在自身所在的机房内多个消息服务端上具有的所述目标分区中,确定作为处于主导地位的目标分区,作为所述指定主题的所述第一分区的主副本。4.如权利要求1或2所述的方法,对于同一个机房,该机房内的指定主题的多个分区各自的主副本,处于该机房内不同的消息服务端上;并且,所述多个分区中的每个分区在至少一个其他机房内也具有主副本。5.如权利要求2所述的方法,还包括:所述第一机房的消息消费客户端,若所述第二机房的消息消费客户端不可用,则从所述第一机房的所述指定主题的所述第一分区的主副本,获取所述第一机房的消息生成客户端生成的机房内用消息,并消费所述机房内用消息,并且,也从所述第二机房的所述指定主题的所述第一分区的主副本,获取所述第二机房的消息生成客户端生成的消息,并消费所述消息。6.如权利要求2所述的方法,还包括:所述第二机房的消息生产客户端,若对应的所述第一机房的消息生产客户端不可用,则仍生产消息,作为机房内用消息,并发送至所述第二机房的所述指定主题的所述第一分区的主副本,但是,不发送至所述第一机房。
7.如权利要求6所述的方法,所述若对应的所述第一机房的消息生产客户端不可用之后,所述方法还包括:所述第二机房的消息消费客户端,从所述第二机房的所述指定主题的所述第一分区的主副本,获取所述第二机房的消息生成客户端生成的所述机房内用消息,并消费所述机房内用消息;所述第一机房的消息消费客户端,不跨机房消费所述第二机房的消息生产客户端生产的消息。8.如权利要求2所述的方法,所述第一机房与所述第二机房互为异地机房;所述消息中间件为分布式多副本的消息中间件,所述主题为消息分类得到的队列。9.一种消息中间件容灾处理装置,在第一机房、第二机房内分别部署有一套消息中间件集群,以及消息生产客户端和消息消费客户端,每套所述消息中间件集群包含多个消息服务端,所述装置包括:属于所述第一机房的消息生产客户端的消息生产发送模块,在自身所在的机房内确定第一分区的主副本所在的一个或多个消息服务端,在正常情况下,生产机房内用消息,并发送至所述第一机房的所述一个或多个消息服务端上;属于所述第二机房的消息生产客户端的消息生产发送模块,在自身所在的机房内确定所述第一分区的主副本所在的一个或多个消息服务端,在正常情况下,生产机房内用消息,并发送至所述第二机房的所述一个或多个消息服务端上;属于所述第一机房的消息消费客户端的消息收敛消费模块,消费从所述第一机房内的所述第一分区的主副本获取的机房内用消息;属于所述第二机房的...
【专利技术属性】
技术研发人员:邱聪荣,
申请(专利权)人:蚂蚁区块链科技上海有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。