cloudflare/pingora
요약
Pingora는 Rust로 작성된 고성능 네트워크 프레임워크로, 빠르고 신뢰할 수하며 프로그래밍 가능한 시스템 구축을 목표로 합니다. 초당 4천만 건 이상의 요청 처리가 검증되었으며, HTTP/2 엔드 투 엔드 프록시 기능과 다양한 로드 밸런싱 및 장애 복구 전략을 제공합니다. 보안성을 최우선으로 고려하여 C/C++ 기반 서비스의 메모리 안전한 대안을 제시하며, 개발자가 커스텀 로직을 쉽게 구현할 수 있도록 높은 수준의 프로그래밍 가능성을 자랑합니다.
핵심 포인트
- Rust 기반의 고성능 네트워크 프레임워크로, 초당 4천만 건 이상의 트래픽 처리가 검증됨.
- HTTP/2 엔드 투 엔드 프록시 기능을 제공하며, gRPC 및 WebSocket 프록싱도 지원함.
- 보안성이 최우선 목표이며, C/C++ 기반 서비스 대비 메모리 안전성을 크게 향상시킴.
- 커스터마이징 가능한 로드 밸런싱 및 장애 복구 전략을 통해 유연한 네트워크 시스템 구축이 가능함.
- 다양한 서브 크레이트(예: pingora-load-balancing, pingora-memory-cache)를 제공하여 모듈화된 개발 환경을 지원함.
Pingora 는 빠르고 신뢰할 수 있으며 프로그래밍 가능한 네트워크 시스템을 구축하기 위한 Rust 프레임워크입니다.
Pingora 는 몇 년간 초당 4,000 만 개 이상의 인터넷 요청을 처리해 왔으며 battle tested(전투 테스트)되었습니다.
- Async Rust: 빠르고 신뢰할 수 있음
- HTTP 1/2 엔드 투 엔드 프록시
- TLS over OpenSSL, BoringSSL, s2n-tls, 또는 rustls(실험적)
- gRPC 와 websocket 프록싱
- Graceful reload
- 커스터마이징 가능한 load balancing 과 failover 전략
- 다양한 observability 도구 지원
Security(보안) 은 최우선 우선순위입니다: Pingora 는 C/C++ 로 작성된 서비스의 더 memory safe(메모리 안전) 대안입니다.
performance-sensitive(성능 민감형): Pingora 는 빠르고 효율적입니다.
customization(커스터마이징): Pingora 프록시 프레임워크가 제공하는 API 는 매우 프로그래밍 가능합니다.
load balancer 를 구축하는 것이 얼마나 쉬운지 확인하기 위해 빠른 시작 가이드를 참조하세요.
사용자 가이드는 Pingora 서버를 구성하고 실행하는 방법, 그리고 Pingora 의 프레임워크 위에 커스텀 HTTP 서버와 프록시 로직을 구축하는 방법에 대한 더 많은 주제를 다룹니다.
모든 crate 에 대한 API 문서도 제공됩니다.
- Pingora: 네트워크 시스템 및 프록시를 구축하기 위한 "public facing(공식 공개용)" crate
- Pingora-core: 이 crate 는 프로토콜, 기능 및 기본 traits 를 정의합니다
- Pingora-proxy: HTTP 프록시를 구축하기 위한 로직 및 API
- Pingora-error: Pingora crates 전반에 걸쳐 사용되는 공통 error type
- Pingora-http: HTTP header 정의 및 API
- Pingora-openssl & pingora-boringssl: SSL 관련 extensions 과 API
- Pingora-ketama: Ketama 일관성 알고리즘
- Pingora-limits: 효율적인 counting algorithms
- Pingora-load-balancing: pingora-proxy 에 대한 load balancing algorithm extensions
- Pingora-memory-cache: cache lock 을 통한 cache stampede 를 방지하는 Async in-memory caching
- Pingora-s2n: s2n-tls 와 관련된 SSL extensions 과 API
- Pingora-timeout: 더 효율적인 async timer 시스템
- TinyUfo: pingora-memory-cache 뒤에 있는 caching algorithm
Pingora 프록시 통합과 caching 은 experimental(실험적) 으로 간주되어야 하며, 따라서 caching 관련 API 는 현재 매우 volatile(변동적) 입니다.
Linux 는 tier 1 환경이며 주된 초점입니다.
대부분의 코드를 Unix 환경에서 컴파일할 수 있도록 최선을 다합니다. 이는 macOS 와 같은 Unix-like 환경에서 Pingora 를 개발하는 데 더 쉬운 시간을 제공하기 위함입니다 (일부 기능은 누락될 수 있음).
Windows 지원은 커뮤니티의 best effort(최선의 노력) 에 의해서만 예비적입니다.
x86_64 및 aarch64 아키텍처 모두 지원됩니다.
Pingora 는 MSRV(최소 지원 Rust 버전) 정책으로 6 개월을 유지합니다. 이는 새로운 Rust 버전을 사용하는 PR 을 받더라도, 사용된 새 Rust 버전이 최소 6 개월 이상 된 경우를 의미합니다. 그러나 우리는 workspace 전체의 최고 MSRV 를 충분히 설득력 있는 이유 없이 bump(업데이트)하지 않습니다.
현재 MSRV 는 1.84 입니다.
현재 모든 crates 가 rust-version 을 강제하지 않습니다.
낮은 버전에서도 일부 crates 를 사용할 수 있기 때문입니다.
이 저장소의 일부 crates 는 빌드하기 위해 추가 도구 및 라이브러리를 필요로 합니다:
- Clang 이 시스템에 설치되어 있는지 확인하세요 (boringssl 에게서)
- Perl 5 가 시스템에 설치되어 있는지 확인하세요 (openssl 에게서)
기여 가이드를 참조하세요.
이 프로젝트는 Apache License, Version 2.0 하에 라이선스됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기