
Le 5 avril 2024, Cloudflare a présenté la première version publique du projet open source Pingora v0.1.0 (déjà v0.1.1). C'est un framework multithread asynchrone en Rust qui aide à créer des services proxy HTTP. Le projet est utilisé pour développer des services qui génèrent une part importante du trafic sur Cloudflare (au lieu d'utiliser Nginx). Le code source de Pingora est publié sur GitHub sous licence Apache 2.0.
Pingora fournit des bibliothèques et des API pour créer des services au-dessus de HTTP/1 et HTTP/2, TLS ou simplement TCP/UDP. En tant que proxy,de serveurs il prend en charge le proxying transparent HTTP/1 et HTTP/2, gRPC et WebSocket. La prise en charge de HTTP/3 est prévue. Pingora inclut également des stratégies de répartition de charge et de basculement personnalisables. Pour répondre aux exigences de sécurité, il prend en charge à la fois les bibliothèques OpenSSL largement utilisées et BoringSSL, conformes aux exigences FIPS (normes fédérales de traitement de l'information des États-Unis) et au chiffrement post-quantique.
En plus de ces fonctionnalités, Pingora fournit des filtres et des callbacks permettant aux utilisateurs de personnaliser complètement la manière dont le service doit traiter, transformer et transférer les requêtes.
En mode opérationnel, Pingora permet un redémarrage fluide sans interruptions pour les mises à jour, ne perdant aucune requête entrante. Syslog, Prometheus, Sentry, OpenTelemetry et d'autres outils de surveillance nécessaires s'intègrent facilement à Pingora.
Fonctionnalités de Pingora : utilisation de Rust asynchrone, prise en charge du proxy end-to-end HTTP 1/2, TLS via OpenSSL ou BoringSSL, gRPC et proxying de WebSocket, rechargement gracieux, stratégies de répartition de charge et de basculement personnalisables, prise en charge de divers outils de surveillance.
La version Pingora v0.1.1 a corrigé les bogues précédemment identifiés, amélioré la performance de l'algorithme pingora-ketama, ajouté plus de benchmarks TinyUFO et de tests pour le purge de pingora-cache, limité la taille du tampon pour les journaux d'erreurs InvalidHTTPHeader, ainsi que corrigé des erreurs de frappe et apporté les ajustements nécessaires dans les commentaires et la documentation du projet.
Source : linux.org.ru
