GitHub

Pingora Project Description

What is the project about?

Pingora is a Rust framework for building fast, reliable, and programmable networked systems, particularly proxies. It's designed to be a high-performance, memory-safe alternative to systems traditionally built with C/C++.

What problem does it solve?

Pingora addresses the need for:

  • Secure Network Services: It offers a memory-safe environment (using Rust) to reduce vulnerabilities common in C/C++ network applications.
  • High-Performance Proxying: It provides a fast and efficient platform for handling large volumes of HTTP(S) traffic, including HTTP/1 and HTTP/2, gRPC, and WebSockets.
  • Customizable Network Logic: It allows extensive customization of proxy behavior, load balancing, failover, and other network-related tasks.

What are the features of the project?

  • Asynchronous Rust foundation for speed and reliability.
  • End-to-end HTTP/1 and HTTP/2 proxy capabilities.
  • TLS support with OpenSSL, BoringSSL, or rustls (experimental).
  • gRPC and WebSocket proxying.
  • Graceful reload (zero downtime deployments).
  • Customizable load balancing and failover strategies.
  • Integration with various observability tools.
  • Efficient caching mechanisms (TinyUfo algorithm).
  • A more efficient async timer system.

What are the technologies used in the project?

  • Rust: The core programming language.
  • HTTP/1, HTTP/2, gRPC, WebSockets: Supported network protocols.
  • TLS (OpenSSL, BoringSSL, rustls): For secure communication.
  • Asynchronous Programming: For high concurrency and performance.
  • Ketama: Consistent hashing algorithm.
  • TinyUfo: Caching algorithm.
  • Clang: Required for building with boringssl.
  • Perl 5: Required for building with openssl.

What are the benefits of the project?

  • Enhanced Security: Memory safety reduces the risk of common security vulnerabilities.
  • High Performance: Designed for speed and efficiency in handling network traffic.
  • Flexibility and Customization: Highly programmable APIs allow tailoring to specific needs.
  • Reliability: Battle-tested in a high-traffic production environment (Cloudflare).
  • Observability: Supports tools for monitoring and performance analysis.
  • Graceful Reloads: Allows updates and configuration changes without service interruption.

What are the use cases of the project?

  • Building High-Performance Proxies: Creating custom proxy servers for various applications.
  • Load Balancing: Distributing traffic across multiple servers.
  • API Gateways: Managing and securing access to APIs.
  • Content Delivery Networks (CDNs): Caching and delivering content efficiently.
  • Custom Network Applications: Developing specialized network services requiring high performance and security.
  • Any service that is performance-sensitive and requires extensive customization.
pingora screenshot