CN114827017B - Kafka集群的通信方法、装置、电子设备和存储介质 - Google Patents
Kafka集群的通信方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114827017B CN114827017B CN202210337895.2A CN202210337895A CN114827017B CN 114827017 B CN114827017 B CN 114827017B CN 202210337895 A CN202210337895 A CN 202210337895A CN 114827017 B CN114827017 B CN 114827017B
- Authority
- CN
- China
- Prior art keywords
- target
- route
- communication connection
- worker node
- kafka cluster
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 160
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000003068 static effect Effects 0.000 claims abstract description 53
- 230000004044 response Effects 0.000 claims description 52
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种Kafka集群的通信方法、装置、电子设备和存储介质。所述Kafka集群部署于k8s集群中的worker节点上,该方法包括:获取目标Kafka集群中目标broker的路由;基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点。该方法能够消费故障broker内的消息,避免故障broker内的消息丢失。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种Kafka集群的通信方法、装置、电子设备和存储介质。
背景技术
Kafka是一种高吞吐量的分布式发布/订阅消息系统,能够支撑海量数据的数据传递,Kafka因其优良的性能和数据稳定性,得到了广泛的使用。Kubernetes平台又称为k8s,是一种用于自动部署、扩展和管理容器化应用程序的开源系统,可以将Kafka部署在k8s中,供业务方调用。
现有技术中,Kafka在k8s里面以无状态服务的方式部署,然而,当Kafka某一节点挂掉时,k8s重启后无法连接该节点,此节点上的消息无法消费导致消息丢失。
发明内容
本公开提供了一种Kafka集群的通信方法、装置、电子设备和存储介质,能够消费故障broker内的消息,避免故障broker内的消息丢失。
第一方面,本公开提供了一种Kafka集群的通信方法,所述Kafka集群部署于k8s集群中的worker节点上;
所述方法,包括:
获取目标Kafka集群中目标broker的路由;
基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点。
可选的,所述获取目标Kafka集群中目标broker的目标路由之前,还包括:
若所述目标Kafka集群与所述外部服务的通信连接中断,确定故障broker的路由;
基于所述故障broker的路由,确定所述目标broker的路由。
可选的,所述基于所述故障broker的路由,确定所述目标broker的路由,包括:
基于所述故障broker的路由,从broker路由表中确定所述目标broker的路由,所述broker路由表包括所述目标Kafka集群中的所有broker的路由。
可选的,所述基于所述故障broker的路由,确定所述目标broker的路由,包括:
基于路由生成规则和所述故障broker的路由,生成所述目标broker的路由。
可选的,所述基于所述目标broker的路由和所述目标worker节点的静态路由,建立与外部服务的通信连接,包括:
基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;
若接收到所述外部服务发送的通信连接请求响应,成功建立与所述外部服务的通信连接。
可选的,所述基于所述目标broker的路由和所述目标worker节点的静态路由,建立与外部服务的通信连接,包括:
基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;
若未接收到所述外部服务发送的通信连接请求响应,重复执行接收所述外部服务发送的通信连接请求响应,直至满足预设条件。
可选的,所述预设条件为在预设次数内接收到所述通信连接请求响应,或者,未接收到所述通信连接请求响应的次数等于所述预设次数。
第二方面,本公开提供了一种Kafka集群的通信装置,所述Kafka集群部署于k8s集群中的worker节点上;
所述通信装置包括:
获取模块,用于获取目标Kafka集群中目标broker的路由;
通信模块,用于基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点。
第三方面,本公开提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面提供的任一种方法的步骤。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面提供的任一种方法的步骤。
本公开提供的技术方案中,通过获取目标Kafka集群中目标broker路由;基于目标broker路由和目标worker节点的静态路由,建立与外部服务的通信连接,故障broker所在的worker节点的静态路由不会发生变化,使得Kafka集群中的故障broker重启后基于该静态路由以及目标broker的路由仍然可以建立Kafka集群与外部服务的通信连接,使得外部服务可以继续消费故障broker内的消息,避免故障broker内的消息丢失。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开提供的一种应用场景的结构示意图;
图2为本公开提供的一种Kafka集群的通信方法的流程示意图;
图3为本公开提供的另一种Kafka集群的通信方法的流程示意图;
图4为本公开提供的又一种Kafka集群的通信方法的流程示意图;
图5为本公开提供的又一种Kafka集群的通信方法的流程示意图;
图6为本公开提供的又一种Kafka集群的通信方法的流程示意图;
图7为本公开提供的又一种Kafka集群的通信方法的流程示意图;
图8为本公开提供的一种Kafka集群的通信装置的结构示意图;
图9本公开提供的一种电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
以下通过几个具体的实施例,对本公开的技术方案进行详细的解释说明。
Kafka是一种高吞吐量的分布式发布/订阅消息系统,能够支撑海量数据的数据传递。Kafka集群中包括一个或多个broker,broker为消息中间件处理节点,一个Kafka节点就是一个broker,Kafka集群根据主题可以对接收到的消息进行归类,一个主题可以分为多个分区,每个分区内部消息是有序的。Kafka集群的上游客户端为消息生产者,Kafka集群的下游客户端为消息消费者,Kafka集群中的broker可以接收消息生产者发送的消息,同时还可以向消息消费者发送消息。
k8s又称Kubernetes,是一种用于自动部署、扩展和管理容器化应用程序的开源系统,主要提供服务的部署、弹性和管理,具有可以部署应用、扩展机制和维护等多种功能,使得跨机器运行的容器化的应用可以更加方便管理。k8s的核心功能包括:服务发现和负载均衡,服务自动装箱,容器存储编排,容器故障恢复,自动发布和回滚,配置和密钥存储,服务水平伸缩,批量执行以及守护进程任务,探针。
k8s集群中包括master节点和worker节点,其中,master节点指的是集群控制节点,用于管理和控制整个k8s集群,基本上k8s的所有控制命令都发给master节点,master节点负责具体的执行过程,除了master节点外的节点称为worker节点,每个worker节点都会被master节点分配一些工作负载,当某个worker节点宕机时,该节点上的工作负载就会被master节点自动转移到其它worker节点上。
图1为本公开提供的一种应用场景的结构示意图,如图1所示,Kafka集群部署于k8s集群的worker节点上。示例性的,如图1所示,k8s集群中包括三个worker节点,分别为worker节点1、worker节点2和worker节点3,应用场景中包括三个Kafka集群,分别为Kafka集群1、Kafka集群2和Kafka集群3。其中,Kafka集群1部署于worker节点1,Kafka集群2部署于worker节点2,Kafka集群3部署于worker节点3。
示例性的,如图1所示,目标worker节点为worker节点1,部署于worker节点1上的Kafka集群1为目标Kafka集群,目标Kafka集群中包括三个broker,分别为broker1、broker2和broker3,目标broker为broker1、broker2和broker3中的任一个。例如,目标Kafka集群中的broker1发生故障,需要重现建立broker1与外部服务的通信连接,则目标broker为broker1。
需要说明的是,本实施例中仅以k8s集群中包括三个worker节点以及Kafka集群中包括三个broker对应用场景进行示例性说明,并不作为对应用场景的具体限制。还需要说明的是,本实施例中以k8s集群中的每个worker节点中均部署有Kafka集群为例进行说明,在实际应用中,还可以是k8s集群中的部分worker节点中部署有Kafka集群,本实施例对此不作具体限制。
本公开中,通过获取目标Kafka集群中目标broker路由;基于目标broker路由和目标worker节点的静态路由,建立与外部服务的通信连接,故障broker所在的worker节点的静态路由不会发生变化,使得Kafka集群中的故障broker重启后基于该静态路由以及目标broker的路由仍然可以建立Kafka集群与外部服务的通信连接,使得外部服务可以继续消费故障broker内的消息,避免故障broker内的消息丢失。
下面以几个具体的实施方式来描述本公开中的技术方案:
图2为本公开提供的一种Kafka集群的通信方法的流程示意图,图2所示的实施例应用于如图1所示的场景中,如图2所示,具体的方法步骤包括:
S101,获取目标Kafka集群中目标broker的路由。
示例性的,目标Kafka集群为如图1所示的应用场景中任一个Kafka集群,例如,Kafka集群1与外部服务的通信连接突然中断,可以将Kafka集群1作为目标Kafka集群。目标broker可以为目标Kafka集群中的任一个broker,例如,基于上述实施例,Kafka集群1中的broker1与外部服务的通信连接突然中断,则可以将broker1作为目标broker,还可以将Kafka集群1中broker1之外的任一个broker作为目标broker。
需要说明的是,本实施例中以与外部服务的通信连接发生中断的Kafka集群为目标Kafka集群,以目标Kafka集群中与外部服务的通信连接发生中断的broker为目标broker为例,对目标Kafka集群和目标broker进行示例性说明,并不作为对目标Kafka集群和目标broker的具体限制。
S103,基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接。
所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点。
目标Kafka集群部署于k8s集群中的目标worker节点上,目标worker节点可以为一个服务器,如此,可以获取到该服务器的物理地址或者静态网际互连协议(InternetProtocol,IP)地址,可以将该服务器的物理地址和/或静态IP地址作为目标worker节点的静态路由。即使目标worker节点重启,或者部署于目标worker节点上的目标Kafka集群重启,或者目标Kafka集群中的任一broker重启,目标worker节点的静态路由不会发生变化。
根据目标broker路由和目标worker节点的静态路由,可以确定出目标broker与外部服务通信连接时的IP地址,基于此IP地址,可以基于目标broker建立目标Kafka集群与外部服务的通信连接。目标worker节点的静态路由不会发生变化,无论在该目标Kafka集群内的目标broker路由是否变化,都不会影响目标Kafka集群与外部服务的通信连接,如此,即使重启目标Kafka集群中的故障broker,目标Kafka集群仍然可以基于目标worker节点的静态路由和外部服务建立通信连接。由于目标Kafka集群中的所有broker中均存储有故障broker内的消息,因此,外部服务与目标Kafka集群中任一broker通信连接,均可以继续消费故障broker内的消息,避免故障broker内的消息丢失。
本实施例中,通过获取目标Kafka集群中目标broker路由;基于目标broker路由和目标worker节点的静态路由,建立与外部服务的通信连接,故障broker所在的worker节点的静态路由并不会发生变化,使得Kafka集群中的故障broker重启后基于该静态路由以及目标broker的路由仍然可以建立Kafka集群与外部服务的通信连接,使得外部服务可以继续消费故障broker内的消息,避免故障broker内的消息丢失。
图3为本公开提供的另一种Kafka集群的通信方法的流程示意图,图3为图2所示实施例的基础上,执行S101之前,还包括:
S201,若所述目标Kafka集群与所述外部服务的通信连接中断,确定故障broker的路由。
示例性的,目标Kafka集群通过broker1与外部服务建立通信连接,如此,目标Kafka集群基于broker1的路由和目标worker节点的静态路由,与外部服务建立通信连接。若broker1发生故障,导致目标Kafka集群与外部服务的通信连接中断,此时,broker1为故障broker,则broker1的路由即为故障broker的路由。
S202,基于所述故障broker的路由,确定所述目标broker的路由。
示例性的,重启故障broker后,可以将故障broker作为目标broker,则故障broker的路由即为目标broker的路由。如此,无需重新确定目标broker的路由,实现方式简单、快捷。
在其他实施方式中,重启故障broker后,可以将目标Kafka集群中的故障broker之外的任一broker作为目标broker,基于故障broker的路由,可以确定出目标broker的路由。如此,可以重新确定目标broker的路由,即重新确定目标broker,避免故障broker不可预见的故障再次造成通信中断,使得目标Kafka具体较高的稳定性。
作为执行S202时的一种可能的实现方式的具体描述,如图4所示:
S202’,基于所述故障broker的路由,从broker路由表中确定所述目标broker的路由。
所述broker路由表包括所述目标Kafka集群中的所有broker的路由。
示例性的,基于bootstrap.servers指定目标Kafka集群中的broker的地址清单,地址的格式为host:port,broker的地址即为broker的路由,地址清单即为broker路由表,broker路由表中包括目标Kafka集群中所有broker的路由。例如,目标Kafka集群中包括broker1、broker2和broker3,broker1的路由为路由1,broker2的路由为路由2,broker3的路由为路由3,则broker路由表中包括路由1、路由2和路由3。
示例性的,可以将目标Kafka集群中故障broker之外的broker作为目标broker,如此,可以从broker路由表中确定故障broker的路由之外的任一broker的路由为目标broker的路由。例如,基于上述实施例,故障broker为broker1,broker1的路由为路由1,则故障broker的路由为路由1,可以确定路由2为目标broker的路由,或者,可以确定路由3为目标broker的路由。
基于目标broker的路由可以建立目标broker与外部服务的通信连接,目标broker和故障broker处于同一Kafka集群中,则故障broker内存储的消息同样存储于目标broker中,如此,外部服务消费目标broker中的消息,即消费故障broker中的消息。将故障broker之外的broker作为目标broker,建立与外部服务的通信连接,可以提升目标Kafka集群的稳定性。
本实施例中,通过基于故障broker的路由,从broker路由表中确定目标broker的路由,broker路由表包括目标Kafka集群中的所有broker的路由,如此可以从broker路由表中查找得到目标broker的路由,无需进行复杂的计算,实现方式简单快捷。
作为执行S202时的另一种可能的实现方式的具体描述,如图5所示:
S202”,基于路由生成规则和所述故障broker的路由,生成所述目标broker的路由。
示例性的,目标Kafka集群中预设有broker的路由生成规则,该路由生成规则用于在Kafka集群内部分配任务时,按照一定的规则生成broker的IP,使得一个Kafka集群内的broker的IP之间有相关性,该路由生成规则属于已有技术,在此不做赘述。基于路由生成规则,可以生成目标Kafka集群中所有broker的路由,各broker基于生成的broker的路由可以建立通信连接。如此,在故障broker的路由的基础上,根据预设的路由生成规则,可以生成一个不同于故障broker的路由的broker的路由,则生成的路由为目标broker的路由。
基于目标broker的路由可以建立目标broker与外部服务的通信连接,目标broker和故障broker处于同一Kafka集群中,则故障broker内存储的消息同样存储于目标broker中,如此,外部服务消费目标broker中的消息,即消费故障broker中的消息。将故障broker之外的broker作为目标broker,建立与外部服务的通信连接,可以提升目标Kafka集群的稳定性。
本实施例中,通过基于路由生成规则和故障broker的路由,生成目标broker的路由,无需存储大量的broker的路由,节省内存空间。
图6为本公开提供的又一种Kafka集群的通信方法的流程示意图,图6为图2所示实施例的基础上,执行S103时的一种可能的实现方式的具体描述,如下:
S301,基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求。
示例性的,基于目标broker的路由和目标worker节点的静态路由,确定出目标broker的IP地址,基于目标broker的IP地址,向外部服务发送通信连接请求。例如,目标broker的路由为路由1,目标worker节点的静态路由为静态路由1,确定目标broker的IP地址为静态路由1+路由1,目标Kafka集群基于静态路由1+路由1将通信连接请求发送至消息生产者。
需要说明的是,本实施例仅以消息生产者为例对外部服务进行示例性说明,在实际应用中外部服务还可以是消息消费者。
若外部服务为消息生产者,可以基于buffer.memory参数用来设置消息生产者内存缓冲区的大小,消息生产者内存缓冲区用于缓冲要发送到目标Kafka集群的消息。如果消息生产者接收消息的速度超过发送到目标Kafka集群的速度,会导致消息生产者空间不足。这个时候,send()方法调用要么被阻塞,要么抛出异常,具体产生的异常的类型取决于block.on.buffer.null参数的设置。
S302,若接收到所述外部服务发送的通信连接请求响应,成功建立与所述外部服务的通信连接。
示例性的,消息生产者接收到目标Kafka集群发送的通信连接请求后,基于通信连接请求可以生成通信连接请求响应,并将通信连接请求响应返回给目标Kafka集群。若目标Kafka集群能够接收到消息生产者发送的通信连接请求响应,则可以基于接收到的通信连接请求响应,成功建立与消息生产者之间的通信连接。目标Kafka集群成功建立与消息生产者之间的通信连接后,可以接收到消息生产者发送的消息。
在其他实施方式中,消息消费者接收到目标Kafka集群发送的通信连接请求后,基于通信连接请求可以生成通信连接请求响应,并将通信连接请求响应返回给目标Kafka集群。若目标Kafka集群能够接收到消息消费者发送的通信连接请求响应,则可以基于接收到的通信连接请求响应,成功建立与消息消费者之间的通信连接。目标Kafka集群成功建立与消息消费者之间的通信连接后,可以向消息消费者发送消息,即消息消费者可以消费目标Kafka集群内的消息。
图7为本公开提供的又一种Kafka集群的通信方法的流程示意图,图7为图2所示实施例的基础上,执行S103时的另一种可能的实现方式的具体描述,如下:
S301,基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求。
示例性的,基于目标broker的路由和目标worker节点的静态路由,确定出目标broker的IP地址,基于目标broker的IP地址,向外部服务发送通信连接请求。例如,目标broker的路由为路由1,目标worker节点的静态路由为静态路由1,确定目标broker的IP地址为静态路由1+路由1,目标Kafka集群基于静态路由1+路由1将通信连接请求发送至消息生产者。
需要说明的是,本实施例仅以消息生产者为例对外部服务进行示例性说明,在实际应用中外部服务还可以是消息消费者。
S302’,若接收到所述外部服务发送的通信连接请求响应,重复执行接收所述外部服务发送的通信连接请求响应,直至满足预设条件。
示例性的,消息生产者接收到目标Kafka集群发送的通信连接请求后,基于通信连接请求可以生成通信连接请求响应,并将通信连接请求响应返回给目标Kafka集群。若分区找不到首领或者IP地址不可达,目标Kafka集群无法接收到外部服务发送的通信连接请求响应,若IP地址可达且分区可以找到首领,目标Kafka集群可以接收到外部服务发送的通信连接请求响应。
一些实施例中,预设条件为目标Kafka集群在预设次数内接收到通信连接请求响应。若目标Kafka集群第1次接收未接收到外部服务发送的通信连接请求响应,即第1次通信连接建立失败,则消息生产者可以在预设次数内重新发送通信连接请求响应。消息生产者每发送一次通信连接请求响应,目标Kafka集群尝试接收一次外部服务发送的通信连接请求响应,直至预设次数内消息生产者发送的通信连接请求响应被目标Kafka集群接收到,此时,目标Kafka集群成功建立与外部服务的通信连接。
示例性的,可以基于retries参数设置消息生产者的重发次数,即预设次数,消息生产者重发的数据不仅可以是通信连接请求响应,而且还可以是成功建立连接后发送的消息。默认情况下,消息生产者重发通信连接请求响应的时间间隔为100ms,这个时间间隔可以通过retry.backoff.ms进行修改。
例如,预设次数为3,目标Kafka集群第1次接收未接收到外部服务发送的通信连接请求响应,则消息生产者重新发送通信连接请求响应,目标Kafka集群第2次尝试接收外部服务发送的通信连接请求响应,若第2次尝试接收时接收到外部服务发送的通信连接请求响应,则成功建立与消息生产者的通信连接。
在一些实施例中,预设条件为目标Kafka集群未接收到通信连接请求响应的次数等于所述预设次数。若目标Kafka集群第1次接收未接收到外部服务发送的通信连接请求响应,即第1次通信连接建立失败,则消息生产者可以在预设次数内重新发送通信连接请求响应。消息生产者每发送一次通信连接请求响应,目标Kafka集群尝试接收一次外部服务发送的通信连接请求响应,直至消息生产者重复发送的次数达到设置的重发次数,消息生产者会放弃重新发送并返回错误,而目标Kafka集群在预设次数时仍未接收到通信连接请求响应,此时,与外部服务的通信连接建立失败。
例如,预设次数为3,目标Kafka集群第1次接收未接收到外部服务发送的通信连接请求响应,则消息生产者重新发送通信连接请求响应,目标Kafka集群再次尝试接收外部服务发送的通信连接请求响应,若目标Kafka集群第2次和第3次尝试接收时均未接收到外部服务发送的通信连接请求响应,则与消息生产者的通信连接建立失败。
可选的,外部服务为消息消费者,基于enable.auto.commit可指定消息消费者是否自动提交偏移量,默认值是true,为了尽量避免出现重复数据和数据丢失,可以把它设置为false,由自己控制何时提交偏移量。若enable.auto.commit为false,由业务发送ack,保证数据高可用。如果enable.auto.commit为true,还可以通过auto.commit.interval.ms属性来控制提交的频率。
本公开还提供一种Kafka集群的通信装置,图8为本公开提供的一种Kafka集群的通信装置的结构示意图,图8所示的实施例应用于如图1所示的场景中,如图8所示,Kafka集群的通信装置包括:
获取模块110,用于获取目标Kafka集群中目标broker的路由获取目标指令,所述目标指令用于指示生成目标测试用例。
调用通信模块120,用于基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点。
可选的,Kafka集群的通信装置,还包括:
确定模块,用于若所述目标Kafka集群与所述外部服务的通信连接中断,确定故障broker的路由;基于所述故障broker的路由,确定所述目标broker的路由。
可选的,确定模块,进一步用于基于所述故障broker的路由,从broker路由表中确定所述目标broker的路由,所述broker路由表包括所述目标Kafka集群中的所有broker的路由。
可选的,确定模块,进一步用于基于路由生成规则和所述故障broker的路由,生成所述目标broker的路由。
可选的,通信模块120,进一步用于基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;若接收到所述外部服务发送的通信连接请求响应,成功建立与所述外部服务的通信连接。
可选的,通信模块120,进一步用于基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;若未接收到所述外部服务发送的通信连接请求响应,重复执行接收所述外部服务发送的通信连接请求响应,直至满足预设条件。
可选的,所述预设条件为在预设次数内接收到所述通信连接请求响应,或者,未接收到所述通信连接请求响应的次数等于所述预设次数。
本公开提供的通信装置,可用于执行上述方法实施例的步骤,其实现原理和技术效果类似,此处不再赘述。
本公开还提供一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现上述方法实施例的步骤。
图9本公开提供的一种电子设备的结构示意图,图9示出了适于用来实现本发明实施例实施方式的示例性电子设备的框图。图9示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器16,系统存储器28,连接不同系统组件(包括系统存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例所描述的实施例中的功能和/或方法。
处理器16通过运行存储在系统存储器28中的多个程序中的至少一个程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的方法实施例。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例的步骤。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)域连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本公开还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行实现上述方法实施例的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Kafka集群的通信方法,其特征在于,所述Kafka集群部署于k8s集群中的worker节点上;
所述方法,包括:
获取目标Kafka集群中目标broker的路由;
基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点,所述目标worker节点的静态路由为所述目标worker节点的物理地址和/或所述目标worker节点的静态IP地址。
2.根据权利要求1所述的方法,其特征在于,所述获取目标Kafka集群中目标broker的目标路由之前,还包括:
若所述目标Kafka集群与所述外部服务的通信连接中断,确定故障broker的路由;
基于所述故障broker的路由,确定所述目标broker的路由。
3.根据权利要求2所述的方法,其特征在于,所述基于所述故障broker的路由,确定所述目标broker的路由,包括:
基于所述故障broker的路由,从broker路由表中确定所述目标broker的路由,所述broker路由表包括所述目标Kafka集群中的所有broker的路由。
4.根据权利要求2所述的方法,其特征在于,所述基于所述故障broker的路由,确定所述目标broker的路由,包括:
基于路由生成规则和所述故障broker的路由,生成所述目标broker的路由。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述基于所述目标broker的路由和所述目标worker节点的静态路由,建立与外部服务的通信连接,包括:
基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;
若接收到所述外部服务发送的通信连接请求响应,成功建立与所述外部服务的通信连接。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述基于所述目标broker的路由和所述目标worker节点的静态路由,建立与外部服务的通信连接,包括:
基于所述目标broker的路由和所述目标worker节点的静态路由,向所述外部服务发送通信连接请求;
若未接收到所述外部服务发送的通信连接请求响应,重复执行接收所述外部服务发送的通信连接请求响应,直至满足预设条件。
7.根据权利要求6所述的方法,其特征在于,所述预设条件为在预设次数内接收到所述通信连接请求响应,或者,未接收到所述通信连接请求响应的次数等于所述预设次数。
8.一种Kafka集群的通信装置,其特征在于,所述Kafka集群部署于k8s集群中的worker节点上;
所述通信装置,包括:
获取模块,用于获取目标Kafka集群中目标broker的路由;
通信模块,用于基于所述目标broker的路由和目标worker节点的静态路由,建立与外部服务的通信连接,所述目标worker节点为所述k8s集群中部署所述目标Kafka集群的worker节点,所述目标worker节点的静态路由为所述目标worker节点的物理地址和/或所述目标worker节点的静态IP地址。
9.一种电子设备,其特征在于,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210337895.2A CN114827017B (zh) | 2022-03-31 | 2022-03-31 | Kafka集群的通信方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210337895.2A CN114827017B (zh) | 2022-03-31 | 2022-03-31 | Kafka集群的通信方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114827017A CN114827017A (zh) | 2022-07-29 |
CN114827017B true CN114827017B (zh) | 2024-01-30 |
Family
ID=82532434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210337895.2A Active CN114827017B (zh) | 2022-03-31 | 2022-03-31 | Kafka集群的通信方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114827017B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118101757A (zh) * | 2022-11-15 | 2024-05-28 | 中兴通讯股份有限公司 | 一种分布式分发系统部署、分发方法、系统、装置及介质 |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552734A (zh) * | 2009-05-22 | 2009-10-07 | 迈普通信技术股份有限公司 | 非自动多出口路由选择方法 |
CN102292963A (zh) * | 2009-01-22 | 2011-12-21 | 瑞典爱立信有限公司 | 网络中的地址分配 |
CN106936896A (zh) * | 2017-02-20 | 2017-07-07 | 北京数字联盟网络科技有限公司 | Kafka集群的数据传送方法和装置 |
CN107580083A (zh) * | 2017-09-20 | 2018-01-12 | 北京京东尚科信息技术有限公司 | 一种容器ip地址分配的方法和系统 |
CN108199967A (zh) * | 2018-03-30 | 2018-06-22 | 新华三技术有限公司 | 路由处理方法及装置 |
CN109062655A (zh) * | 2018-06-05 | 2018-12-21 | 腾讯科技(深圳)有限公司 | 一种容器化云平台及服务器 |
CN109495567A (zh) * | 2018-11-16 | 2019-03-19 | 网宿科技股份有限公司 | 一种静态路由的部署方法、设备及系统 |
CN110750332A (zh) * | 2019-10-23 | 2020-02-04 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置静态IP的方法 |
EP3617879A1 (en) * | 2018-08-30 | 2020-03-04 | Juniper Networks, Inc. | Multiple virtual network interface support for virtual execution elements |
CN111182089A (zh) * | 2019-12-31 | 2020-05-19 | 北京金山云网络技术有限公司 | 容器集群系统和访问大数据组件的方法、装置及服务器 |
CN111865775A (zh) * | 2015-01-30 | 2020-10-30 | Nicira股份有限公司 | 具有多个路由部件的逻辑路由器 |
CN112130965A (zh) * | 2020-10-26 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 部署分布式容器编排管理集群的方法、设备及存储介质 |
CN112671860A (zh) * | 2020-12-15 | 2021-04-16 | 杭州溪塔科技有限公司 | 用于kubernetes集群的服务访问方法、系统、电子设备及介质 |
CN112769924A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | RocketMQ的分布式部署方法、装置、设备及介质 |
CN112925788A (zh) * | 2021-01-27 | 2021-06-08 | 上海商汤智能科技有限公司 | 一种数据集管理方法及系统、装置、电子设备和存储介质 |
CN113127152A (zh) * | 2021-04-09 | 2021-07-16 | 浪潮软件科技有限公司 | 实现kubernetes容器多网络平面的方法及装置 |
CN113572831A (zh) * | 2021-07-21 | 2021-10-29 | 重庆星环人工智能科技研究院有限公司 | Kubernetes集群间的通信方法、计算机设备及介质 |
CN113596159A (zh) * | 2021-07-30 | 2021-11-02 | 北京南凯自动化系统工程有限公司 | 基于k8s云容器平台的集群通信方法及装置 |
CN113760452A (zh) * | 2021-08-02 | 2021-12-07 | 阿里巴巴新加坡控股有限公司 | 一种容器调度方法、系统、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080084163A (ko) * | 2007-03-15 | 2008-09-19 | 삼성전자주식회사 | 시스템 이중화된 네트워크상에서 Nonstop 패킷포워딩 방법 및 라우터 |
CN102035862B (zh) * | 2009-09-30 | 2013-11-06 | 国际商业机器公司 | Svc集群中配置节点的故障移交方法和系统 |
CN108073402A (zh) * | 2017-11-30 | 2018-05-25 | 山东鲁能软件技术有限公司 | 基于Linux系统的kafka集群自动部署方法和装置 |
CN114048028A (zh) * | 2021-11-01 | 2022-02-15 | 北京金山云网络技术有限公司 | 服务调用方法、装置、存储介质和电子设备 |
-
2022
- 2022-03-31 CN CN202210337895.2A patent/CN114827017B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102292963A (zh) * | 2009-01-22 | 2011-12-21 | 瑞典爱立信有限公司 | 网络中的地址分配 |
CN101552734A (zh) * | 2009-05-22 | 2009-10-07 | 迈普通信技术股份有限公司 | 非自动多出口路由选择方法 |
CN111865775A (zh) * | 2015-01-30 | 2020-10-30 | Nicira股份有限公司 | 具有多个路由部件的逻辑路由器 |
CN106936896A (zh) * | 2017-02-20 | 2017-07-07 | 北京数字联盟网络科技有限公司 | Kafka集群的数据传送方法和装置 |
CN107580083A (zh) * | 2017-09-20 | 2018-01-12 | 北京京东尚科信息技术有限公司 | 一种容器ip地址分配的方法和系统 |
CN108199967A (zh) * | 2018-03-30 | 2018-06-22 | 新华三技术有限公司 | 路由处理方法及装置 |
CN109062655A (zh) * | 2018-06-05 | 2018-12-21 | 腾讯科技(深圳)有限公司 | 一种容器化云平台及服务器 |
EP3617879A1 (en) * | 2018-08-30 | 2020-03-04 | Juniper Networks, Inc. | Multiple virtual network interface support for virtual execution elements |
WO2020098025A1 (zh) * | 2018-11-16 | 2020-05-22 | 网宿科技股份有限公司 | 一种静态路由的部署方法、设备及系统 |
CN109495567A (zh) * | 2018-11-16 | 2019-03-19 | 网宿科技股份有限公司 | 一种静态路由的部署方法、设备及系统 |
CN110750332A (zh) * | 2019-10-23 | 2020-02-04 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置静态IP的方法 |
CN111182089A (zh) * | 2019-12-31 | 2020-05-19 | 北京金山云网络技术有限公司 | 容器集群系统和访问大数据组件的方法、装置及服务器 |
CN112130965A (zh) * | 2020-10-26 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 部署分布式容器编排管理集群的方法、设备及存储介质 |
CN112671860A (zh) * | 2020-12-15 | 2021-04-16 | 杭州溪塔科技有限公司 | 用于kubernetes集群的服务访问方法、系统、电子设备及介质 |
CN112769924A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | RocketMQ的分布式部署方法、装置、设备及介质 |
CN112925788A (zh) * | 2021-01-27 | 2021-06-08 | 上海商汤智能科技有限公司 | 一种数据集管理方法及系统、装置、电子设备和存储介质 |
CN113127152A (zh) * | 2021-04-09 | 2021-07-16 | 浪潮软件科技有限公司 | 实现kubernetes容器多网络平面的方法及装置 |
CN113572831A (zh) * | 2021-07-21 | 2021-10-29 | 重庆星环人工智能科技研究院有限公司 | Kubernetes集群间的通信方法、计算机设备及介质 |
CN113596159A (zh) * | 2021-07-30 | 2021-11-02 | 北京南凯自动化系统工程有限公司 | 基于k8s云容器平台的集群通信方法及装置 |
CN113760452A (zh) * | 2021-08-02 | 2021-12-07 | 阿里巴巴新加坡控股有限公司 | 一种容器调度方法、系统、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
云环境下基于Kubernetes集群系统的容器网络研究与优化;刘渊;乔巍;;信息网络安全(第03期);全文 * |
在私有Kubernetes集群中实现服务的负载均衡;李翔;;电子技术与软件工程(第14期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114827017A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10728168B2 (en) | Method for providing a connection of a client to an unmanaged service in a client-server remote access system | |
EP2215773B1 (en) | Method and system for handling a failover in a distributed environment that uses session affinity | |
US7987266B2 (en) | Failover in proxy server networks | |
JP4838500B2 (ja) | ネットワーク対応デバイスをサポートするためのコンピュータシステム | |
CN115150464B (zh) | 应用代理方法、装置、设备及介质 | |
CN114827017B (zh) | Kafka集群的通信方法、装置、电子设备和存储介质 | |
US7805503B2 (en) | Capability requirements for group membership | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN108228880B (zh) | 数据库管理系统调用外部函数的方法、装置、设备及介质 | |
CN108880994B (zh) | 一种重发邮件的方法和装置 | |
CN114938375B (zh) | 一种容器组更新设备及容器组更新方法 | |
CN113946376B (zh) | 负载调整方法、装置、电子设备及存储介质 | |
CN111435320B (zh) | 一种数据处理方法及其装置 | |
CN109309583B (zh) | 基于分布式系统的信息获取方法、装置、电子设备和介质 | |
US20070030813A1 (en) | Monitoring a problem condition in a communications protocol implementation | |
CN110535904A (zh) | 一种异步推送方法、系统及装置 | |
US8640143B2 (en) | Method and system for providing preemptive response routing | |
US11768704B2 (en) | Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling | |
WO2023032103A1 (ja) | ジョブ制御システム及びその制御方法 | |
CN113608686B (zh) | 一种远程内存直接访问方法及相关装置 | |
WO2023032105A1 (ja) | ジョブ制御システム及びその制御方法 | |
WO2023032104A1 (ja) | ジョブ制御システム及びその制御方法 | |
JP2006115260A (ja) | 通信制御方法、通信中継装置および通信制御プログラム | |
CN117785224A (zh) | 模型部署方法、装置、电子设备及存储介质 | |
CN116483543A (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 |