cloudflare/pingora
GitHub: cloudflare/pingora
Cloudflare 开源的 Rust 异步框架,用于构建高性能、内存安全的网络代理和负载均衡服务。
Stars: 26176 | Forks: 1588
# Pingora

## 什么是 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, 七层代理, 代理缓存, 依赖分析, 内存安全, 反向代理, 可观测性, 可视化界面, 安全合规, 安全测试工具, 并发, 开源项目, 异步编程, 流量管理, 系统编程, 网络代理, 网络安全, 网络框架, 网络流量审计, 负载均衡, 通知系统, 通知系统, 防御工具, 隐私保护, 零拷贝