Happy to announce a major overhaul to RoadRunner, an open-source PHP application server written in Go that our research and development team at Spiral Scout works on. Release 2.4.0 is a massive update that includes the following capabilities that were requested by the open-source engineering community. We will try to outline all the changes since last time we gave an update.
- RoadRunner can now manage your queues (previously this was only available in the Spiral Framework)
- We included worker level load-balancing (planned fair scheduling) to make sure that no jobs would get stuck
- We added support for RabbitMQ, Amazon SQS, Beanstalk, Memory, and Local drivers
- Memory driver will not persist task data but can be used to run background tasks
- Local (BoltDB) queue plugin guarantees at-least-once execution and can be used without any external brokers for smaller projects
Benchmarks (5950x machine, dummy payloads):
- Memory – 300K RPS (approx)
- RabbitMQ – 100K RPS (approx)
- Beanstalk – 10K RPS (approx)
- SQS – 1-2K RPS (approx)
- Local – 50 RPS (not K, just 50)
The plugin declares the queue pipelines on the fly, manages the re-connects, and ensures the system’s durability as a whole. Other functionality includes protobuf protocol, custom message headers, data serialization, delays, and retry functionality.
In earlier releases, we included a new standard plugin to work with Key-Value storage and cache. The plugin provides PSR-16 compatible interface and supports multiple drivers:
- Redis (including Redis cluster)
- BoltDB (local storage)
- Memory (could be shared across workers)
We have a number of updates coming to RoadRunner 2 including GRPC (previously we provided a separate server), LetsEncrypt and PubSub bus, plus much more.
You can find the link to the overall release here: https://github.com/spiral/roadrunner/releases/tag/v2.4.0