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 the last time we gave an update.
Queue plugin
- 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.
Documentation: https://roadrunner.dev/docs/plugins-jobs/2.x/en
KeyValue plugin
- Redis (including Redis cluster)
- Memcache
- BoltDB (local storage)
- Memory (could be shared across workers)
Temporal
You can now integrate with the Temporal workflow server SDK. Now you can run both tasks in a distributed and fault-tolerant fashion and create your own workflow definitions using async PHP SDK.
SDK: https://github.com/temporalio/sdk-php
Documentation: https://docs.temporal.io/docs/php/introduction
Roadmap
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