Welcome to the Phoesion Glow Kaleidoscope message broker benchmarking repository! This repository is where I benchmark the performance of the Kaleidoscope against other popular message brokers, starting with RabbitMQ.
This repository contains the necessary scripts and tools to perform benchmarking tests comparing the Phoesion Glow Kaleidoscope message broker with other brokers. The main focus is on evaluating performance metrics like message throughput, latency, and resource utilization.
Currently, the benchmarking tests compare Kaleidoscope with RabbitMQ, but I plan to add more message brokers in the future.
To ensure fair and consistent comparisons, the benchmarks are conducted in controlled environments with identical configurations. The key performance metrics evaluated are:
- Message Throughput: Number of messages processed per second.
- Latency: Time taken to deliver a message from producer to consumer.
- Resource Utilization: CPU and memory usage during peak loads.
The benchmark tests yielded the following results:
RabbitMQ - Topic exchange:
- Message Throughput: 40,000 messages/second
- Latency: 80ms for the first message to arrive
RabbitMQ - Direct exchange:
- Message Throughput: 60,000 messages/second
- Latency: 80ms for the first message to arrive
Kaleidoscope - Normal mode:
- Message Throughput: 140,000 messages/second
- Latency: 0ms for the first message to arrive
Kaleidoscope - P2P Mode:
- Message Throughput: 710,000 messages/second
- Latency: 0ms for the first message to arrive
These results highlight a significant performance advantage for Kaleidoscope, especially in P2P mode.
Another chart without Kaleidoscope P2P mode, comparing the performance using the same topology
Follow these instructions to set up the benchmarking environment and run the tests.
-
Clone this repository to your local machine:
git clone [email protected]:gepa21/broker_benchmark.git cd broker_benchmark
-
Download the Phoesion Glow Kaleidoscope portable app archive and run the Phoesion.Glow.Kaleidoscope.exe executable
-
Build the Docker images for RabbitMQ:
docker-compose build
-
Start the message brokers using Docker Compose:
docker-compose up -d
-
Run the benchmarking project using:
dotnet run -c Release --project benchmark\Benchmark.csproj
-
Select broker and press any key to run the benchmark
-
Run it a few times to allow JIT to optimize
These diagrams show how data move in different setups:
I welcome contributions to enhance the benchmarking framework, add support for more message brokers, and improve the analysis tools. Please fork this repository and submit pull requests with your changes.
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any questions, suggestions, or feedback, please feel free to open an issue.
Thank you for your interest in Phoesion Glow. I look forward to your contributions and feedback!