golang roadrunner中文文檔(一)基礎介紹


2021年5月24日14:34:05

golang roadrunner中文文檔(一)基礎介紹

golang roadrunner中文文檔(二)PHP Workers

golang roadrunner中文文檔(三)HTTPS 和 HTTP/2

golang roadrunner中文文檔(四)app服務器

golang roadrunner中文文檔(五)集成到其他服務 docker

 

官方文檔:https://roadrunner.dev/docs/php-worker

目錄

RoadRunner v1.0 的文檔可在此處獲得

  • 介紹
    • 它是什么?
    • 特征
    • 安裝
    • 配置參考
    • 執照
  • PHP Workers
    • Workers
    • 環境
    • 開發者模式
    • 錯誤處理
    • 重啟
    • 流程主管
    • RPC 到應用服務器
    • 注意事項
    • 調試
  • HTTP 和 HTTP/2
    • HTTP 和 HTTP/2
    • 靜態內容
    • 標題
    • Golang 中間件
  • 應用服務器
    • CLI 命令
    • 日志記錄
    • 自動重裝
    • 生產用途
    • 編寫 RR systemd 單元文件
    • Prometheus Metrics
    • 健康檢查
    • 搭建服務器
    • RPC
    • 編寫插件
    • 服務插件
  • 工作流引擎
    • 關於 Temporal.IO
    • 工人
  • 集成 V1
    • Migration from V1 to V2
    • CakePHP
    • Laravel
    • Slim
    • Spiral Framework
    • Symfony Framework
    • Symlex Framework
    • Ubiquity Framework
    • Zend Expressive
    • Yii2 and Yii3
    • Phalcon3 and Phalcon4
    • Mezzio
    • Chubbyphp Framework
    • All Composer Libraries
  • Docker
    • Ports and Containers
    • Available Images

 

基礎介紹

它是什么?

RoadRunner 是用 Golang 編寫的 PHP 應用程序的基礎架構級框架。它以worker的形式運行您的應用程序。

高朗

在 Golang 端 RoadRunner 在goroutine上運行你的 PHP 應用程序, 並在多個 worker 之間平衡傳入的有效負載。

基礎圖

可以從 HTTP 請求、AWS Lambda、隊列或任何其他方式接收數據。

PHP

RoadRunner 在傳入請求之間保持 PHP worker 處於活動狀態。這意味着您可以完全消除引導加載時間(例如框架初始化)並大大加快繁重的應用程序。

基礎圖

由於 worker 位於常駐內存中,因此所有打開的資源將保持打開以供下一個請求使用。使用 Goridge RPC,您可以快速將一些復雜的計算卸載到應用服務器。例如,安排后台 PHP job。

關於RoadRunner

最新穩定版本 GoDoc 構建狀態 去報告卡 審查員代碼質量 編碼病毒

RoadRunner 是一個開源(MIT 許可)、高性能 PHP 應用程序服務器、負載均衡器和進程管理器。它支持作為服務運行,能夠在每個項目的基礎上擴展其功能。RoadRunner 包括 PSR-7 兼容的 HTTP 服務器。

特征:

  • 生產就緒
  • 符合 PCI DSS
  • PSR-7 HTTP 服務器(文件上傳、錯誤處理、靜態文件、熱重載、中間件、事件監聽器)
  • HTTPS 和 HTTP/2 支持(包括 HTTP/2 Push、H2C)
  • 一個完全可定制的服務器,FastCGI 支持
  • 靈活的環境配置
  • 無外部 PHP 依賴(需要 64 位版本),嵌入式(基於Goridge
  • 負載平衡器、流程管理器和任務管道
  • 集成指標(Prometheus)
  • Temporal.io 的工作流引擎
  • 在 TCP、UNIX 套接字和標准管道上工作
  • 自動更換Worker 和安全的 PHP 進程銷毀
  • Worker 創建/分配/銷毀超時
  • 每個Worker 的最大工作量
  • Worker 生命周期管理(控制器)
    • maxMemory(優雅停止)
    • TTL(優雅停止)
    • idleTTL(優雅停止)
    • execTTL (brute, max_execution_time)
  • 有效負載上下文和正文
  • 協議、工作者和作業級錯誤管理(包括 PHP 錯誤)
  • 開發模式
  • 與 Symfony、Laravel、Slim、CakePHP、Zend Expressive 的集成
  • Spiral應用服務器
  • 文件更改時自動重新加載
  • 適用於 Windows(Windows 10 支持的 Unix 套接字 (AF_UNIX))

執照:

麻省理工學院許可證 (MIT)。請參閱LICENSE以獲取更多信息。通過 SpiralScout。

安裝

獲取最新 RoadRunner 版本的最簡單方法是使用預構建的發行版二進制文件之一,這些文件可用於 OSX、Linux、FreeBSD 和 Windows。使用這些二進制文件的說明位於 GitHub版本頁面 上

通過 Composer 安裝

您還可以使用 Composer 軟件包附帶的命令自動安裝 RoadRunner,運行:

$ composer require spiral/roadrunner
$ ./vendor/bin/rr get

服務器二進制文件將在您的項目的根目錄中可用。

PHP 的擴展php-curl並且php-zip需要自動下載 RoadRunner。

建造 RoadRunner

RoadRunner 可以在 Linux、OSX、Windows 和其他 64 位環境上編譯,因為唯一的要求是Go 1.13+

要獲取所有需要的依賴項:

$ go mod download

構建:

$ make

去測試:

$ make test

配置

每個 RoadRunner 插件都需要正確配置。默認情況下,此類配置會合並到一個文件中,該文件必須位於項目的根目錄中。每個服務配置都位於指定部分下。配置文件必須命名為.rr.{format}格式所在的位置ymljson以及其他支持的spf13/viper.

配置參考

這是啟用所有 RoadRunner 功能的完整配置參考。

rpc: # TCP address:port for listening. # # Default: "tcp://127.0.0.1:6001" listen: tcp://127.0.0.1:6001 # Application server settings (docs: https://roadrunner.dev/docs/php-worker) server: # Worker starting command, with any required arguments. # # This option is required. command: "php psr-worker.php" # User name (not UID) for the worker processes. An empty value means to use the RR process user. # # Default: "" user: "" # Group name (not GID) for the worker processes. An empty value means to use the RR process user. # # Default: "" group: "" # Environment variables for the worker processes. # # Default: <empty map> env: - SOME_KEY: "SOME_VALUE" - SOME_KEY2: "SOME_VALUE2" # Worker relay can be: "pipes", TCP (eg.: tcp://127.0.0.1:6001), or socket (eg.: unix:///var/run/rr.sock). # # Default: "pipes" relay: pipes # Timeout for relay connection establishing (only for socket and TCP port relay). # # Default: 60s relay_timeout: 60s # Logging settings (docs: https://roadrunner.dev/docs/beep-beep-logging) logs: # Logging mode can be "development" or "production". Do not forget to change this value for production environment. # # Development mode (which makes DPanicLevel logs panic), uses a console encoder, writes to standard error, and # disables sampling. Stacktraces are automatically included on logs of WarnLevel and above. # # Default: "development" mode: development # Logging level can be "panic", "error", "warn", "info", "debug". # # Default: "debug" level: debug # Encoding format can be "console" or "json" (last is preferred for production usage). # # Default: "console" encoding: console # Output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout". # # Default: "stderr" output: stderr # Errors only output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout". # # Default: "stderr" err_output: stderr # You can configure each plugin log messages individually (key is plugin name, and value is logging options in same # format as above). # # Default: <empty map> channels: http: mode: development level: panic encoding: console output: stdout err_output: stderr server: mode: production level: info encoding: json output: stdout err_output: stdout rpc: mode: production level: debug encoding: console output: stderr err_output: stdout # Workflow and activity mesh service. # # Drop this section for temporal feature disabling. temporal: # Address of temporal server. # # Default: "127.0.0.1:7233" address: 127.0.0.1:7233 # Activities pool settings. activities: # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs. # # Default: 0 num_workers: 0 # Maximal count of worker executions. Zero (or nothing) means no limit. # # Default: 0 max_jobs: 64 # Timeout for worker allocation. Zero means no limit. # # Default: 60s allocate_timeout: 60s # Timeout for worker destroying before process killing. Zero means no limit. # # Default: 60s destroy_timeout: 60s # Supervisor is used to control http workers (previous name was "limit", docs: # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard" # limit on the contrary - interrupts the execution of the request. supervisor: # How often to check the state of the workers. # # Default: 1s watch_tick: 1s # Maximum time worker is allowed to live (soft limit). Zero means no limit. # # Default: 0s ttl: 0s # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit. # # Default: 0s idle_ttl: 10s # Maximal worker memory usage in megabytes (soft limit). Zero means no limit. # # Default: 0 max_worker_memory: 128 # Maximal job lifetime (hard limit). Zero means no limit. # # Default: 0s exec_ttl: 60s # Internal temporal communication protocol, can be "proto" or "json". # # Default: "proto" codec: proto # Debugging level (only for "json" codec). Set 0 for nothing, 1 for "normal", and 2 for colorized messages. # # Default: ? debug_level: 2 # HTTP plugin settings. http: # Host and port to listen on (eg.: `127.0.0.1:8080`). # # This option is required. address: 127.0.0.1:8080 # Maximal incoming request size in megabytes. Zero means no limit. # # Default: 0 max_request_size: 256 # Middlewares for the http plugin, order is important. Allowed values is: "headers", "static", "gzip". # # Default value: [] middleware: ["headers", "static", "gzip"] # Allow incoming requests only from the following subnets (https://en.wikipedia.org/wiki/Reserved_IP_addresses). # # Default: ["10.0.0.0/8", "127.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "::1/128", "fc00::/7", "fe80::/10"] trusted_subnets: [ "10.0.0.0/8", "127.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "::1/128", "fc00::/7", "fe80::/10", ] # File uploading settings. uploads: # Directory for file uploads. Empty value means to use $TEMP based on your OS. # # Default: "" dir: "/tmp" # Deny files with the following extensions to upload. # # Default: [".php", ".exe", ".bat"] forbid: [".php", ".exe", ".bat", ".sh"] # Settings for "headers" middleware (docs: https://roadrunner.dev/docs/http-headers). headers: # Allows to control CORS headers. Additional headers "Vary: Origin", "Vary: Access-Control-Request-Method", # "Vary: Access-Control-Request-Headers" will be added to the server responses. Drop this section for this # feature disabling. cors: # Controls "Access-Control-Allow-Origin" header value (docs: https://mzl.la/2OgD4Qf). # # Default: "" allowed_origin: "*" # Controls "Access-Control-Allow-Headers" header value (docs: https://mzl.la/2OzDVvk). # # Default: "" allowed_headers: "*" # Controls "Access-Control-Allow-Methods" header value (docs: https://mzl.la/3lbwyXf). # # Default: "" allowed_methods: "GET,POST,PUT,DELETE" # Controls "Access-Control-Allow-Credentials" header value (docs: https://mzl.la/3ekJGaY). # # Default: false allow_credentials: true # Controls "Access-Control-Expose-Headers" header value (docs: https://mzl.la/3qAqgkF). # # Default: "" exposed_headers: "Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma" # Controls "Access-Control-Max-Age" header value in seconds (docs: https://mzl.la/2PCSdvt). # # Default: 0 max_age: 600 # Automatically add headers to every request passed to PHP. # # Default: <empty map> request: input: "custom-header" # Automatically add headers to every response. # # Default: <empty map> response: X-Powered-By: "RoadRunner" # Settings for "static" middleware (docs: https://roadrunner.dev/docs/http-static). static: # Path to the directory with static assets. # # This option is required. dir: "/path/to/directory" # File extensions to forbid. # # Default: [] forbid: [".htaccess"] # Automatically add headers to every request. # # Default: <empty map> request: input: "custom-header" # Automatically add headers to every response. # # Default: <empty map> response: X-Powered-By: "RoadRunner" # Workers pool settings. pool: # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs. # # Default: 0 num_workers: 0 # Maximal count of worker executions. Zero (or nothing) means no limit. # # Default: 0 max_jobs: 64 # Timeout for worker allocation. Zero means no limit. # # Default: 60s allocate_timeout: 60s # Timeout for worker destroying before process killing. Zero means no limit. # # Default: 60s destroy_timeout: 60s # Supervisor is used to control http workers (previous name was "limit", docs: # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard" # limit on the contrary - interrupts the execution of the request. supervisor: # How often to check the state of the workers. # # Default: 1s watch_tick: 1s # Maximum time worker is allowed to live (soft limit). Zero means no limit. # # Default: 0s ttl: 0s # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit. # # Default: 0s idle_ttl: 10s # Maximal worker memory usage in megabytes (soft limit). Zero means no limit. # # Default: 0 max_worker_memory: 128 # Maximal job lifetime (hard limit). Zero means no limit. # # Default: 0s exec_ttl: 60s # SSL (Secure Sockets Layer) settings (docs: https://roadrunner.dev/docs/http-https). ssl: # Host and port to listen on (eg.: `127.0.0.1:443`). # # Default: ":443" address: "127.0.0.1:443" # Automatic redirect from http:// to https:// schema. # # Default: false redirect: true # Path to the cert file. This option is required for SSL working. # # This option is required. cert: /ssl/server.crt # Path to the cert key file. # # This option is required. key: /ssl/server.key # Path to the root certificate authority file. # # This option is optional. root_ca: /ssl/root.crt # FastCGI frontend support. fcgi: # FastCGI connection DSN. Supported TCP and Unix sockets. An empty value disables this. # # Default: "" address: tcp://0.0.0.0:7921 # HTTP/2 settings. http2: # HTTP/2 over non-encrypted TCP connection using H2C. # # Default: false h2c: false # Maximal concurrent streams count. # # Default: 128 max_concurrent_streams: 128 # Application metrics in Prometheus format (docs: https://roadrunner.dev/docs/beep-beep-metrics). Drop this section # for this feature disabling. metrics: # Prometheus client address (path /metrics added automatically). # # Default: "127.0.0.1:2112" address: "127.0.0.1:2112" # Application-specific metrics (published using an RPC connection to the server). collect: app_metric: type: histogram help: "Custom application metric" labels: ["type"] buckets: [0.1, 0.2, 0.3, 1.0] # Objectives defines the quantile rank estimates with their respective absolute error (for summary only). objectives: - 1.4: 2.3 - 2.0: 1.4 # Health check endpoint (docs: https://roadrunner.dev/docs/beep-beep-health). If response code is 200 - it means at # least one worker ready to serve requests. 500 - there are no workers ready to service requests. # Drop this section for this feature disabling. status: # Host and port to listen on (eg.: `127.0.0.1:2114`). Use the following URL: http://127.0.0.1:2114/health?plugin=http # Multiple plugins must be separated using "&" - http://127.0.0.1:2114/health?plugin=http&plugin=rpc where "http" and # "rpc" are active (connected) plugins. # # This option is required. address: 127.0.0.1:2114 # Response status code if a requested plugin not ready to handle requests # Valid for both /health and /ready endpoints # # Default: 503 unavailable_status_code: 503 # Automatically detect PHP file changes and reload connected services (docs: # https://roadrunner.dev/docs/beep-beep-reload). Drop this section for this feature disabling. reload: # Sync interval. # # Default: "1s" interval: 1s # Global patterns to sync. # # Default: [".php"] patterns: [".php"] # List of included for sync services (this is a map, where key name is a plugin name). # # Default: <empty map> services: http: # Directories to sync. If recursive is set to true, recursive sync will be applied only to the directories in # "dirs" section. Dot (.) means "current working directory". # # Default: [] dirs: ["."] # Recursive search for file patterns to add. # # Default: false recursive: true # Ignored folders. # # Default: [] ignore: ["vendor"] # Service specific file pattens to sync. # # Default: [] patterns: [".php", ".go", ".md"] # RoadRunner internal container configuration (docs: https://github.com/spiral/endure). endure: # How long to wait for stopping. # # Default: 30s grace_period: 30s # Print graph in the graphviz format to the stdout (paste here to visualize https://dreampuf.github.io) # # Default: false print_graph: false # Logging level. Possible values: "debug", "info", "warning", "error", "panic", "fatal". # # Default: "error" log_level: error 

最低配置

您不需要啟用每個插件來使 RoadRunner 工作。給定的配置只啟用必要的插件來使 HTTP 端點工作:

rpc: listen: tcp://127.0.0.1:6001 server: command: "php tests/psr-worker-bench.php" http: address: "0.0.0.0:8080" pool: num_workers: 4 

控制台標志

您可以使用-o標志覆蓋任何配置值

rr serve -o http.address=:80 -o http.workers.pool.numWorkers=1

這些值將與.rr文件合並

環境變量

RoadRunner 將使用對環境變量的引用替換一些配置選項:

http: pool.num_workers: ${NUM_WORKERS}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM