What if you could keep your data perfectly synced across cities without lifting a finger?
Why MirrorMaker 2 concept in Kafka? - Purpose & Use Cases
Imagine you have two separate Kafka clusters in different data centers. You want to copy all messages from one cluster to the other to keep data in sync. Doing this by hand means writing custom scripts or programs that read messages from one cluster and send them to the other.
Manually copying messages is slow and risky. You might miss messages, duplicate data, or cause delays. Handling failures and keeping everything consistent is very hard without a reliable tool. It's like trying to carry water with a leaky bucket.
MirrorMaker 2 is a built-in Kafka tool that automatically replicates data between clusters. It handles message copying, failure recovery, and keeps data consistent without extra work. It's like having a smart pipeline that moves data smoothly and safely.
read_messages_from_cluster1() send_messages_to_cluster2()
bin/kafka-mirror-maker.sh --clusters cluster1,cluster2 --whitelist '.*' --replication-policyMirrorMaker 2 makes it easy to keep Kafka clusters synchronized across locations, enabling reliable data replication and disaster recovery.
A company with data centers in New York and London uses MirrorMaker 2 to replicate user activity logs in real time, ensuring both sites have up-to-date data for analytics and backup.
Manual data copying between Kafka clusters is slow and error-prone.
MirrorMaker 2 automates replication with built-in reliability and consistency.
This tool enables seamless multi-cluster data synchronization and disaster recovery.
Practice
Solution
Step 1: Understand MirrorMaker 2 role
MirrorMaker 2 is designed to replicate data from one Kafka cluster to another to ensure data safety and availability.Step 2: Compare options with MirrorMaker 2 function
Only To copy data between Kafka clusters for backup and availability describes copying data between clusters, which matches MirrorMaker 2's purpose.Final Answer:
To copy data between Kafka clusters for backup and availability -> Option AQuick Check:
MirrorMaker 2 purpose = Data replication [OK]
- Confusing MirrorMaker 2 with monitoring tools
- Thinking it creates topics automatically
- Assuming it compresses messages
Solution
Step 1: Identify source cluster connection
MirrorMaker 2 uses consumer configs to read from the source Kafka cluster.Step 2: Match config key to source cluster
The correct config key for source cluster is consumer.bootstrap.servers, which tells MirrorMaker 2 where to consume data from.Final Answer:
consumer.bootstrap.servers -> Option DQuick Check:
Source cluster = consumer.bootstrap.servers [OK]
- Using producer.bootstrap.servers for source cluster
- Confusing config keys with mirror.bootstrap.servers
- Assuming replica.bootstrap.servers is valid
{
"source.cluster.bootstrap.servers": "source:9092",
"target.cluster.bootstrap.servers": "target:9092",
"topics": "topicA,topicB",
"num.streams": 3
}How many parallel streams will MirrorMaker 2 use to copy data?
Solution
Step 1: Locate num.streams setting
The config sets "num.streams" to 3, which controls how many parallel streams MirrorMaker 2 uses.Step 2: Understand effect of num.streams
More streams mean more parallelism in copying data, so MirrorMaker 2 will use 3 streams here.Final Answer:
3 -> Option AQuick Check:
num.streams = 3 [OK]
- Assuming default 1 stream if not read carefully
- Confusing topics count with streams count
- Ignoring num.streams config
topics = "topic1,topic2" num.streams = 0
What is the problem with this configuration?
Solution
Step 1: Check num.streams value validity
num.streams controls parallel streams and must be at least 1 to work properly.Step 2: Identify error in config
Setting num.streams to 0 disables streams, causing MirrorMaker 2 to fail or not copy data.Final Answer:
num.streams cannot be zero; it must be at least 1 -> Option BQuick Check:
num.streams ≥ 1 required [OK]
- Thinking topics must be single only
- Assuming num.streams can be zero
- Believing num.streams must be even
Solution
Step 1: Understand topic filtering in MirrorMaker 2
MirrorMaker 2 supports filtering topics by regex using the "topics.regex" config.Step 2: Match regex to desired pattern
To match all topics starting with "logs-", the regex "logs-.*" correctly matches any topic beginning with "logs-".Step 3: Compare options
"topics": "logs-*" uses "topics" with wildcard which is not supported; "topics": "logs-" matches exact topic name; "topics.regex": "^logs$" matches only "logs" exactly.Final Answer:
"topics.regex": "logs-.*" -> Option CQuick Check:
Use topics.regex with proper regex for filtering [OK]
- Using wildcard * in topics instead of regex
- Confusing exact match with regex match
- Using incorrect regex that matches wrong topics
Ready to prove it?
Pass the test and this pattern moves unknown
