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

#作者:张桐瑞

文章目录

  • 前言
  • 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.rhkb.cn/news/35768.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ECharts仪表盘-仪表盘12,附视频讲解与代码下载

引言: ECharts仪表盘(Gauge Chart)是一种类似于速度表的数据可视化图表类型,用于展示单个或多个变量的指标和状态,特别适用于展示指标的实时变化和状态。本文将详细介绍如何使用ECharts库实现一个仪表盘,…

Harmony OS【 Tabs 导航篇】

设计图: 代码层: Entry Component struct Index {build() {Tabs({ barPosition: BarPosition.End }) {}.scrollable(false).vertical(false).divider({strokeWidth: 0.5,color: #0d182431}).backgroundColor(#F1f3f5).padding({ top: 36, bottom: 28 }…

兆芯大道云行 | 破解高性能云计算数据存储瓶颈

随着数字化转型的加速和数据安全战略的提升,以及国家政策的驱动,政府、金融、能源等关键领域对数据存储的自主可控要求不断提高,传统依赖国外芯片和技术的集中式存储架构面临安全与扩展性瓶颈。例如,政务云场景中原有的非信创服务…

RSI 量化策略实战指南:基于 iTick 报价源的 Python 实现

一、策略原理 相对强弱指标(Relative Strength Index, RSI)是由 Welles Wilder 提出的经典技术指标,通过计算价格波动的幅度衡量市场超买 / 超卖状态。RSI 取值范围 0-100,常用判断标准: RSI > 70:超买…

12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)

文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…

逻辑派G1 6层高速板学习

逻辑派G1 6层高速板学习 一、原理图分析二、电源分析三、网表导入四、板框导入五、PCB快捷键导入与设置六、模块抓取以及接口器件布局七、模块化布局--预布局(先放各模块中的大器件)1 HDMI模块布局2 MCU模块布局3 FPGA模块布局4 DDR3模块布局5 DCDC电源模…

图论——广度优先搜索实现

99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述 第一行包含两个整数 N, M,表示矩阵的行数和列数。 后续 N 行,每行…

PTS-G1K13M RF Generator 1kW / 13MHz User’s Manual 手侧

PTS-G1K13M RF Generator 1kW / 13MHz User’s Manual 手侧

应用分层简介

一、什么是应用分层 应用分层是一种软件开发设计思想,它将应用程序分为多个层次,每个层次各司其职,多个层次之间协同提供完整的功能,根据项目的复杂程度,将项目分为三层或者更多层。 常见的MCV设计模式,就…

conda的基本使用及pycharm里设置conda环境

创建conda环境 conda create --name your_env_name python3.8 把your_env_name换成实际的conda环境名称,python后边的根据自己的需要,选择python的版本。 激活conda环境 conda activate your_env_name 安装相关的包、库 conda install package_name …

E902基于bash与VCS的仿真环境建立

网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…

PostgreSQL:简介与安装部署

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

Git使用和原理(3)

1.远程操作 1.1分布式版本控制系统 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者 计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢&a…

ssm框架之mybatis框架讲解

1,Mybatis 1.1 Mybatis概述 1.1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2…

方法之笔,驭繁于简.绘场景之魂——方法论引领支撑透明化项目之航

关注作者 项目建设中痛难点剖析: 01 项目策划有缺失,目标风险难管控 ①目标设定不合理,由于项目移交交底不充分,造成项目建设目标与前期立项论证偏差过大,达不到建设预期; ②风险评估不足,未…

【Apache Storm】

一、Storm简介 1、概述 官网地址:https://storm.apache.org/index.html Apache Storm 是一个开源的、分布式的实时计算系统,专为处理流式数据而设计。它能够处理大量数据流并在极低的延迟下提供实时的结果。相比于传统的批处理系统,Storm 具…

【力扣刷题实战】无重复的最长字串

大家好,我是小卡皮巴拉 文章目录 目录 力扣题目: 无重复的最长字串 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页&#x…

联想扬天M590台式机开机卡LOGO不引导故障维修案例分享

故障描述: 用户送修联想扬天M590台式机到站端维修,说是开机不能正常进系统;站端检测开机后卡LOGO、无法加载引导系统; 故障检修: 插拔内存、插拔硬盘,更换内存、更换硬盘均不能解决此故障;调试…

C++刷题(三):string

📝前言说明: 本专栏主要记录本人的基础算法学习以及刷题记录,使用语言为C。 每道题我会给出LeetCode上的题号(如果有题号),题目,以及最后通过的代码。没有题号的题目大多来自牛客网。对于题目的…

PosterRender 实现微信下程序 分享商品生成海报

PosterRender 是什么 PosterRender 是一种专注于生成高质量海报图像的技术或工具,常用于生成静态图片,特别是适合用于营销、宣传和展示的图形设计。它通常用于在服务端或客户端渲染复杂的图像,包括文字、图形、图标、背景等,生成…