roadrunner-server / roadrunner

🤯 High-performance PHP application server, process manager written in Go and powered with plugins
https://docs.roadrunner.dev
MIT License
7.95k stars 413 forks source link

[🧹 CHORE]: RoadRunner v2025 thoughts #1959

Open rustatian opened 5 months ago

rustatian commented 5 months ago

Discussion is here: https://github.com/orgs/roadrunner-server/discussions/1960

Let's keep this ticket clean of discussions and leave only ideas on how to improve RoadRunner in the next major release.

Current ideas:

  1. RPC and Logger (and Configurer?): Use these plugins as a basic building blocks, like libraries, not plugins. Reason: currently we have many dependencies for both, RPC and Logger plugins. This prevents us using plugins which have circular dependencies, e.g.: app-logger. App-logger depends on a logger, but with RPC, so internally, this is a separate plugin, because we can't depend on a Logger and RPC at the same time the main logger plugin depends on RPC. Because app-logger also depends on RPC. So, the idea is to use RPC, Logger and might be configurer (not sure about it) as separate libraries, which can be easily configured using only config plugin.
  2. Add enabled=true/false to the plugins' configuration to easily disable plugins via env variables.
  3. Single version for the plugins and RR. Currently, plugins have a regular semver. Sync the version with RR and use calver.
  4. Update AMQP driver dead-lettering logic: link
  5. All seconds configuration values ​​must be in the same format. For example: endure.watchdog_sec is int, but endure.grace_period is string like 10s, redial_timeout from AMQP driver is string.
  6. Jobs plugin: add pipeline name to tag for rr_jobs_jobs_ok/err and rr_jobs_push_ok/err metrics.
  7. Jobs plugin: add rr_jobs_requests_queue similar to rr_http_requests_queue?
  8. Redis driver with a complete Redis API support. Possibly based on some non-redis drivers due to their license update.
Kaspiman commented 5 months ago
  1. Let's fix Priority for AMQP driver: from A lower value corresponds to a higher priority to A higher value corresponds to a higher priority.
  2. All seconds configuration values ​​must be in the same format. For example: endure.watchdog_sec is int, but endure.grace_period is string like 10s, redial_timeout from AMQP driver is string
  3. Workers reloading, but command called reset. it could be consistent with systemd reload
  4. Jobs plugin: add pipeline name to tag for rr_jobs_jobs_ok/err and rr_jobs_push_ok/err metrics?
  5. Jobs plugin: add rr_jobs_requests_queue similar to rr_http_requests_queue?