0
0
Kafkadevops~20 mins

Disaster recovery planning in Kafka - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Kafka Disaster Recovery Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Kafka Consumer Group Offset Behavior After Broker Failure
Consider a Kafka consumer group consuming from a topic with 3 partitions. The consumer commits offsets automatically every 5 seconds. If one broker hosting a partition leader fails and the leader is moved to another broker, what will be the output of the following code snippet that prints the last committed offset for each partition after the failover?
Kafka
from kafka import KafkaConsumer

consumer = KafkaConsumer(
    'my_topic',
    group_id='my_group',
    bootstrap_servers=['broker1:9092', 'broker2:9092', 'broker3:9092'],
    enable_auto_commit=True,
    auto_commit_interval_ms=5000
)

# Simulate reading messages
for _ in range(10):
    msg = next(consumer)
    print(f'Partition: {msg.partition}, Offset: {msg.offset}')

# After broker failure and leader election
committed = {partition: consumer.committed(partition) for partition in consumer.assignment()}
print(committed)
AA runtime error because the consumer cannot fetch committed offsets after broker failure.
BA dictionary with the last committed offsets for all partitions, reflecting the offsets before the broker failure.
CA dictionary with offsets reset to zero for all partitions due to leader re-election.
DAn empty dictionary because the consumer lost all committed offsets after the broker failure.
Attempts:
2 left
💡 Hint
Think about how Kafka stores committed offsets in __consumer_offsets topic and how leader election affects offset availability.
🧠 Conceptual
intermediate
1:30remaining
Understanding Kafka Replication Factor Impact on Disaster Recovery
In Kafka, what is the primary benefit of setting a replication factor greater than 1 for a topic in the context of disaster recovery?
AIt enables consumers to read messages faster by reading from multiple replicas simultaneously.
BIt increases the throughput of message production by parallelizing writes.
CIt allows messages to be stored on multiple brokers, ensuring data availability if one broker fails.
DIt automatically backs up messages to an external storage system.
Attempts:
2 left
💡 Hint
Think about how Kafka handles broker failures and data loss prevention.
🔧 Debug
advanced
2:00remaining
Identify the Cause of Data Loss in Kafka After Broker Crash
A Kafka topic has replication factor 3 and min.insync.replicas set to 2. Producers use acks='all'. After a broker crash, some messages are missing from the topic. Which code snippet below best explains why data loss occurred?
Kafka
producer = KafkaProducer(
    bootstrap_servers=['broker1:9092', 'broker2:9092', 'broker3:9092'],
    acks='all',
    retries=0
)

# Sending messages
producer.send('my_topic', b'message1')
producer.flush()
ARetries set to 0 causes producer to not retry sending messages if a broker is down, leading to data loss.
BAcks='all' causes the producer to wait indefinitely, causing timeout and message loss.
Cmin.insync.replicas=2 means only one replica must acknowledge, so data loss is expected.
DProducer flush() is asynchronous and does not guarantee message delivery.
Attempts:
2 left
💡 Hint
Consider how producer retries affect message delivery guarantees.
📝 Syntax
advanced
1:30remaining
Identify the Syntax Error in Kafka Topic Configuration Code
Which of the following Kafka topic creation code snippets contains a syntax error that would prevent the topic from being created?
Aadmin_client.create_topics([NewTopic(name='my_topic', num_partitions=3, replication_factor=2)])
Badmin_client.create_topics([NewTopic(name='my_topic', num_partitions=3)])
Cadmin_client.create_topics([NewTopic(name='my_topic', num_partitions=3, replication_factor=2, config={'cleanup.policy':'compact'})])
Dadmin_client.create_topics([NewTopic(name='my_topic', num_partitions=3, replication_factor='2')])
Attempts:
2 left
💡 Hint
Check the data types of the parameters passed to NewTopic.
🚀 Application
expert
3:00remaining
Designing a Kafka Disaster Recovery Plan for Multi-Region Deployment
You are tasked with designing a disaster recovery plan for a Kafka deployment spanning two geographic regions. Which approach below best ensures minimal data loss and quick recovery if one region fails?
AUse MirrorMaker 2 to replicate topics asynchronously between regions with monitoring and failover automation.
BUse a single Kafka cluster spanning both regions with no replication between them.
CSet replication factor to 1 and rely on local backups in each region for recovery.
DManually export and import topic data daily between regions using scripts.
Attempts:
2 left
💡 Hint
Consider how Kafka supports cross-region replication and automated failover.