berndruecker / kafka-connect-zeebe-benchmark

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The kafka-connect-zeebe Benchmark

OUTDATED/UNMAINTAINED: This project uses Zeebe 0.x, and Zeebe is already on version > 1.0 with some API changes. In order to leverage this project you need to upgrade all components.

This project runs a simple benchmark on https://github.com/zeebe-io/kafka-connect-zeebe to check thorughput for different test scenarios.

The workflow sample is based https://github.com/zeebe-io/kafka-connect-zeebe/tree/master/examples/ping-pong

Walkthrough

Setup

Run locally via Docker Compose

cd docker
docker-compose up

I personally run this on a Google Compute Engine (n1-standard-8 (8 vCPUs, 30 GB memory) and then connect via SSH with port forwarding:

ssh -L 9200:localhost:9200 -L 8080:localhost:8080 -L 9021:localhost:9021 -L 8083:localhost:8083 -i ~/gke_key bernd_ruecker_camunda_com@34.89.200.201

Docker compose will start:

This Docker Compose file is based on the examples provided by Zeebe and Confluent:

Run on Kubernetes / GCP

See kubernetes/README.md

Run the benchmark

Deploy workflow

zbctl --insecure deploy process.bpmn

Run test script

This python script does the whole test driving (parameters saying 1 instance with payload type 1):

python run-test.py 1 1

In order to run it you need to install python and:

pip install requests
pip install zeebe-grpc
pip install confluent-kafka
pip install elasticsearch
pip install prometheus_client

The test script

  • Start workflow instances
  • Start Kafka Connect Source so that records are written to Kafka, and then stop it again
  • Start Kafka Connect Sink so that records are correlated back to Zeebe
  • Wait for all workflows to be completly finished

It will print the durations of the different tasks.

Test cases & Payloads

  • 15k instances, 100 byte message size

  • 25k instances, 100 byte message size

  • 1M instances, 100 byte message size

  • 500 instances, 5kb message size

  • 15k instances, 5kb message size

  • 20k instances, 5kb message size

  • 500 instances, 50kb message

  • 2k instances, 50kb message size

About


Languages

Language:Python 87.0%Language:Shell 10.3%Language:Dockerfile 2.7%