Scaling K2K

Increase the number of instance handling one replication

Effortlessly scale K2K by developing new applications with a standardized replication pipeline. This enhances your ability to manage increased workloads, elevate performance, and maximize throughput as partitions are seamlessly distributed across instances.

This tutorial assumes the following files exist (See Setting up for more details):

To ensure a clean start, execute this command to reset any prior configurations from earlier tutorials.

1

Starting the Kafka clusters

Use the following command to run the K2K replicator app:

#start k2k
docker compose up k2k
2

Creating topics and data

Run the following commands to create these topics: user-topic, transaction-topic, transfers-eu and transfers-us:

To insert test data, execute the following commands:

write some data to user-topic
docker-compose exec kafka-source \
    ./opt/kafka/bin/kafka-producer-perf-test.sh \
    --topic user-topic \
    --num-records 100 \
    --record-size 20 \
    --throughput -1 \
    --producer-props bootstrap.servers=localhost:9092

#write some data to transaction-topic    
docker-compose exec kafka-source \
    ./opt/kafka/bin/kafka-producer-perf-test.sh \
    --topic transaction-topic \
    --num-records 100 \
    --record-size 20 \
    --throughput -1 \
    --producer-props bootstrap.servers=localhost:9092
    
#write some data to transfers-eu    
docker-compose exec kafka-source \
    ./opt/kafka/bin/kafka-producer-perf-test.sh \
    --topic transfer-eu \
    --num-records 100 \
    --record-size 20 \
    --throughput -1 \
    --producer-props bootstrap.servers=localhost:9092


#write some data to transfers-us    
docker-compose exec kafka-source \
    ./opt/kafka/bin/kafka-producer-perf-test.sh \
    --topic transfers-us \
    --num-records 100 \
    --record-size 20 \
    --throughput -1 \
    --producer-props bootstrap.servers=localhost:9092
3

Run and Scale

#Start 5 K2K instances
docker compose up -d k2k --scale k2k=5

The replication pipeline is now distributed across five different instances.

Last updated

Was this helpful?