#负载均衡 #轮询 #服务器 #API 服务器 #闪亮 #管道工

bin+lib faucet-server

欢迎使用 Faucet,它是您部署管道 API 和闪亮应用程序的必备解决方案,速度极快且效率高。Faucet 是一个用 Rust 构建的轻量级服务器,提供轮询和轮询+IP 哈希负载均衡,以实现 R 应用程序的平滑扩展和分布。无论是数据科学家、开发者还是 DevOps 爱好者,Faucet 都可以简化部署过程,使管理副本和有效平衡负载变得前所未有的简单。

12 个版本 (4 个重大更改)

0.6.0 2024 年 6 月 21 日
0.5.2 2024 年 1 月 16 日
0.4.2 2024 年 1 月 3 日
0.4.1 2023 年 12 月 15 日
0.2.3 2023 年 12 月 1 日

#1#闪亮

每月 45 次下载

MIT 许可证

105KB
2.5K SLoC

faucet

Crates.io test

轻松高效地扩展和部署管道 API 和闪亮应用程序。

摘要

欢迎使用 faucet,它是您部署管道 API 和闪亮应用程序的必备解决方案,速度极快且效率高。Faucet 是一个用 Rust 构建的轻量级服务器,提供轮询和 IP 哈希负载均衡,以实现 R 应用程序的平滑扩展和分布。无论是数据科学家、开发者还是 DevOps 爱好者,Faucet 都可以简化部署过程,使管理副本和有效平衡负载变得前所未有的简单。

特性

  • 高性能: faucet 是以速度为核心设计的,利用 Rust 的性能优势确保您的 R 应用程序运行流畅且高效。

  • 负载均衡: 在轮询和 IP 哈希负载均衡策略之间进行选择,以在多个实例之间分配传入请求,优化资源利用率。

  • 副本: 通过运行多个副本轻松扩展您的管道 API 和闪亮应用程序,从而提高性能和可用性。

  • 简化部署: faucet 简化了部署过程,使您的 R 应用程序快速启动变得轻而易举。

  • 异步和并发: faucet 利用异步和并发处理,确保资源的最优利用和请求的响应处理。

使用方法

获取帮助

要显示帮助信息,请运行以下命令

faucet --help

启动管道 API

要启动管道 API,您只需指定包含 'plumber.R' 文件的目录。Faucet 将自动检测文件并启动 API。

faucet --dir /path/to/plumber/api

服务器默认将自动监听端口 3838。要更改主机和端口,请使用 --host 标志指定绑定到服务的套接字地址。

faucet --dir /path/to/plumber/api --host 0.0.0.0:3000

默认情况下,faucet将启动与机器上逻辑核心数量相等的工人。要指定工人数量,请使用--workers标志。

faucet --dir /path/to/plumber/api --workers 4

启动Shiny应用程序

要启动Shiny应用程序,您只需指定包含'app'.R'文件的目录。faucet将自动检测文件并启动应用程序。

faucet --dir /path/to/shiny/app

服务器默认将自动监听端口 3838。要更改主机和端口,请使用 --host 标志指定绑定到服务的套接字地址。

faucet --dir /path/to/shiny/app --host 0.0.0.0:3000

默认情况下,faucet将启动与机器上逻辑核心数量相等的工人。要指定工人数量,请使用--workers标志。

faucet --dir /path/to/shiny/app --workers 4

注意:在Shiny应用程序中,faucet将强制使用IP哈希负载均衡。这是因为Shiny应用程序需要在客户端和服务器之间建立持久连接。如果使用轮询负载均衡,客户端将在每次请求时被重定向到不同的实例,从而导致连接丢失。

为Plumber API选择负载均衡策略

faucet支持Plumber API的两种负载均衡策略:轮询和IP哈希。默认情况下,faucet将使用轮询负载均衡。要更改策略,请使用--strategy标志。

faucet --dir /path/to/plumber/api --strategy ip-hash

显式设置应用程序类型

默认情况下,faucet将尝试根据指定目录中的文件检测应用程序类型。如果您想显式设置应用程序类型,请使用--type标志。

faucet --dir /path/to/plumber/api --type plumber
faucet --dir /path/to/shiny/app --type shiny

与Nginx/反向代理一起使用

如果您想在反向代理后运行多个faucet实例,或者您想启用HTTPS,您可以使用Nginx或任何其他反向代理。但是,为了确保faucet正确检测客户端IP地址,您需要设置X-Forwarded-ForX-Real-IP头。

Nginx

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://...;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        ...
    }
}

此外,在运行faucet时,您需要将-i / --ip-from flat设置为x-forwarded-forx-real-ip,具体取决于您在Nginx中设置的哪个头。

faucet --dir /path/to/plumber/api --ip-from x-forwarded-for

环境变量

每个选项/标志也可以使用环境变量设置,这在例如使用Docker时很有用。

选项/标志 环境变量 描述
--dir FAUCET_DIR 应用程序的路径
--host FAUCET_HOST 绑定服务器的宿主和端口
--workers FAUCET_WORKERS 要启动的工人数量
--strategy FAUCET_STRATEGY 负载均衡策略
--type FAUCET_TYPE 应用程序类型(shiny或plumber)
--ip-from FAUCET_IP_FROM 获取客户端IP地址的头部或方法
--rscript FAUCET_RSCRIPT Rscript可执行文件的路径

安装

选项1:二进制下载(Linux)

GitHub Releases页面下载Linux的最新faucet版本。这应该适用于大多数Linux发行版。

FAUCET_VERSION="v0.5.2"

wget https://github.com/ixpantia/faucet/releases/download/$FAUCET_VERSION/faucet-x86_64-unknown-linux-musl -O faucet

# Make the binary executable
chmod +x faucet

# Move the binary to a directory in your PATH (e.g., user local bin)
mv faucet ~/.local/bin

选项2:使用Cargo安装(Linux,macOS,Windows)

使用Rust的包管理器Cargo安装faucet。

  1. 按照此处的说明安装Rust。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 使用Cargo安装faucet。
cargo install faucet-server --version ^0.5

选项3:从源代码构建(Linux,macOS,Windows)

  1. 按照此处的说明安装Rust。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 克隆faucet存储库。
git clone https://github.com/ixpantia/faucet.git
  1. 使用Cargo构建faucet。
cargo install --path .

依赖项

~9–19MB
~253K SLoC