Theodolite comes with a set of 4 benchmarks for event-driven microservices, which are implemented with Kafka Streams, Apache Flink, Hazelcast Jet, and Apache Beam. For the Beam implementations, we support runners for Apache Samza and Apache Flink. The benchmarks are based on typical use cases for stream processing and named: UC1, UC2, UC3 and UC4. Additionally, we include a load generator for each benchmark.
All benchmark implementations are organized in a Gradle multi-project. See the settings.gradle
file for an overview of subprojects and how they are organized.
We also use Gradle convention plugins, organized in buildSrc
, for sharing build configuration among subprojects.
Additionally, this directory contains:
- Theodolite Benchmark definitions for all benchmarks in
definitions
. - Docker Compose files to assist in local development and to run smoke tests in
docker-test
.
All benchmarks can be built with:
./gradlew build
This produces .tar
files in <benchmark-impl>/build/distribution
, where <benchmark-impl>
is for example
uc1-kstreams
.
Each benchmark implementation directory contains a Dockerfile. To build an image (in this case of uc1-kstreams
), run:
docker build -t theodolite-uc1-kstreams ./uc1-kstreams