cloudflare/pingora

GitHub: cloudflare/pingora

Cloudflare 开源的 Rust 异步框架,用于构建高性能、内存安全的网络代理和负载均衡服务。

Stars: 26176 | Forks: 1588

# Pingora ![Pingora 横幅图片](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ebb0286498194902.png) ## 什么是 Pingora Pingora 是一个 Rust 框架,用于[构建快速、可靠且可编程的网络系统](https://blog.cloudflare.com/pingora-open-source)。 Pingora 经过了实战检验,它已经[多年](https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet)每秒处理超过 4000 万个互联网请求。 ## 功能亮点 * Async Rust:快速且可靠 * HTTP 1/2 端到端代理 * 基于 OpenSSL, BoringSSL, s2n-tls 或 rustls(实验性)的 TLS * gRPC 和 websocket 代理 * 优雅重载 * 可定制的负载均衡和故障转移策略 * 支持多种可观测性工具 ## 选择 Pingora 的理由 * **安全性**是您的首要任务:对于使用 C/C++ 编写的服务,Pingora 是更具内存安全性的替代方案 * 您的服务对**性能敏感**:Pingora 快速且高效 * 您的服务需要大量的**定制化**:Pingora 代理框架提供的 API 具有高度可编程性 # 快速入门 请参阅我们的[快速入门指南](./docs/quick_start.md),了解构建负载均衡器是多么简单。 我们的[用户指南](./docs/user_guide/index.md)涵盖了更多主题,例如如何配置和运行 Pingora 服务器,以及如何在 Pingora 框架之上构建自定义 HTTP 服务器和代理逻辑。 所有 crates 均提供 API 文档。 # 此工作区中值得注意的 crate * Pingora:用于构建网络系统和代理的“面向公众”的 crate * Pingora-core:此 crate 定义了协议、功能和基本 trait * Pingora-proxy:构建 HTTP 代理的逻辑和 API * Pingora-error:Pingora crate 中通用的错误类型 * Pingora-http:HTTP 头定义和 API * Pingora-openssl & pingora-boringssl:SSL 相关的扩展和 API * Pingora-ketama:[Ketama](https://github.com/RJ/ketama) 一致性算法 * Pingora-limits:高效计数算法 * Pingora-load-balancing:pingora-proxy 的负载均衡算法扩展 * Pingora-memory-cache:带有缓存锁的异步内存缓存,以防止缓存击穿 * Pingora-s2n:与 s2n-tls 相关的 SSL 扩展和 API * Pingora-timeout:更高效的异步计时器系统 * TinyUfo:pingora-memory-cache 背后的缓存算法 请注意,带有缓存的 Pingora 代理集成应被视为实验性的,因此目前与缓存相关的 API 极不稳定。 # 系统要求 ## 系统 Linux 是我们的一级环境和主要关注点。 我们将尽最大努力使大多数代码能在 Unix 环境中编译。这是为了让开发者和用户在类 Unix 环境(如 macOS)中更轻松地使用 Pingora 进行开发(尽管某些功能可能缺失) Windows 支持仅通过社区的最大努力处于初步阶段。 x86_64 和 aarch64 架构均将受到支持。 ## Rust 版本 Pingora 保持 6 个月的滚动 MSRV(最低支持的 Rust 版本)策略。这意味着只要所使用的新 Rust 版本至少有 6 个月历史,我们将接受升级 MSRV 的 PR。但是,通常我们不会在没有充分理由的情况下提升整个工作区的最高 MSRV。 我们目前的 MSRV 是 1.84。 目前并非所有 crate 都强制执行 `rust-version`,因为可以在较低版本上使用某些 crate。 ## 构建要求 此仓库中的某些 crate 依赖于额外的工具和库,必须满足这些条件才能构建它们: * 确保您的系统上安装了 [Clang](用于 boringssl) * 确保您的系统上安装了 [Perl 5](用于 openssl) # 贡献 请参阅我们的[贡献指南](./.github/CONTRIBUTING.md)。 # 许可证 本项目基于 [Apache License, Version 2.0](./LICENSE) 授权。
标签:API集成, BoringSSL, Cloudflare, DNS解析, GitHub, gRPC, HTTP服务器, IP 地址批量处理, Ketama算法, L7, MITRE ATT&CK, OpenSSL, Python工具, Rust, scalability, TLS, WebSocket, 七层代理, 代理缓存, 依赖分析, 内存安全, 反向代理, 可观测性, 可视化界面, 安全合规, 安全测试工具, 并发, 开源项目, 异步编程, 流量管理, 系统编程, 网络代理, 网络安全, 网络框架, 网络流量审计, 负载均衡, 通知系统, 通知系统, 防御工具, 隐私保护, 零拷贝