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)

Searching Database…

27.6K ·GitHub
Что это такое?Pingora — это фреймворк на Rust от Cloudflare для создания быстрых, надёжных и программируемых сетевых сервисов и прокси. Он проверен в боевых условиях: годами обрабатывал более 40 миллионов интернет-запросов в секунду.
Это готовый прокси-сервер или фреймворк, на основе которого я что-то строю?Это фреймворк, состоящий из нескольких крейтов Rust (pingora-core, pingora-proxy, pingora-load-balancing и др.), из которых вы собираете собственный прокси или сетевой сервис. Это не готовый самостоятельный исполняемый файл прокси-сервера.
Как начать что-то создавать с его помощью?Сначала следуйте краткому руководству по началу работы, чтобы собрать простой балансировщик нагрузки, а затем используйте пользовательское руководство по настройке и запуску серверов Pingora и созданию собственной логики HTTP-прокси на основе API фреймворка.
Что нужно установить, чтобы всё собрать?Нужен установленный Clang (обязателен для сборки BoringSSL) и Perl 5 (обязателен для OpenSSL), а также инструментарий Rust версии не ниже 1.85, поскольку Pingora следует скользящей политике минимальной поддерживаемой версии Rust (MSRV) с окном в 6 месяцев.
Работает ли это за пределами Linux?Linux — основная платформа с наивысшим приоритетом поддержки. macOS поддерживается для удобства разработки, но некоторых функций в ней может не быть, а поддержка Windows пока предварительная и ведётся сообществом по мере возможностей.
Какие TLS-бэкенды можно использовать с Pingora?Поддерживаются бэкенды TLS OpenSSL, BoringSSL и s2n-tls, а поддержка rustls пока помечена как экспериментальная.
Можно ли построить на этом кэширующий прокси?Есть крейт pingora-memory-cache для асинхронного кэширования в памяти с защитой блокировкой кэша от эффекта «стада» (cache stampede), но интеграция кэширования с pingora-proxy прямо названа экспериментальной, а её API нестабильны.
Зачем выбирать Pingora вместо прокси на C/C++?Pingora обеспечивает безопасность памяти, так как написан на Rust — альтернативе языкам, на которых традиционно пишут сервисы на C/C++, и при этом даёт сравнимую скорость и эффективность для задач, чувствительных к производительности.
Поддерживает ли он трафик gRPC и WebSocket?Да, Pingora включает проксирование gRPC и WebSocket как встроенные ключевые возможности наряду со сквозным проксированием HTTP/1 и HTTP/2.
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