Crate pingora

Source
Expand description

§Pingora

Pingora is a framework to build fast, reliable and programmable networked systems at Internet scale.

§Features

  • Http 1.x and Http 2
  • Modern TLS with OpenSSL or BoringSSL (FIPS compatible)
  • Zero downtime upgrade

§Usage

This crate provides low level service and protocol implementation and abstraction.

If looking to build a (reverse) proxy, see pingora-proxy crate.

§Feature flags

§Tls

Tls is provided by adding one of these features. If no tls-providing feature is added, only unencrypted http. Only one tls-providing feature can be selected at a time

  • openssl — Use OpenSSL for tls

    Requires native openssl libraries and build tooling

  • boringssl — Use BoringSSL for tls

    Requires native boring libraries and build tooling

  • rustls — Use rustls for tls

    ⚠️ Highly Experimental! ⚠️ Try it, but don’t rely on it (yet)

§Pingora extensions

  • proxy — Include the proxy module

    This feature will include and export pingora_proxy::prelude::*

  • lb — Include the lb (load-balancing) module

    This feature will include and export pingora_load_balancing::prelude::*

  • cache — Include the cache module

    This feature will include and export pingora_cache::prelude::*

  • time — Enable time/scheduling functionality

  • sentry — Enable sentry for error notifications

Modules§

apps
The abstraction and implementation interface for service application logic
cachecache
Caching services and tooling
connectors
Connecting to servers
http
HTTP header objects that preserve http header cases
lblb
Load balancing recipes
listeners
The listening endpoints (TCP and TLS) and their configurations.
modules
Modules to extend the functionalities of pingora services.
prelude
A useful set of types for getting started
protocols
Abstractions and implementations for protocols including TCP, TLS and HTTP
proxyproxy
Proxying recipes
server
Server process and configuration management
services
The service interface
timetime
Timeouts and other useful time utilities
upstreams
The interface to connect to a remote server
utils
This module contains various types that make it easier to work with bytes and X509 certificates.

Structs§

Error
The struct that represents an error

Enums§

ErrorSource
The source of the error
ErrorType
Predefined type of errors
ImmutStr
A data struct that holds either immutable string or reference to static str. Compared to String or Box<str>, it avoids memory allocation on static str.
RetryType
Whether the request can be retried after encountering this error

Traits§

Context
Helper trait to add more context to a given error
ErrorTrait
Error is a trait representing the basic expectations for error values, i.e., values of type E in Result<T, E>.
OkOrErr
Helper trait to convert an Option to an Error with context.
OrErr
Helper trait to chain errors with context

Type Aliases§

BError
The boxed Error, the desired way to pass Error
Result
Syntax sugar for std::Result<T, BError>