zoukankan      html  css  js  c++  java
  • 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}
    QQ群 247823727 博客文件如果不能下载请进群下载
    如果公司项目有技术瓶颈问题,如有需要,请联系我,提供技术服务 QQ: 903464207
  • 相关阅读:
    BZOJ 1305 dance跳舞(最大流+二分答案)
    计蒜客 贝壳找房计数比赛(可重全排列+逆元)
    计蒜客 贝壳找房函数最值(好题,巧妙排序)
    Codeforces 463D Gargari and Permutations(求k个序列的LCS)
    Codeforces 552C Vanya and Scales(进制转换+思维)
    Codeforces 682C Alyona and the Tree (树上DFS+DP)
    Codeforces 332B Maximum Absurdity(DP+前缀和处理)
    Codeforces 981D Bookshelves(按位贪心+二维DP)
    Codeforces 225C Barcode(矩阵上DP)
    Codeforces 988F Rain and Umbrellas(DP)
  • 原文地址:https://www.cnblogs.com/zx-admin/p/14804260.html
Copyright © 2011-2022 走看看