aboutsummaryrefslogtreecommitdiffhomepage
path: root/README.md
diff options
context:
space:
mode:
authorYuchen Wu <[email protected]>2024-02-27 20:25:44 -0800
committerYuchen Wu <[email protected]>2024-02-27 20:25:44 -0800
commit8797329225018c4d0ab990166dd020338ae292dc (patch)
tree1e8d0bf6f3c27e987559f52319d91ff75e4da5cb /README.md
parent0bca116c1027a878469b72352e1e9e3916e85dde (diff)
downloadpingora-8797329225018c4d0ab990166dd020338ae292dc.tar.gz
pingora-8797329225018c4d0ab990166dd020338ae292dc.zip
Release Pingora version 0.1.0v0.1.0
Co-authored-by: Andrew Hauck <[email protected]> Co-authored-by: Edward Wang <[email protected]>
Diffstat (limited to 'README.md')
-rw-r--r--README.md64
1 files changed, 62 insertions, 2 deletions
diff --git a/README.md b/README.md
index cbfaf2e..cd80748 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,65 @@
# Pingora
-[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
+![Pingora banner image](./docs/assets/pingora_banner.png)
-A library for building fast, reliable and evolvable network services.
+## What is Pingora
+Pingora is a Rust framework to [build fast, reliable and programmable networked systems](https://blog.cloudflare.com/pingora-open-source).
+
+Pingora is battle tested as it has been serving more than 40 million Internet requests per second for [more than a few years](https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet).
+
+## Feature highlights
+* Async Rust: fast and reliable
+* HTTP 1/2 end to end proxy
+* TLS over OpenSSL or BoringSSL
+* gRPC and websocket proxying
+* Graceful reload
+* Customizable load balancing and failover strategies
+* Support for a variety of observability tools
+
+## Reasons to use Pingora
+* **Security** is your top priority: Pingora is a more memory safe alternative for services that are written in C/C++.
+* Your service is **performance-sensitive**: Pingora is fast and efficient.
+* Your service requires extensive **customization**: The APIs Pingora proxy framework provides are highly programmable.
+
+# Getting started
+
+See our [quick starting guide](./docs/quick_start.md) to see how easy it is to build a load balancer.
+
+Our [user guide](./docs/user_guide/index.md) covers more topics such as how to configure and run Pingora servers, as well as how to build custom HTTP server and proxy logic on top of Pingora's framework.
+
+API docs are also available for all the crates.
+
+# Notable crates in this workspace
+* Pingora: the "public facing" crate to build to build networked systems and proxies.
+* Pingora-core: this crates defined the protocols, functionalities and basic traits.
+* Pingora-proxy: the logic and APIs to build HTTP proxies.
+* Pingora-error: the common error type used across Pingora crates
+* Pingora-http: the HTTP header definitions and APIs
+* Pingora-openssl & pingora-boringssl: SSL related extensions and APIs
+* Pingora-ketama: the [Ketama](https://github.com/RJ/ketama) consistent algorithm
+* Pingora-limits: efficient counting algorithms
+* Pingora-load-balancing: load balancing algorithm extensions for pingora proxy
+* Pingora-memory-cache: Async in-memory caching with cache lock to prevent cache stampede.
+* Pingora-timeout: A more efficient async timer system.
+* TinyUfo: The caching algorithm behind pingora-memory-cache.
+
+# 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)
+
+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.
+
+Our current MSRV is 1.72.
+
+# Contributing
+Please see our [contribution guidelines](./.github/CONTRIBUTING.md).
+
+# License
+This project is Licensed under [Apache License, Version 2.0](./LICENSE).