一种基于磁盘队列实现Kafka集群同步的方法及系统技术方案

技术编号:22329746 阅读:12 留言:0更新日期:2019-10-19 12:12
本发明专利技术公开了一种基于磁盘队列实现Kafka集群同步的方法及系统,该方法包括:步骤S1,从源端kafka集群中根据指定主题完整消费每一条消息,并把消息写入到源端本地磁盘队列中;步骤S2,利用其他线程从所述源端本地磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后,将数据发送到网络中;步骤S3,所述网络另一侧备端接收数据,将消息解压还原后写入备端本地磁盘队列中;步骤S4,从所述备端本地磁盘队列读取消息写入备端kafka集群中。

A method and system of Kafka cluster synchronization based on disk queue

【技术实现步骤摘要】
一种基于磁盘队列实现Kafka集群同步的方法及系统
本专利技术涉及Kafka集群
,特别是涉及一种基于磁盘队列实现Kafka集群同步的方法及系统。
技术介绍
近年来,随着互联网行业的不断发展,各种业务的数据量不断增多,在大数据处理环境下,类似如股票交易、实时天气预报、网络运维监控、电商实时推荐等推动了storm、s4、sparkstreaming等实时计算框架的部署应用。这些应用对业务系统的水平扩展、数据可靠性要求越来越高,同时系统对实现异步通信,高吞吐率和数据实时性处理要求不断提高,因此kafka的出现就理所当然了,目前,越来越多的开源分布式处理系统都支持与Kafka的集成。Kafka是一种分布式消息队列,用于发布和订阅消息。Kafka根据主题和分区将数据复制到多个服务器。Kafka可以高效处理数据处理,通过批处理和压缩记录有效地使用IO。因此越来越多的系统采用kafka作为中间件,将各类数据汇聚到数据湖、大数据应用和实时流分析系统中。在建设多个大数据平台时,实时同步kafka集群可以使多个大数据平台的数据互通和汇聚数据。在此基础上进行数据分析和可视化,为大数据决策提供完整的数据基础。由于kafka集群同步传输介质可能是广域网,在这种情况下,面对网络带宽的制约如何有效利用有限的带宽成为了关注的问题,此外由于数据在各类应用场景中日益重要,如何保证数据传输过程中的完整性,和如何在网络异常情况下保证数据传输的连续性都是值得关注的问题。目前,Kafka提供mirrormaker虽然可以实现kafka之间的同步,但是没有考虑数据压缩问题,而数据压缩是提高网络带宽使用率的主要方法,因此实有必要提出一种技术手段,以解决上述问题。
技术实现思路
为克服上述现有技术存在的不足,本专利技术之目的在于提供一种基于磁盘队列实现Kafka集群同步的方法及系统,以实现一种具有高性能、可压缩、高可靠性、可扩展的kafka同步技术。为达上述目的,本专利技术提出一种基于磁盘队列实现Kafka集群同步的方法,包括如下步骤:步骤S1,从源端kafka集群中根据指定主题完整消费每一条消息,并把消息写入到源端本地磁盘队列中;步骤S2,利用其他线程从所述源端本地磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后,将数据发送到网络中;步骤S3,所述网络另一侧备端接收数据,将消息解压还原后写入备端本地磁盘队列中;步骤S4,从所述备端本地磁盘队列读取消息写入备端kafka集群中。优选地,于步骤S1中,源端消费者通过所述源端kafka集群提供的生产者应用程序接口,逐条将完整的消息从所述源端kafka集群上消费到本地,将消息逐条写入预先生成的所述源端本地磁盘队列中。优选地,于步骤S1中将各条消息编写序号逐条写入预先生成的所述源端本地磁盘队列中。优选地,于步骤S4中,备端生产者从所述备端本地磁盘队列中读取消息写入所述备端kafka集群中。优选地,所述方法还包括如下步骤:当网络出现异常时,源端根据其网络异常前发送的消息的序号,于所述源端本地磁盘队列中获得下一条消息,将该序号后的消息重新发送给所述备端,实现断点续传。优选地,所述方法还包括如下步骤:当两侧系统出现异常或宕机时,系统重启进程运行后,两侧系统通过协议交互获得之前的传输状态,继续之前的数据传输工作。优选地,当系统重启进程运行后,所述备端告诉源端其收到的最后一个消息的序号,所述源端根据该序号在所述源端本地磁盘队列中查找下一条消息,并将该序号之后的消息发送给所述源端继续之前的传输工作。为达到上述目的,本专利技术还提供一种基于磁盘队列实现Kafka集群同步的系统,包括:源端系统,包括源端kafka集群、源端消费者、源端本地磁盘队列、压缩模块以及发送模块,所述源端消费者从所述源端kafka集群中根据指定主题完整消费每一条消息,并把消息写入到所述源端本地磁盘队列,所述压缩模块利用其它线程从所述磁盘队列中逐条取出消息,调用压缩算法将消息压缩后,由所述发送模块将数据发送到数据网络中;数据网络,用于所述源端系统与备端系统之间的数据传送交互;备端系统,包括接收模块、解压模块、备端本地磁盘队列、备端生产者、备端kafka集群,所述接收模块通过所述数据网络接收所述源端系统发送的消息数据,所述解压模块将消息解压还原后写入所述备端本地磁盘队列,所述备端生产者从所述备端本地磁盘队列中读取消息写入所述备端kafka集群中。优选地,所述源端消费者将各条消息编写序号后逐条写入预先生成的所述源端本地磁盘队列中。优选地,当所述源端系统与/或备端系统出现异常或宕机时,系统重启进程运行后,两侧系统通过协议交互获得之前的传输状态,继续之前的数据传输工作。与现有技术相比,本专利技术一种基于磁盘队列实现Kafka集群同步的方法及系统通过kafka提供的生产者应用程序接口,将完整的消息从kafka队列上消费到本地,然后将消息编写序号逐条写入预先生成的磁盘队列中,再有其他线程从磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后发送到网络中,而网络的另一侧接收数据后将消息解压还原写入另一侧本地磁盘队列,备端生产者从磁盘队列中读取消息写入另一侧的kafka中,实现了一种具有高性能、可压缩、高可靠性、可扩展的kafka同步技术。当网络出现异常时,本专利技术由于两侧都有较长队列,每条消息在队列中编有序号,从而可以实现断点续传;当两侧系统出现异常或宕机时,由于数据都落入磁盘队列完成了持久化操作,系统重启进程运行后就可以继续之前的传输工作,不会产生数据丢失的现象;当源端有大量数据时,两侧的磁盘长队列可以起到削峰,平缓流量的作用。附图说明图1为本专利技术一种基于磁盘队列实现Kafka集群同步的方法的步骤流程图;图2为本专利技术一种基于磁盘队列实现Kafka集群同步的系统的系统架构图;图3为本专利技术中基于磁盘队列实现Kafka集群同步的具体实施场景示意图。具体实施方式以下通过特定的具体实例并结合附图说明本专利技术的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本专利技术的其它优点与功效。本专利技术亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本专利技术的精神下进行各种修饰与变更。图1为本专利技术一种基于磁盘队列实现Kafka集群同步的方法的步骤流程图。如图1所示,本专利技术一种基于磁盘队列实现Kafka集群同步的方法,包括如下步骤:步骤S1,从源端的kafka集群中根据指定主题完整消费每一条消息,并把消息写入到本地的磁盘队列。具体地说,源端的消费者通过kafka集群提供的生产者应用程序接口,逐条将完整的消息从kafka集群上消费到本地,然后将消息逐条写入预先生成的磁盘队列中,在本专利技术具体实施例中,会将各条消息编写序号逐条写入预先生成的磁盘队列中。步骤S2,利用其他线程从所述磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后,将数据发送到网络中。在本专利技术具体实施例中,压缩算法可以任意选择,针对不同的网络环境可以根据压缩速率、压缩比选择最优算法,本专利技术不以此为限。步骤S3,所述网络另一侧的备端接收数据,将消息解压还原后写入本地磁盘队列。在本专利技术具体实施例中,解压缩算法也可以任意选择,针对不同的网络环境可以根据压缩速率、压缩比选择最优算法,本专利技术不以此为本文档来自技高网
...

【技术保护点】
1.一种基于磁盘队列实现Kafka集群同步的方法,包括如下步骤:步骤S1,从源端kafka集群中根据指定主题完整消费每一条消息,并把消息写入到源端本地磁盘队列中;步骤S2,利用其他线程从所述源端本地磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后,将数据发送到网络中;步骤S3,所述网络另一侧备端接收数据,将消息解压还原后写入备端本地磁盘队列中;步骤S4,从所述备端本地磁盘队列读取消息写入备端kafka集群中。

【技术特征摘要】
1.一种基于磁盘队列实现Kafka集群同步的方法,包括如下步骤:步骤S1,从源端kafka集群中根据指定主题完整消费每一条消息,并把消息写入到源端本地磁盘队列中;步骤S2,利用其他线程从所述源端本地磁盘队列中逐条取出消息,并调用压缩算法将消息压缩后,将数据发送到网络中;步骤S3,所述网络另一侧备端接收数据,将消息解压还原后写入备端本地磁盘队列中;步骤S4,从所述备端本地磁盘队列读取消息写入备端kafka集群中。2.如权利要求1所述的一种基于磁盘队列实现Kafka集群同步的方法,其特征在于:于步骤S1中,源端消费者通过所述源端kafka集群提供的生产者应用程序接口,逐条将完整的消息从所述源端kafka集群上消费到本地,将消息逐条写入预先生成的所述源端本地磁盘队列中。3.如权利要求2所述的一种基于磁盘队列实现Kafka集群同步的方法,其特征在于:于步骤S1中将各条消息编写序号逐条写入预先生成的所述源端本地磁盘队列中。4.如权利要求3所述的一种基于磁盘队列实现Kafka集群同步的方法,其特征在于:于步骤S4中,备端生产者从所述备端本地磁盘队列中读取消息写入所述备端kafka集群中。5.如权利要求4所述的一种基于磁盘队列实现Kafka集群同步的方法,其特征在于,所述方法还包括如下步骤:当网络出现异常时,源端根据其网络异常前发送的消息的序号,于所述源端本地磁盘队列中获得下一条消息,将该序号后的消息重新发送给所述备端,实现断点续传。6.如权利要求4所述一种基于磁盘队列实现Kafka集群同步的方法,其特征在于,所述方法还包括如下步骤:当两侧系统出现异常或宕机时,系统重启进程运行后...

【专利技术属性】
技术研发人员:杨彬季国庆王城胡军擎陈勇铨
申请(专利权)人:上海英方软件股份有限公司
类型:发明
国别省市:上海,31

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

1