Kafka跨集群数据备份与同步:MirrorMaker运用

news2025/3/19 11:44:09

#作者:张桐瑞

文章目录

  • 前言
  • MirrorMaker是什么
  • 运行MirrorMaker
  • 各个参数的含义

前言

在大多数情况下,我们会部署一套Kafka集群来支撑业务需求。但在某些特定场景下,可能需要同时运行多个Kafka集群。比如,为了实现灾难恢复,你可以在不同机房分别部署独立的Kafka集群。如果一个机房发生故障,你可以快速切换流量到另一个正常运行的机房。另外,如果你希望为地理上较近的客户提供低延迟的消息服务,而你的主机房距离客户较远,可以在靠近客户的地区部署Kafka集群,让该集群为客户提供低延迟的服务。
要满足这些需求,除了部署多个Kafka集群外,还需要借助一些工具或框架来帮助实现数据在集群间的复制或镜像。需要注意的是,将单个集群内部不同节点之间的数据复制称为“备份”,而集群间的数据复制则称为“镜像”(Mirroring)。

Apache Kafka社区提供的MirrorMaker工具,能够帮助我们实现将消息或数据从一个Kafka集群复制到另一个集群的功能。通过使用MirrorMaker,我们可以轻松地实现跨集群的数据复制和镜像,支持多种场景,如灾难恢复、跨地域低延迟服务等。这个工具能够高效地确保不同Kafka集群间的数据一致性和可靠性,是实现集群间数据同步的重要工具之一。

MirrorMaker是什么

MirrorMaker 是 Apache Kafka 提供的一个工具,用于在不同 Kafka 集群之间复制数据。它支持将一个 Kafka 集群中的消息或数据流同步到另一个集群中,确保集群间的数据一致性和可靠性。MirrorMaker 主要用于以下几种场景:

灾难恢复:将数据从主集群复制到备用集群,如果主集群发生故障,可以快速切换到备用集群进行业务恢复。
跨地域数据同步:在不同地理位置的 Kafka 集群之间同步数据,以便为不同地区的用户提供低延迟的服务。
集群间迁移:在进行集群扩容或升级时,可以利用 MirrorMaker 在不同集群之间迁移数据,避免服务中断。

数据备份:将集群的数据复制到另一个集群作为备份,确保数据的冗余和安全性。
MirrorMaker 的工作原理是,它从源集群的一个或多个 topic 中消费消息,并将这些消息生产到目标集群中的相应 topic。通过这种方式,它能够实现跨集群的数据同步。

在使用时,可以选择使用 MirrorMaker 1(较为基础)或 MirrorMaker 2(功能更强大,支持更多特性,比如增量复制、配置更细粒度的同步等)。MirrorMaker 2 是基于 Kafka Connect 构建的,具有更高的可扩展性和容错性。
从本质上看,MirrorMaker 确实是一个消费者和生产者的结合体。消费者负责从源集群(Source Cluster)消费数据,而生产者则将这些数据发送到目标集群(Target Cluster)。整个镜像流程如下图所示:
在这里插入图片描述
MirrorMaker连接的源集群和目标集群,会实时同步消息。当然,你不要认为你只能使用一套MirrorMaker来连接上下游集群。事实上,很多用户会部署多套集群,用于实现不同的目的。

通过下面这张图,可以清晰明白通过MirrorMaker进行多集群间镜像。图中部署了三套集群:左边的源集群负责主要的业务处理;右方的目标集群可以用于执行数据分析;而右下方的目标集群则充当源集群的热备份。
在这里插入图片描述

运行MirrorMaker

Kafka默认提供了MirrorMaker命令行工具kafka-mirror-maker脚本,它的常见用法是指定生产者配置文件、消费者配置文件、线程数以及要执行数据镜像的主题正则表达式。比如下面的这个命令,就是一个典型的MirrorMaker执行命令。

# bin/kafka-mirror-maker.sh --consumer.config ./config/consumer.properties --producer.config ./config/producer.properties --num.streams 8 --whitelist ".*"

各个参数的含义

consumer.config:指定MirrorMaker中消费者的配置文件地址,最主要的配置项是bootstrap.servers,也就是该MirrorMaker从哪个Kafka集群读取消息。因为MirrorMaker有可能在内部创建多个消费者实例并使用消费者组机制,因此你还需要设置group.id参数。建议额外配置auto.offset.reset=earliest,否则,MirrorMaker只会拷贝那些在它启动之后到达源集群的消息。

producer.config:指定MirrorMaker内部生产者组件的配置文件地址。通常来说,Kafka Java Producer很友好,你不需要配置太多参数。唯一的例外依然是bootstrap.servers,你必须显式地指定这个参数,配置拷贝的消息要发送到的目标集群。

num.streams:MirrorMaker要创建多少个KafkaConsumer实例。使用的是多线程的方案,即在后台创建并启动多个线程,每个线程维护专属的消费者实例。在实际使用时,可以根据你的机器性能酌情设置多个线程。

whitelist:如命令所示,这个参数接收一个正则表达式。所有匹配该正则表达式的主题都会被自动地执行镜像。在这个命令中,指定 “.*”,表明要同步源集群上的所有主题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式(创建型)-抽象工厂模式

摘要 在软件开发的复杂世界中,设计模式作为解决常见问题的最佳实践方案,一直扮演着至关重要的角色。抽象工厂模式,作为一种强大的创建型设计模式,在处理创建一系列或相关依赖对象的场景时,展现出了独特的优势和灵活性。它通过提供一个创建对象的接口,让开发者能够在不指定…

观察者模式详解:用 Qt 信号与槽机制深入理解

引言 你是否曾遇到这样的需求:一个对象的状态发生变化后,希望通知其他对象进行相应的更新?比如: 新闻订阅系统:当新闻发布后,所有订阅者都会收到通知。股票行情推送:股价变化时,所…

OSWorld:开启多模态智能体的真实计算机环境革命

OSWorld:开启多模态智能体的真实计算机环境革命 在人工智能技术突飞猛进的今天,多模态智能体正逐步突破实验室的限制,试图融入人类的日常工作场景。然而,如何评估这些智能体在真实计算机环境中处理开放式任务的能力,成为学术界和产业界共同关注的难题。2024年,由xlang-ai…

LabVIEW烟气速度场实时监测

本项目针对燃煤电站烟气流速实时监测需求,探讨了静电传感器结构与速度场超分辨率重建方法,结合LabVIEW多板卡同步采集与实时处理技术,开发出一个高效的烟气速度场实时监测系统。该系统能够在高温、高尘的复杂工况下稳定运行,提供高…

强化学习基础篇二:马尔可夫决策过程

写在前面 本文是对李沐等“动手学强化学习”教程的个人阅读总结,原文链接:动手学强化学习。 第3章 马尔可夫决策过程 3.1 重要性 马尔可夫决策过程是强化学习中的基础概念,强化学习中的环境就是一个马尔可夫决策过程,与多臂老虎…

EtherCAT转profinet网关集成汽车变速箱制造生产线自动化升级

客户的汽车零部件制造商需要升级其变速箱齿轮加工生产线,面临的关键挑战是整合新引进的欧洲齿轮精密检测设备(基于EtherCAT协议)与现有使用profinet协议自动化系统通信。 企业核心控制平台基于西门子PLC,而现场各工位采用分布式I/…

tongweb7控制台无法访问

tongweb7控制台无法访问 排查 1.首先确认版本,如果版本是轻量级版本,轻量版不支持会话(session)的备份和复制、管理控制台、APM 运维工具等企业级增量功能。 2.查看端口 命令:ss -tnlp 或者netstat -tnlp 确认控制台端口是否开启 3.在conf…

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中,下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构:STD_STM…

搞定python之九----常用内置模块

本文是《搞定python》系列文章的第九篇,介绍常用的内置模块的使用。到此为止python的基础用法就彻底说完了,大家可以在此基础上学习爬虫、web处理等框架了。 本文的代码相对比较多,大家注意看代码即可。python的文档我贴出来,毕竟…

判断是不是完全二叉树(C++)

目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 定义队列,初始化根节点 4.2 层序遍历,处理每个节点 4.3 处理空节点 4.4 处理非空节点 5 总结 1 问题描述 给定一个二叉树,确定他是否是一…

神经外科手术规划的实现方案及未来发展方向

Summary: 手术规划软件 效果图,样例: 神经外科手术规划样例: 神经外科手术规划,三维重建,三维建模,三维可视化 Part1: 手术规划的定义与作用 一、手术规划的定义 手术规划是指在手术前,通过详…

easypoi导入Excel兼容日期和字符串格式的日期和时间

问题场景 在使用easypoi导入Excel时,涉及到的常用日期会有yyyy-MM-dd HH:mm:ss、yyyy-MM-dd和HH:mm:ss,但是Excel上面的格式可不止这些,用户总会输入一些其他格式,如 如果在定义verify时用下面这种格式定义,那么总会…

【计算机视觉】工业表计读数(2)--表计检测

1. 简介 工业表计(如压力表、电表、气表等)在工控系统、能源管理等领域具有重要应用。然而,传统人工抄表不仅工作量大、效率低,而且容易产生数据误差。近年来,基于深度学习的目标检测方法在工业检测中展现出极大优势&…

Zbrush插件安装

安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64

LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 过去2年多的深入超过此前7年,全靠夜以继日的勤奋,一天当两天用,抠论文 抠代码 和大模型及具身同事讨论,是目前日常 而具身库里,idp3、π0、lerobot值得反复研究,故,近期我一直在抠π0及l…

OpenCV基础【图像和视频的加载与显示】

目录 一.创建一个窗口,显示图片 二.显示摄像头/多媒体文件 三.把摄像头录取到的视频存储在本地 四.鼠标回调事件 五.TrackBar滑动条 一.创建一个窗口,显示图片 import cv2img_path "src/fengjing.jpg" # 自己的图片路径 img cv2.imre…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们,热烈欢迎踏入青少年编程的奇妙世界! 我是你们的授课老师杨校 ,期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中,像手机里的各类 APP、电…

Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解

目录 IF函数等于判断区间判断与AND函数、OR函数一同使用IFNA函数和IFERROR函数 FREQUNCY函数、分断统计LEFT、RIGHT、MID截取函数FIND函数、LEN函数SUBSTITUTE函数ASC函数、WIDECHAR函数实战:如何获取到表中所有工作簿名称文本处理函数TEXT函数TEXTJOIN函数 日期函数…

利用大语言模型生成的合成数据训练YOLOv12:提升商业果园苹果检测的精度与效

之前小编分享过关于《YOLO11-CBAM集成:提升商业苹果园树干与树枝分割的精准度》,改进YOLO11算法后,进行苹果树的实例分割。本期文章我们将分享关于最新的YOLO12算法改进的苹果目标检测。 论文题目:Improved YOLOv12 with LLM-Gen…

整合百款经典街机游戏的模拟器介绍

对于80、90后而言,街机游戏承载着童年的欢乐记忆。今天要给大家介绍一款超棒的软件——「MXui街机厅经典游戏101款」,它能带你重回那段热血沸腾的街机时光。 「MXui街机厅经典游戏101款」是一款绿色免安装的街机模拟器,体积约1.39G。无需繁琐…