第 6 章 使用 MirrorMaker 镜像集群 使用 MirrorMaker 镜像集群
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在两个 Kafka 集群之间复制数据的操作称为镜像。使用这个术语是为了将这一过程与 "复制 "一词区分开来,后者通常指的是集群内不同代理之间共享 Kafka 中数据的方式。不过,社区在讨论集群之间的数据复制时,经常使用这两个术语。
集群间镜像数据的想法几乎和 Kafka 本身一样古老。在Kafka诞生之初,镜像是代理的一项功能,后来在2012年初被分离成自己的工具。该工具是一个名为 MirrorMaker 的独立应用程序,但由于其最初的设计,它有很多局限性,很难操作。于是在 2019 年,通过KIP-382推出了一款基于 Kafka Connect 的新镜像工具,名为 MirrorMaker2。最初的 MirrorMaker 工具自 Kafka 3.0 起已被弃用,并将在 Kafka 4.0 中移除(通过KIP-720);新工具现在通常被简单地称为 MirrorMaker 或 MM2。
在本章中,我们只介绍新工具,并将其称为 MirrorMaker。我们将介绍依赖镜像的用例,解释 MirrorMaker 连接器的工作原理,最后通过一些示例演示如何使用它们。
镜像简介
Kafka 的扩展性非常好,可以运行一个容量极大的集群。不过,在许多情况下,最好还是有多个较小的集群。这可能是为了更好地服务于不同地域,也可能是出于其他原因,例如隔离或工作负载优化。当你拥有多个 Kafka 集群时,通常会希望在它们之间镜像数据。
探索镜像使用案例
在集群间镜像数据对各种使用情况都很有意义。在本节中,我们将探讨四种最常见的情况:
-
地理复制
-
灾后恢复
-
迁移
-
复杂拓扑结构
地理复制
虽然不同地域之间的网络吞吐量和延迟在过去十年中得到了显著改善,但机器之间的距离仍然会对性能产生影响。出于这个原因,在很多情况下,Kafka 集群位于 Kafka 客户端附近是有好处的,因此大型企业通常会在其服务的每个地区或市场中部署一个或多个集群。在部署于不同地理位置的 Kafka 集群之间镜像数据的过程称为地理复制。
地理复制的一个关键方面是,每个应用程序在自己的区域内使用一个 Kafka 集群,而镜像则用于在区域间流动数据。这可以是在所有区域共享数据,也可以是在特定区域聚合所有数据。例如,在集线器和辐条拓扑中,来自所有区域的数据都汇总到一个区域(例如,最大的区域或公司总部所在区域)进行处理。图 6-1显示了一种集线器和辐条拓扑结构,其中eu 区域接收来自所有其他区域的数据。
图 6-1. 集线器和辐条拓扑示例,其中应用程序只使用其本地 Kafka 集群,数据汇总到单一区域,在本例中为eu
在地理复制使用案例中,数据也可以在群集之间双向流动。当所有集群都向其他集群广播自己的部分数据时,就会出现这种情况。如果将处理汇总数据的结果反馈给单个集群,这种情况也适用于集线器环境。具有双向数据流的设置通常被称为主动-主动。
灾后恢复
随着 Kafka 被许多行业采用来运行关键工作负载,集群的可用性和弹性至关重要。通过正确的配置和部署,Kafka 集群能够承受多种类型的故障,例如单个代理的故障,甚至是底层数据中心的故障。但是,对于高度敏感的工作负载,有必要能够处理更大类型的故障,如整个地理区域的故障或多个组件同时发生故障。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access