pingora README

The project's README from github.com/cloudflare/pingora. As one markdown file: README.md.

Pingora

Pingora banner image

What is Pingora

Pingora is a Rust framework to build fast, reliable and programmable networked systems.

Pingora is battle tested as it has been serving more than 40 million Internet requests per second for more than a few years.

Feature highlights

Reasons to use Pingora

Getting started

See our quick starting guide to see how easy it is to build a load balancer.

Our user guide covers more topics such as how to configure and run Pingora servers, as well as how to build custom HTTP servers and proxy logic on top of Pingora's framework.

API docs are also available for all the crates.

Notable crates in this workspace

Note that Pingora proxy integration with caching should be considered experimental, and as such APIs related to caching are currently highly volatile.

System requirements

Systems

Linux is our tier 1 environment and main focus.

We will try our best for most code to compile for Unix environments. This is for developers and users to have an easier time developing with Pingora in Unix-like environments like macOS (though some features might be missing)

Windows support is preliminary by community's best effort only.

Both x86_64 and aarch64 architectures will be supported.

Rust version

Pingora keeps a rolling MSRV (minimum supported Rust version) policy of 6 months. This means we will accept PRs that upgrade the MSRV as long as the new Rust version used is at least 6 months old. However, we generally will not bump the highest MSRV across the workspace without a sufficiently compelling reason.

Our current MSRV is 1.85.

Currently not all crates enforce rust-version as it is possible to use some crates on lower versions.

Build Requirements

Some of the crates in this repository have dependencies on additional tools and libraries that must be satisfied in order to build them:

Contributing

Please see our contribution guidelines.

License

This project is Licensed under Apache License, Version 2.0.

pingora (cloudflare/pingora)

caching
Searching Database…

27.6K ·GitHub
What is this?Pingora is a Rust framework by Cloudflare for building fast, reliable, and programmable network services and proxies. It is battle-tested, having served more than 40 million internet requests per second for years.
Is this a ready-made proxy server or a framework I build on top of?It is a framework made up of several Rust crates (pingora-core, pingora-proxy, pingora-load-balancing, etc.) that you use to assemble your own proxy or networked service, not a drop-in standalone proxy binary.
How do I get started building something with it?Follow the quick starting guide to build a simple load balancer first, then use the user guide for configuring and running Pingora servers and building custom HTTP proxy logic on top of the framework's APIs.
What do I need installed to build it?You need Clang installed (required for the BoringSSL build) and Perl 5 (required for OpenSSL), plus a Rust toolchain of at least version 1.85 since Pingora keeps a rolling 6-month MSRV policy.
Does it run as well outside Linux?Linux is the tier-1, main-focus environment. macOS is supported for development convenience though some features might be missing, and Windows support is only preliminary and maintained on a community best-effort basis.
Which TLS backends can I use with Pingora?OpenSSL, BoringSSL, and s2n-tls are supported TLS backends, with rustls support currently marked as experimental.
Can I build a caching proxy with it?There is a pingora-memory-cache crate for async in-memory caching with cache-lock protection against cache stampede, but caching integration with pingora-proxy is explicitly called experimental with volatile APIs.
Why would I choose Pingora over a C/C++ proxy?Pingora gives you memory safety as a Rust alternative to services traditionally written in C/C++, while still delivering comparable speed and efficiency for performance-sensitive workloads.
Does it support gRPC and WebSocket traffic?Yes, Pingora includes gRPC and WebSocket proxying as built-in feature highlights alongside HTTP/1 and HTTP/2 end-to-end proxying.
What are similar projects?nginx, tengine, brpc, actix-web, node-http-proxy, workflow, busbar, warp
Creator
cloudflare
Size
6.5 MB
Stars
27.6K
Age
3y
Commits · 90 Days