Bird
Raised Fist0
Kafkadevops~5 mins

MirrorMaker 2 concept in Kafka - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: MirrorMaker 2 concept
O(n)
Understanding Time Complexity

When using MirrorMaker 2, it is important to understand how the time it takes to replicate messages grows as the amount of data increases.

We want to know how the work done changes when more messages need to be copied between Kafka clusters.

Scenario Under Consideration

Analyze the time complexity of the following MirrorMaker 2 replication loop.


while (true) {
  ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
  for (ConsumerRecord<String, String> record : records) {
    producer.send(new ProducerRecord<String, String>(targetTopic, record.key(), record.value()));
  }
  producer.flush();
}
    

This code continuously reads messages from a source Kafka cluster and sends them to a target cluster, replicating data.

Identify Repeating Operations

Look at what repeats as the program runs.

  • Primary operation: Looping over all messages received in each poll.
  • How many times: Once for every message batch fetched, and inside that, once per message.
How Execution Grows With Input

As the number of messages to replicate grows, the work grows too.

Input Size (n)Approx. Operations
10About 10 send operations
100About 100 send operations
1000About 1000 send operations

Pattern observation: The number of send operations grows directly with the number of messages.

Final Time Complexity

Time Complexity: O(n)

This means the time to replicate messages grows in a straight line with the number of messages.

Common Mistake

[X] Wrong: "The replication time stays the same no matter how many messages there are."

[OK] Correct: Each message must be sent individually, so more messages mean more work and more time.

Interview Connect

Understanding how MirrorMaker 2 scales helps you explain real-world data replication challenges clearly and confidently.

Self-Check

"What if MirrorMaker 2 batches messages before sending? How would that affect the time complexity?"

Practice

(1/5)
1. What is the main purpose of Kafka MirrorMaker 2?
easy
A. To copy data between Kafka clusters for backup and availability
B. To create new Kafka topics automatically
C. To monitor Kafka cluster health
D. To compress Kafka messages for storage

Solution

  1. 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.
  2. 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.
  3. Final Answer:

    To copy data between Kafka clusters for backup and availability -> Option A
  4. Quick Check:

    MirrorMaker 2 purpose = Data replication [OK]
Hint: MirrorMaker 2 copies data between clusters for safety [OK]
Common Mistakes:
  • Confusing MirrorMaker 2 with monitoring tools
  • Thinking it creates topics automatically
  • Assuming it compresses messages
2. Which configuration is required to specify the source Kafka cluster in MirrorMaker 2?
easy
A. producer.bootstrap.servers
B. replica.bootstrap.servers
C. mirror.bootstrap.servers
D. consumer.bootstrap.servers

Solution

  1. Step 1: Identify source cluster connection

    MirrorMaker 2 uses consumer configs to read from the source Kafka cluster.
  2. 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.
  3. Final Answer:

    consumer.bootstrap.servers -> Option D
  4. Quick Check:

    Source cluster = consumer.bootstrap.servers [OK]
Hint: Source cluster uses consumer.bootstrap.servers config [OK]
Common Mistakes:
  • Using producer.bootstrap.servers for source cluster
  • Confusing config keys with mirror.bootstrap.servers
  • Assuming replica.bootstrap.servers is valid
3. Given this MirrorMaker 2 config snippet:
{
  "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?
medium
A. 3
B. 2
C. 1
D. 4

Solution

  1. Step 1: Locate num.streams setting

    The config sets "num.streams" to 3, which controls how many parallel streams MirrorMaker 2 uses.
  2. Step 2: Understand effect of num.streams

    More streams mean more parallelism in copying data, so MirrorMaker 2 will use 3 streams here.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    num.streams = 3 [OK]
Hint: Check num.streams value for parallelism count [OK]
Common Mistakes:
  • Assuming default 1 stream if not read carefully
  • Confusing topics count with streams count
  • Ignoring num.streams config
4. You configured MirrorMaker 2 with:
topics = "topic1,topic2"
num.streams = 0

What is the problem with this configuration?
medium
A. topics must be a single topic, not multiple
B. num.streams cannot be zero; it must be at least 1
C. topics should be configured as a list, not a string
D. num.streams must be an even number

Solution

  1. Step 1: Check num.streams value validity

    num.streams controls parallel streams and must be at least 1 to work properly.
  2. Step 2: Identify error in config

    Setting num.streams to 0 disables streams, causing MirrorMaker 2 to fail or not copy data.
  3. Final Answer:

    num.streams cannot be zero; it must be at least 1 -> Option B
  4. Quick Check:

    num.streams ≥ 1 required [OK]
Hint: num.streams must be ≥ 1, zero disables copying [OK]
Common Mistakes:
  • Thinking topics must be single only
  • Assuming num.streams can be zero
  • Believing num.streams must be even
5. You want MirrorMaker 2 to replicate only topics starting with "logs-" from source to target cluster. Which config setting achieves this?
hard
A. "topics": "logs-*"
B. "topics": "logs-"
C. "topics.regex": "logs-.*"
D. "topics.regex": "^logs$"

Solution

  1. Step 1: Understand topic filtering in MirrorMaker 2

    MirrorMaker 2 supports filtering topics by regex using the "topics.regex" config.
  2. Step 2: Match regex to desired pattern

    To match all topics starting with "logs-", the regex "logs-.*" correctly matches any topic beginning with "logs-".
  3. 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.
  4. Final Answer:

    "topics.regex": "logs-.*" -> Option C
  5. Quick Check:

    Use topics.regex with proper regex for filtering [OK]
Hint: Use topics.regex with regex pattern to filter topics [OK]
Common Mistakes:
  • Using wildcard * in topics instead of regex
  • Confusing exact match with regex match
  • Using incorrect regex that matches wrong topics
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard