欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质独创技术21694字

一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质

2021-04-24 03:11:24

一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质

  技术领域

  本发明涉及计算机软件领域,具体涉及一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质

  背景技术

  Kafka是一种高吞吐量的分布式发布订阅消息系统,Kafka系统快速、可扩展并且可持久化,它可以处理消费者在网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素,且它的分区具有可复制和可容错都是其不错的特性。但是当Kafka集群切换、调整不同数据分区读取时的资源占用,常常需要通过修改Kafka客户端程序的配置参数,现有技术是通过实时读取配置参数并应用到消息的生产和消费任务中,这种方式存在着开发成本高的问题。

  发明内容

  本申请的目的旨在至少能解决上述的技术缺陷之一。本申请所采用的技术方案如下:

  第一方面,本申请实施例公开了一种Kafka集群切换方法,应用于客户端,所述方法包括:

  客户端根据服务域名访问或预访问Kafka主集群;

  所述客户端接收DNS服务器发送的切换指令,其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;

  所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。

  可选地,所述方法还包括:所述客户端同时具有Kafka生产模式和Kafka消费模式。

  可选地,所述Kafka主集群的第一状态具体为:

  所述Kafka主集群对外服务端口不活跃。

  可选地,所述客户端根据所述切换指令访问Kafka备集群包括:

  所述切换指令,用于指示将所述服务域名对应的IP地址切换为Kafka备集群的IP地址;

  所述客户端根据接收的所述Kafka备集群的IP地址访问Kafka备集群。

  可选地,所述方法还包括:

  当DNS服务器监测到所述Kafka主集群处于第二状态时,所述客户端继续访问或预访问Kafka主集群。

  另一方面本申请实施例提供了一种Kafka集群切换装置,应用于客户端,所述装置包括:接收模块和访问模块,其中:

  所述接收模块,用于客户端接收服务域名的输入;

  所述访问模块,用于控制客户端根据服务域名访问或预访问Kafka主集群;

  所述接收模块,还用于控制所述客户端接收DNS服务器发送的切换指令;其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;

  所述访问模块,还用于所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。

  可选地,所述装置被应用于同时具有Kafka生产模式和Kafka消费模式的客户端。

  第三方面本申请实施例提供了一种Kafka集群切换系统,所述系统包括客户端、Kafka主集群平台、Kafka备集群平台、数据同步服务器和DNS服务器;其中,

  所述客户端根据服务域名访问或预访问Kafka主集群平台;

  所述DNS服务器监测到所述Kafka主集群处于第一状态时向所述客户端发送切换指令;

  所述客户端根据所述切换指令访问Kafka备集群平台;

  所述数据同步服务器,用于将所述Kafka主集群平台的信息其中所述实时同步备份至Kafka备集群平台。

  可选地,所述系统中的客户端为同时具有Kafka生产模式和Kafka消费模式的客户端。

  第四方面,本申请实施例提供了一种电子设备,包括处理器和存储器;

  所述存储器,用于存储操作指令;

  所述处理器,用于通过调用所述操作指令,执行上述任一实施例中所述的方法。

  第五方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。

  本申请实施例提供的技术方案带来的有益效果是:本申请实施例提供的Kafka集群切换方案,客户端根据服务域名访问或预访问Kafka主集群;所述客户端接收DNS服务器发送的切换指令,其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。采用本申请所提供的Kafka集群切换方法,无需像目前现有技术搭建配置服务中心,简化了开发流程,节省开发成本且也不需要更改客户端程序。

  附图说明

  为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

  图1为本申请实施例提供的一种Kafka集群切换方法的流程示意图;

  图2为本申请实施例提供的一种Kafka集群切换装置的结构示意图;

  图3为本申请实施例提供的一种Kafka集群切换系统的组成示意图;

  图4为本申请实施例提供的一种电子设备的结构示意图。

  具体实施方式

  下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。

  本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

  为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

  下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

  目前现有技术中是通过修改客户端程序以设置Kafka集群中的对象参数,如位点信息、分区信息的模块位置信息topic与密码token的关联关系、传输效率、集群配置、备份数量replications、片段segment大小等,并在参数修改完成后,将客户端程序编译打包并重启任务以实现Kafka集群切换等功能,该中切换方法需要对客户端程序进行改造,增加实时读取配置参数并应用到消息的生产和消费任务中,开发成本高,需要通过配置服务中心动态配置集群参数时,在进行集群切换时,虽然无需暂停重启程序,但需要实时读取配置参数并应用到消息的生产和消费任务中。此外根据Kafka客户端功能实现的不同,Kafka客户端主要分为生产客户端和消费客户端,目前一个Kafka客户端仅能实现生产或消费一种功能,即要么是生产客户端,要么是消费客户端,这就造成生产和消费出现脑裂,数据读写不在同一个集群,即由于心跳发送时间不一样,当生产和消费任务实时读取配置参数时间不一致时,其获取的集群参数也可能不一致,这就会导致生产和消费出现脑裂,数据读写不在同一个集群。此外目前的Kafka集群切换缺乏数据同步,需要进行配置和包管理机制,存在着维护成本高的问题。本发明的以下实施例就是提供一种Kafka集群切换方法以解决上述至少之一的缺陷。

  图1示出了本申请实施例提供的一种Kafka集群切换的流程示意图,所述方法应用于客户端,如图1所示,该方法主要可以包括:

  S101、客户端根据服务域名访问或预访问Kafka主集群;

  S102、所述客户端接收DNS服务器发送的切换指令,其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;

  S103、所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。

  在本申请实施例公开的Kafka集群切换方法是基于一种智能DNS服务器实现的,其中所述DNS服务器通过监测到Kafka主集群的状态而为输入客户端的服务域名匹配或切换至不同的IP地址来实现访问集群的切换。具有本申请所述IP地址切换功能的DNS服务器可以采用在现有GTM智能DNS服务器中配置包括IP地址切换指令的脚本文件来实现。但可选地是,基于所述DNS服务器将客户端对Kafka主集群的访问切换至对Kafka备集群的访问是单向的,不可自动回切,需要Kafka系统运维人员进行手动操作方可恢复对Kafka主集群的访问。

  在本申请优选实施例中,所述客户端为同时具有Kafka生产模式和Kafka消费模式的客户端。在本申请实施例中生产者与消费者客户端通过Kafka统一对外服务域名,如kafkadns.Com,访问Kafka主集群。通过本申请实施例实现了客户端生产和消费同时进行切换,避免出现脑裂,数据读写不在同一个集群。

  在本申请可选实施例中,所述Kafka主集群的第一状态具体为所述Kafka主集群对外服务端口不活跃。所述切换指令,用于指示将所述服务域名对应的IP地址切换为Kafka备集群的IP地址;所述客户端根据接收的所述Kafka备集群的IP地址访问Kafka备集群,即启动Kafka集群的灾备切换(其中所述灾备切换是指在灾难发生之后,将源端业务切换到备端数据中心,从而保障业务的连续性)即当DNS服务器接收到客户端的发送的访问或预访问的服务域名后进行域名解析,并检测到所述Kafka主集群平台对外服务端口不活跃时,则认为此时Kafka主集群平台处于宕机状态,则DNS服务器将服务域名对应的IP地址解析为Kafka备集群的IP地址,并将所述Kafka备集群的IP地址返回给客户端,客户端捕获到连接异常后自动重连,根据接收的Kafka备集群的IP地址访问Kafka备集群平台,从而完成Kafka集群的切换。本申请实施例提供的Kafka集群切换方法,基于智能DNS服务对Kafka主集群的检测和对服务域名解析IP地址的切换,实现了无需修改客户端程序而进行Kafka集群切换。

  当然,在上述实施例中均需要创建一个Kafka备集群平台,且需要引入数据同步服务将所述Kafka主集群的信息同步备份至所述Kafka备集群平台中。可选地,所述将Kafka主集群的信息同步备份至所述Kafka备集群平台的过程可以为引入数据同步服务器,该数据同步服务器可以包括Kafka集群配置信息管理与数据同步服务两部分,数据同步服务会主动检测主集群Kafka的topic名称,并在备集群创建对应的topic,之后数据同步服务消费主集群Topic的数据,并将数据写入到备集群对应的topic;同时,数据同步服务对Kafka主集群同步状态进行监控,以便用户可以进行维护。通过本实施例实现主备集群数据自动同步、配置和管理,降低维护成本。

  在本申请可选实施例中,当DNS服务器监测到所述Kafka主集群处于第二状态时,即当DNS服务器监测到Kafka主集群主机发生故障并未全部宕机时,先在Kafka主集群内部进行故障隔离和修复,DNS服务器向所述客户端依然返回Kafka主集群平台的对外服务IP地址,使得客户端继续访问或预访问Kafka主集群。

  基于图1所示的Kafka集群切换方法,另一方面本申请实施例提供了一种Kafka集群切换装置,应用于客户端,如图2所示,装置包括:201接收模块和202访问模块,其中:

  所述201接收模块,用于客户端接收服务域名的输入;

  所述202访问模块,用于控制客户端根据服务域名访问或预访问Kafka主集群;

  所述201接收模块,还用于控制所述客户端接收DNS服务器发送的切换指令;其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;

  所述202访问模块,还用于所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。

  可选地,所述装置被应用于同时具有Kafka生产模式和Kafka消费模式的客户端。

  可以理解的是,本实施例中的Kafka集群切换装置的上述各模块具有实现图1中所示的实施例中的方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述各模块的功能描述具体可以参见图1中所示实施例中的方法的对应描述,在此不再赘述。

  基于图1和图2分别所示的Kafka集群切换方法和装置,另一方面本申请实施例提供了一种Kafka集群切换系统,如图3所示,所述系统包括301客户端、302Kafka主集群平台、303Kafka备集群平台、304数据同步服务器和305DNS服务器;其中,

  所述301客户端根据服务域名访问或预访问302Kafka主集群平台;

  所述305DNS服务器监测到所述302Kafka主集群处于第一状态时向所述301客户端发送切换指令;

  所述301客户端根据所述切换指令访问303Kafka备集群平台;

  所述304数据同步服务器,用于将所述302Kafka主集群平台的信息其中所述实时同步备份至303Kafka备集群平台。

  可选地,所述系统中的301客户端为同时具有Kafka生产模式和Kafka消费模式的客户端。

  在上述实施例中,DNS服务器用于配置Kafka统一对外服务域名,如kafkadns.Com,还配置解析客户端上送的服务域名功能,并同时配置有监控Kafka集群对外服务端口的检查策略。在正常运行状态下,DNS服务器对客户端上送的服务域名,例如kafkadns.Com,进行解析返回客户端Kafka主集群中的任意一个机器的IP地址;在进行灾备切换时,即当DNS服务器监测到Kafka主集群中对外服务端口全部不活跃时,DNS服务器对客户端上送域名解析并返回客户端Kafka备集群中的任意一个机器的IP地址,以便客户端根据接收到的IP地址访问Kafka备集群平台。

  进一步地,本申请实施例中,生产者与消费者客户端通过Kafka统一对外服务域名,如kafkadns.Com访问Kafka主备集群。

  可以理解的是,本实施例中的Kafka集群切换系统的上述各组成设备具有实现图1中所示的实施例中的方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或装置。上述模块和装置可以是软件和/或硬件,上述各模块和装置可以单独实现,也可以多个模块和装置集成实现。对于上述各模块和装置的功能描述具体可以参见图1中所示实施例中的方法的对应描述,在此不再赘述。

  本申请实施例提供了一种电子设备,包括处理器和存储器;

  存储器,用于存储操作指令;

  处理器,用于通过调用操作指令,执行本申请任一实施方式中所提供的Kafka集群切换方法。

  作为一个示例,图4示出了本申请实施例所适用的一种电子设备的结构示意图,如图4所示,该电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选的,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。

  其中,处理器2001应用于本申请实施例中,用于实现上述方法实施例所示的方法。收发器2004可以包括接收机和发射机,收发器2004应用于本申请实施例中,用于执行时实现本申请实施例的电子设备与其他设备通信的功能。

  处理器2001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。

  总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

  存储器2003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

  可选的,存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现本申请任一实施方式中所提供的Kafka集群切换方法。

  本申请实施例提供的电子设备,适用于上述方法任一实施例,在此不再赘述。

  本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的Kafka集群切换方法。

  本申请实施例提供的计算机可读存储介质,适用于上述方法任一实施例,在此不再赘述。

  本申请实施例提供的Kafka集群切换方案,客户端根据服务域名访问或预访问Kafka主集群;所述客户端接收DNS服务器发送的切换指令,其中所述DNS服务器监测到所述Kafka主集群处于第一状态向所述客户端发送切换指令;所述客户端根据所述切换指令访问Kafka备集群;其中所述Kafka备集群实时同步备份所述Kafka主集群信息。采用本申请所提供的Kafka集群切换方法,无需像目前现有技术搭建配置服务中心,简化了开发流程,节省开发成本且也不需要更改客户端程序,实现了客户端生产和消费同时进行切换,避免数据读写不在同一个集群出现脑裂,同时实现了主备集群数据自动同步、配置和管理,降低维护成本。

  应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

  以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

《一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)