用户指南
Pingora 是一个基于 Rust 构建的高性能代理框架,由 Cloudflare 开发并开源。
它被用于替代 Nginx,在高并发场景下展现出更好的性能与资源效率。
什么是 Pingora
Pingora 是一个 网络代理框架(proxy framework),它并不是单一应用程序,而是可被用来构建自定义代理、负载均衡器或服务网关的 框架。
通过模块化设计和异步运行模型,你可以在 Pingora 基础上构建:
- 反向代理(Reverse Proxy)
- 正向代理(Forward Proxy)
- 负载均衡(Load Balancer)
- 服务网关(Service Gateway)
- 内部流量路由与过滤器系统
Pingora 的特点
| 特性 | 描述 |
|---|---|
| 🚀 高性能 | 基于 Rust 异步模型,比 Nginx 更快的连接复用与内存安全 |
| 🔐 内存安全 | Rust 的所有权系统杜绝内存泄漏与数据竞争 |
| ⚙️ 模块化 | 按阶段拆分请求生命周期,可自定义过滤器与中间层 |
| 📊 可观测性 | 内置 Tracing 与 Prometheus 支持 |
| 🧠 灵活扩展 | 提供 CTX 上下文共享机制,可在多个阶段共享状态 |
基础组件
Pingora 的主要组成部分包括:
- pingora-core:核心运行库,提供事件循环、IO、多线程调度;
- pingora-proxy:构建 HTTP 代理的核心模块;
- pingora-limiter:提供限流与速率控制;
- pingora-runtime:异步运行时层,管理线程与任务;
- pingora-openssl / pingora-boringssl:SSL/TLS 支持;
- pingora-tools:辅助开发与调试工具。
快速上手流程
- 安装 Rust 环境
curl https://sh.rustup.rs -sSf | sh
`
- 创建 Pingora 项目
cargo new pingora-demo
cd pingora-demo
cargo add pingora-proxy
- 编写最小代理示例
use pingora::prelude::*;
#[tokio::main]
async fn main() {
let mut server = Server::new(None).unwrap();
server.bootstrap();
let app = http_proxy_service(None);
server.run_forever(app).unwrap();
}
- 运行项目
cargo run
打开浏览器访问 http://127.0.0.1:8080,即可看到代理服务启动成功。
下一步
接下来,我们将学习如何 运行 Pingora 服务器、实现 优雅重启、配置管理 等关键功能。 👉 继续阅读:运行 Pingora 服务器
相关内容
- 高级主题 (WIP) 探索 Pingora 的高级特性,包括内部机制、异步运行时、线程模型和自定义扩展。
- 后台服务 学习如何在 Pingora 中配置和运行后台服务,包括定时任务、异步执行和守护进程管理。
- 异步上下文中的阻塞代码 学习如何在 Pingora 异步运行时中处理阻塞代码,确保高并发请求环境下的性能和稳定性。
- 构建 HTTP 代理 学习如何使用 Pingora 构建 HTTP 代理服务,包括基本请求转发、上游配置和自定义过滤器。
- 配置文件 了解 Pingora 的配置文件结构、主要参数及其作用,学习如何为不同场景编写高效、清晰的配置。
- 连接池与复用 学习如何在 Pingora 中使用连接池和连接复用,提高代理服务的性能和资源利用率。