{"id":13432737,"url":"https://github.com/cloudflare/pingora","last_synced_at":"2025-05-12T18:12:27.082Z","repository":{"id":164123282,"uuid":"636853988","full_name":"cloudflare/pingora","owner":"cloudflare","description":"A library for building fast, reliable and evolvable network services.","archived":false,"fork":false,"pushed_at":"2025-05-02T20:38:54.000Z","size":3898,"stargazers_count":24035,"open_issues_count":172,"forks_count":1369,"subscribers_count":183,"default_branch":"main","last_synced_at":"2025-05-02T21:34:17.063Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudflare.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-05T20:03:08.000Z","updated_at":"2025-05-02T20:44:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"0d8dc4b8-920c-414a-a6c8-4330ef1c0081","html_url":"https://github.com/cloudflare/pingora","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fpingora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fpingora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fpingora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Fpingora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudflare","download_url":"https://codeload.github.com/cloudflare/pingora/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252522453,"owners_count":21761733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T02:01:15.923Z","updated_at":"2025-05-12T18:12:27.066Z","avatar_url":"https://github.com/cloudflare.png","language":"Rust","funding_links":[],"categories":["Rust","Applications","Capabilities","网络服务","Network Service","语言资源库","Networking \u0026 Connectivity","\u003ca name=\"Rust\"\u003e\u003c/a\u003eRust","Networking and Infrastructure Frameworks","Networking \u0026 Performance"],"sub_categories":["Web Servers","API Gateways / Edge Services","网络服务_其他","rust","Tunneling \u0026 Proxies"],"readme":"# Pingora\n\n![Pingora banner image](./docs/assets/pingora_banner.png)\n\n## What is Pingora\nPingora is a Rust framework to [build fast, reliable and programmable networked systems](https://blog.cloudflare.com/pingora-open-source).\n\nPingora 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).\n\n## Feature highlights\n* Async Rust: fast and reliable\n* HTTP 1/2 end to end proxy\n* TLS over OpenSSL, BoringSSL or rustls(experimental).\n* gRPC and websocket proxying\n* Graceful reload\n* Customizable load balancing and failover strategies\n* Support for a variety of observability tools\n\n## Reasons to use Pingora\n* **Security** is your top priority: Pingora is a more memory safe alternative for services that are written in C/C++\n* Your service is **performance-sensitive**: Pingora is fast and efficient\n* Your service requires extensive **customization**: The APIs Pingora proxy framework provides are highly programmable\n\n# Getting started\n\nSee our [quick starting guide](./docs/quick_start.md) to see how easy it is to build a load balancer.\n\nOur [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 servers and proxy logic on top of Pingora's framework.\n\nAPI docs are also available for all the crates.\n\n# Notable crates in this workspace\n* Pingora: the \"public facing\" crate to build networked systems and proxies\n* Pingora-core: this crate defines the protocols, functionalities and basic traits\n* Pingora-proxy: the logic and APIs to build HTTP proxies\n* Pingora-error: the common error type used across Pingora crates\n* Pingora-http: the HTTP header definitions and APIs\n* Pingora-openssl \u0026 pingora-boringssl: SSL related extensions and APIs\n* Pingora-ketama: the [Ketama](https://github.com/RJ/ketama) consistent algorithm\n* Pingora-limits: efficient counting algorithms\n* Pingora-load-balancing: load balancing algorithm extensions for pingora-proxy\n* Pingora-memory-cache: Async in-memory caching with cache lock to prevent cache stampede\n* Pingora-timeout: A more efficient async timer system\n* TinyUfo: The caching algorithm behind pingora-memory-cache\n\nNote that Pingora proxy integration with caching should be considered experimental, and as such APIs related to caching are currently highly volatile.\n\n# System requirements\n\n## Systems\nLinux is our tier 1 environment and main focus.\n\nWe 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)\n\nWindows support is preliminary by community's best effort only.\n\nBoth x86_64 and aarch64 architectures will be supported.\n\n## Rust version\n\nPingora 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.\n\nOur current MSRV is effectively 1.82.\n\nPreviously Pingora advertised an MSRV of 1.72. Older Rust versions may still be able to compile via `cargo update` pinning dependencies such as `backtrace@0.3.74`. The advertised MSRV in config files will be officially bumped to 1.82 in an upcoming release.\n\nBuilding with the optional feature `boringssl` with Boring \u003e= 4.14 requires Rust 1.80.\n\n## Build Requirements\n\nSome of the crates in this repository have dependencies on additional tools and\nlibraries that must be satisfied in order to build them:\n\n* Make sure that [Clang] is installed on your system (for boringssl)\n* Make sure that [Perl 5] is installed on your system (for openssl)\n\n[Clang]:https://clang.llvm.org/\n[Perl 5]:https://www.perl.org/\n\n# Contributing\nPlease see our [contribution guidelines](./.github/CONTRIBUTING.md).\n\n# License\nThis project is Licensed under [Apache License, Version 2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Fpingora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudflare%2Fpingora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Fpingora/lists"}