Kafka 地理复制之概览,复制流

news2026/4/1 21:40:26

目录

一. 前言

二. 地理复制概览

三. 什么是复制流(What Are Replication Flows)

四. Kafka MirrorMaker 2.0 指南

4.1. 概述

4.2. 用例

4.3. 配置文件 


一. 前言

    Kafka MirrorMaker 为您的集群提供地理复制支持。使用 MirrorMaker,消息在多个数据中心或云区域上被复制。您可以在主动/被动场景中使用此选项进行备份和恢复;或者在主动/主动场景中使用此选项来将数据放置得更靠近用户,或者支持数据局部性需求。

二. 地理复制概览

原文引用:Kafka administrators can define data flows that cross the boundaries of individual Kafka clusters, data centers, or geo-regions. Such event streaming setups are often needed for organizational, technical, or legal requirements. Common scenarios include:

  • Geo-replication
  • Disaster recovery
  • Feeding edge clusters into a central, aggregate cluster
  • Physical isolation of clusters (such as production vs. testing)
  • Cloud migration or hybrid cloud deployments
  • Legal and compliance requirements

    Kafka 管理员可以定义跨越各个 Kafka 集群、数据中心或地理区域边界的数据流。此类事件流设置通常是出于组织、技术或法律要求而需要的。常见场景包括:

  • 地理复制。
  • 灾难恢复。
  • 将边缘集群馈送到中心聚合集群中。
  • 集群的物理隔离(例如生产与测试)。
  • 云迁移或混合云部署。
  • 法律和合规要求。

原文引用:Administrators can set up such inter-cluster data flows with Kafka's MirrorMaker (version 2), a tool to replicate data between different Kafka environments in a streaming manner. MirrorMaker is built on top of the Kafka Connect framework and supports features such as:

  • Replicates topics (data plus configurations)
  • Replicates consumer groups including offsets to migrate applications between clusters
  • Replicates ACLs
  • Preserves partitioning
  • Automatically detects new topics and partitions
  • Provides a wide range of metrics, such as end-to-end replication latency across multiple data centers/clusters
  • Fault-tolerant and horizontally scalable operations

    管理员可以使用 Kafka 的 MirrorMaker(版本2)设置这样的集群间数据流,MirrorMaker 是一种以流方式在不同 Kafka 环境之间复制数据的工具。MirrorMaker 构建在 Kafka Connect 框架之上,支持以下功能:

  • 复制主题(数据加配置)。
  • 复制消费者组,包括在集群之间迁移应用程序的偏移量。
  • 复制 ACL。
  • 保留分区。
  • 自动检测新主题和分区。
  • 提供广泛的指标,例如跨多个数据中心/群集的端到端复制延迟。
  • 容错和水平可扩展操作。

原文引用:Note: Geo-replication with MirrorMaker replicates data across Kafka clusters. This inter-cluster replication is different from Kafka's intra-cluster replication, which replicates data within the same Kafka cluster. 

    注意:MirrorMaker 的地理复制是在 Kafka 集群之间复制数据。这种集群间复制不同于 Kafka 的集群内复制,后者在同一个 Kafka 集群内复制数据。

三. 什么是复制流(What Are Replication Flows)

原文引用:With MirrorMaker, Kafka administrators can replicate topics, topic configurations, consumer groups and their offsets, and ACLs from one or more source Kafka clusters to one or more target Kafka clusters, i.e., across cluster environments. In a nutshell, MirrorMaker uses Connectors to consume from source clusters and produce to target clusters.

    使用 MirrorMaker,Kafka 管理员可以将 Topic、Topic 配置、消费者组及其偏移量和 ACL 从一个或多个源 Kafka 集群复制到一个或更多个目标 Kafka 群集,即跨集群环境。简而言之,MirrorMaker 使用连接器从源集群消费并生产到目标集群。

原文引用:These directional flows from source to target clusters are called replication flows. They are defined with the format {source_cluster}->{target_cluster} in the MirrorMaker configuration file as described later. Administrators can create complex replication topologies based on these flows.

    这些从源集群到目标集群的定向流称为复制流。它们是用格式定义的 {source_cluster}->{target_cluster},如后所述。管理员可以基于这些流创建复杂的复制拓扑。

原文引用:Here are some example patterns:

  • Active/Active high availability deployments: A->B, B->A
  • Active/Passive or Active/Standby high availability deployments: A->B
  • Aggregation (e.g., from many clusters to one): A->K, B->K, C->K
  • Fan-out (e.g., from one to many clusters): K->A, K->B, K->C
  • Forwarding: A->B, B->C, C->D

以下是一些示例模式:

  • 主动/主动高可用性部署:A->B,B->A。
  • 主动/被动或主动/备用高可用性部署:A->B。
  • 聚合(例如,从多个集群到一个集群):A->K、B->K、C->K。
  • 输出(例如,从一个到多个集群):K->A,K->B,K->C。
  • 转发:A->B,B->C,C->D。

原文引用:By default, a flow replicates all topics and consumer groups (except excluded ones). However, each replication flow can be configured independently. For instance, you can define that only specific topics or consumer groups are replicated from the source cluster to the target cluster.

    默认情况下,一个流复制所有 Topic 和消费者组(排除的组除外)。但是,每个复制流都可以独立配置。例如,您可以定义仅将特定 Topic 或消费者组从源集群复制到目标集群。

原文引用:Here is a first example on how to configure data replication from a primary cluster to a secondary cluster (an active/passive setup): 

    以下是关于如何配置从主群集到辅助群集的数据复制的第一个示例(主动/被动设置):

# Basic settings
clusters = primary, secondary
primary.bootstrap.servers = broker3-primary:9092
secondary.bootstrap.servers = broker5-secondary:9092

# Define replication flows
primary->secondary.enabled = true
primary->secondary.topics = foobar-topic, quux-.*

四. Kafka MirrorMaker 2.0 指南

4.1. 概述

    MirrorMaker 2.0(MM2)旨在更轻松地将主题从一个 Kafka 群集镜像或复制到另一个群集。 它使用 Kafka Connect 框架来简化配置和缩放。 它动态检测主题的更改,并确保源和目标主题属性同步,包括偏移和分区。

先决条件:

  • 环境至少有两个 HDI Kafka 群集。
  • Kafka 版本高于 2.4(HDI 4.0)。
  • 源群集应具有数据点和主题来测试 MirrorMaker 2.0 复制过程的各种功能。

4.2. 用例

    模拟 MirrorMaker 2.0 以在 HDInsight 中的两个 Kafka 群集之间复制数据点/偏移。 这样同样可用于像在两个或更多 Kafka 群集之间进行必需的数据复制这样的场景,例如灾难恢复、云适应、异地复制、数据隔离和数据聚合。

使用 MirrorMaker 2.0 进行偏移复制

MM2 内部:

    MirrorMaker 2.0 工具由不同的连接器组成。 这些连接器是标准 Kafka Connect 连接器,可以在独立模式或分布式模式下直接与 Kafka Connect 配合使用。

代理设置过程的摘要如下:

MirrorSourceConnector:

  1. 复制单个源群集的远程主题、主题 ACL 和配置。
  2. 向内部主题发出偏移同步。

MirrorSinkConnector:

  1. 使用主群集并将主题复制到单个目标群集。

MirrorCheckpointConnector:

  1. 使用 offset-syncsr。
  2. 发出检查点以启用故障转移点。

MirrorHeartBeatConnector:

  1. 向远程群集发出检测信号,从而监视复制过程。

部署

1. 与 Kafka 库捆绑的 connect-mirror-maker.sh 脚本实现分布式 MM2 群集,该群集根据配置文件在内部管理 Connect 辅助角色。 在内部,MirrorMaker 驱动程序创建和处理每个连接器的配对 – MirrorSourceConnector、MirrorSinkConnector、MirrorCheckpoint 连接器和 MirrorHeartbeatConnector。

2. 启动 MirrorMaker 2.0

./bin/connect-mirror-maker.sh ./config/mirror-maker.properties

注意:对于已启用 Kerberos 的群集,JAAS 配置必须导出到 KAFKA_OPTS,或必需在 MM2 配置文件中指定。

export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas.conf>"

4.3. 配置文件 

示例 MirrorMaker 2.0 配置文件

# specify any number of cluster aliases
clusters = source, destination

# connection information for each cluster
# This is a comma separated host:port pairs for each cluster
# for example. "A_host1:9092, A_host2:9092, A_host3:9092"  and you can see the exact host name on Ambari > Hosts
source.bootstrap.servers = wn0-src-kafka.bx.internal.cloudapp.net:9092,wn1-src-kafka.bx.internal.cloudapp.net:9092,wn2-src-kafka.bx.internal.cloudapp.net:9092
destination.bootstrap.servers = wn0-dest-kafka.bx.internal.cloudapp.net:9092,wn1-dest-kafka.bx.internal.cloudapp.net:9092,wn2-dest-kafka.bx.internal.cloudapp.net:9092

# enable and configure individual replication flows
source->destination.enabled = true

# regex which defines which topics gets replicated. For eg "foo-.*"
source->destination.topics = toa.evehicles-latest-dev
groups=.*
topics.blacklist="*.internal,__.*"

# Setting replication factor of newly created remote topics
replication.factor=3

checkpoints.topic.replication.factor=1
heartbeats.topic.replication.factor=1
offset-syncs.topic.replication.factor=1

offset.storage.replication.factor=1
status.storage.replication.factor=1
config.storage.replication.factor=1

SSL 配置

如果设置需要 SSL 配置。

destination.security.protocol=SASL_SSL
destination.ssl.truststore.password=<password>
destination.ssl.truststore.location=/path/to/kafka.server.truststore.jks
#keystore location in case client.auth is set to required
destination.ssl.keystore.password=<password> 
destination.ssl.keystore.location=/path/to/kafka.server.keystore.jks
destination.sasl.mechanism=GSSAPI

全局配置

properties默认值说明
name必需连接器的名称,例如“us-west->us-east”
topics空字符串要复制的主题的正则表达式,例如“topic1, topic2, topic3”。 还支持逗号分隔列表。
topics.blacklist

“..internal, ..replica,

__consumer_offsets”

或类似形式

要从复制中排除的主题
groups空字符串要复制的组的正则表达式,例如“.*”
groups.blacklist空字符串要从复制中排除的组
source.cluster.alias必需被复制的群集的名称
target.cluster.alias必需下游 Kafka 群集的名称
source.cluster.bootstrap.servers必需要复制的上游群集
target.cluster.bootstrap.servers必需下游群集
sync.topic.configs.enabledtrue是否监视源群集的配置更改
sync.topic.acls.enabledtrue是否监视源群集 ACL 的更改
emit.heartbeats.enabledtrue连接器应定期发出检测信号
emit.heartbeats.interval.secondstrue检测信号的频率
emit.checkpoints.enabledtrue连接器应定期发出使用者偏移信息
emit.checkpoints.interval.seconds5(秒)检查点频率
refresh.topics.enabledtrue连接器应定期检查是否有新使用者组
refresh.topics.interval.seconds5(秒)检查源群集是否有新使用者组的频率
refresh.groups.enabledtrue连接器应定期检查是否有新使用者组
refresh.groups.interval.seconds5(秒)检查源群集是否有新使用者组的频率
readahead.queue.capacity500(个记录)让使用者领先于生产者的记录数
replication.policy.class

org.apache.kafka.

connect.mirror.

DefaultReplicationPolicy

使用 LegacyReplicationPolicy 模拟旧版 MirrorMaker
heartbeats.topic.retention.ms一天首次创建检测信号主题时使用
checkpoints.topic.retention.ms一天首次创建检查点主题时使用
offset.syncs.topic.retention.ms最大时长首次创建偏移同步主题时使用
replication.factortwo创建远程主题时使用

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

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

相关文章

AMD Radeon™ PRO W7900安装要求

Radeon PRO W7900 Radeon PRO W7900是AMD于2023年4月13日推出的发卡级专业显卡。基于5nm工艺&#xff0c;基于Navi 31图形处理器&#xff0c;在其Navi 31变体中&#xff0c;该卡支持DirectX 12 Ultimate。Navi 31图形处理器的芯片面积为529mm2&#xff0c;拥有577亿个晶体管。…

YooAssets 使用相关

## 使用 YooAssets 动态加载原生文件时候 > 原生文件&#xff1a;txt&#xff1b;json&#xff1b;等需要直接保存文件内string字符的文件 需要将打包方式设置成为&#xff0c;PackRawFile 并且加载时候使用 API &#xff1a; YooAssets.LoadRawFileSync()YooAssets.LoadRa…

金三银四面试题(十三):Java基础问题(4)

这部分面试题多用于面试的热身运动&#xff0c;对很多找实习和准备毕业找工作的小伙伴至关重要。 ArrayList,Vector和LinkedList ArrayList 和 Vector 都是使用数组方式存储数据&#xff0c;此数组元素数大于实际存储的数据以便增 加和插入元素&#xff0c;它们都允许直接按序…

U盘弹不出?事件查看器

使用完U盘或者硬盘遇到弹不出&#xff0c;是直接拔掉还是关机再拔&#xff1f; no no no 看这&#xff01; 1、开始菜单&#xff0c;或者叫“windows” 2.右键&#xff0c;点击按键“V”; 3.看到了事件查看器&#xff1b; 是PDF阅读器在占用文件&#xff1b; 关闭就正常了&…

数据转换 | Matlab基于GASF格拉姆角和场一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 基于GASF&#xff08;Gramian Angular Summation Field&#xff09;的方法&#xff0c;将一维数据转换为二维图像的步骤描述 标准化数据&#xff1a; 首先&#xff0c;对一维时序数据进行标准化处理&#xf…

JAVA 基础语法扫盲复习

一、转义字符与文档注释 1、1转义字符 public class ChangeChar {/*\t 制表符\n 换行\r 一个回车\\ 一个\\ 一个\" 一个“转义字符*/public static void main(String[] args) {// 制表符System.out.println("昆明海口北京");System.out.println("制表拉&…

即刻体验 | 使用 Flutter 3.19 更高效地开发

我们已隆重推出全新的 Flutter 版本——Flutter 3.19。此版本引入了专为 Gemini 设计的新 Dart SDK、一个能让开发者对 Widget 动画实现精细化控制的全新 Widget&#xff0c;Impeller 更新带来的渲染性能提升、有助于实现深层链接的工具和对 Windows Arm64 的支持&#xff0c;以…

3.5 CSS常用样式

3.5.1 CSS背景 3.5.1将介绍如何在网页上应用背景颜色和背景图像。和CSS背景有关的属性如表所示。 1. 背景颜色background-color CSS中的background-color属性用于为所有HTML元素指定背景颜色。例如&#xff1a; p{background-color:gray} /*将段落元素的背景颜色设置为灰色*…

人工智能|深度学习——基于Xception实现戴口罩人脸表情识别

一、项目背景 近年来&#xff0c;随着人工智能技术的不断发展&#xff0c;人脸表情识别已经成为了计算机视觉领域中的重要研究方向之一。然而&#xff0c;在当前的疫情形势下&#xff0c;佩戴口罩已经成为了一项必要的防疫措施&#xff0c;但是佩戴口罩会遮挡住人脸的部分区域&…

政安晨:【Keras机器学习实践要点】(十五)—— KerasTuner 简述

目录 导言 调整模型结构 定义搜索空间 开始搜索 查询结果 重新训练模型 调整模型训练 调整数据预处理 重新训练模型 指定调整目标 以内置指标为目标 以自定义指标为目标 调整端到端工作流程 将 Keras 代码分开 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1…

CVE-2021-30517:Type confusion bug in LoadSuperIC

前言 这个漏洞是一个比较老的洞&#xff0c;之所以分析这个漏洞&#xff0c;只要是想再学习一下 ICs 相关的知识。并该漏洞的利用是利用与 String/Function 之间的混淆&#xff0c;比较有意思。 环境搭建 sudo apt install python git checkout 7d5e5f6c62c3f38acee12dc4114…

端口映射如何测试?

端口映射是一项网络技术&#xff0c;用于将外部网络中的数据流量映射到内部网络中的特定端口或设备上。通过端口映射&#xff0c;可以实现远程访问内部网络中的设备或应用程序&#xff0c;使其能够在外部网络中得到访问。本文将介绍端口映射测试及其应用场景。 2. 【天联】组网…

【大数据存储】实验4 NoSQL数据库

实验4 NoSQL数据库 NoSQL数据库的安装和使用实验环境&#xff1a; Ubuntu 22.04.3 Jdk 1.8.0_341 Hadoop 3.2.3 Hbase 2.4.17 Redis 6.0.6 mongdb 6.0.12 mogosh 2.1.0 Redis 安装redis完成 新建终端启动redisredis-server新建一个终端redis-cli 建表操作 尝…

详细分析Vuex中的mapGetters

目录 1. 基本知识2. Demo13. Demo2 1. 基本知识 优势和用途 简化代码&#xff1a;用 mapGetters 和 mapState&#xff0c;可以简化组件中对于 Vuex 中状态和 getter 的映射工作&#xff0c;减少了重复的代码书写更易读&#xff1a;组件中直接使用映射的计算属性&#xff0c;使…

项目5-验证码案例

选择使用Google的开源项目Kaptcha来实现. 1.Kaptcha 插件介绍 Kaptcha 是Google的⼀个高度可配置的实⽤验证码⽣成⼯具. 代码: http://code.google.com/p/kaptcha/ ⽹上有很多⼈甚⾄公司基于Google的kaptcha进⾏了⼆次开发. 我们选择⼀个直接适配SpringBoot的 开源项目 htt…

吴恩达:AI 智能体的四种模式

一、背景 吴恩达在《What’s next for AI agentic workflows ft》分享中提出 AI 智能体的四种模式。 反思&#xff08;Reflection&#xff09;&#xff1a; LLM 检查自己的工作&#xff0c;以提出改进方法。 使用工具&#xff08;Tool use&#xff09;&#xff1a;LLM 拥有…

MySQL数据库 数据库基本操作(二):表的增删查改(上)

1. CRUD CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中针对表的一系列操作. 2. 新增(create) -->insert 语法: insert into 表名 [列名1,列名2…] values (val1,val2…) [注意] 列名可以没有,如果没有列名…

【深度学习|Pytorch】torchvision.datasets.ImageFolder详解

ImageFolder详解 1、数据准备2、ImageFolder类的定义transforms.ToTensor()解析 3、ImageFolder返回对象 1、数据准备 创建一个文件夹&#xff0c;比如叫dataset&#xff0c;将cat和dog文件夹都放在dataset文件夹路径下&#xff1a; 2、ImageFolder类的定义 class ImageFol…

大日志精选案例四:某省级大数据集团日志审计优化实战解析

“在集团日常运营中&#xff0c;数据安全始终是我们关注的重点。过去&#xff0c;数据量大、处理速度慢&#xff0c;导致日志数据难以迅速获取和分析&#xff0c;影响业务决策。但自从引入聚铭大日志解决方案后&#xff0c;系统日志和用户行为数据都得到了高效处理与存储。该方…

SpringCloud Hystrix 服务熔断、服务降级防止服务雪崩

文章目录 SpringCloud Hystrix 熔断器、服务降级防止服务雪崩需求背景引入依赖启动类加Hystrix注解接口配置熔断常规配置超时断开错误率熔断请求数熔断限流 可配置项HystrixCommand.Setter参数Command Properties 服务降级 SpringCloud Hystrix 熔断器、服务降级防止服务雪崩 H…