Компания Cloudflare опубликовала выпуск фреймворка Pingora 0.7, предназначенного для разработки защищённых высокопроизводительных сетевых сервисов на языке Rust. Построенный при помощи Pingora прокси уже более двух лет используется в сети доставки контента Cloudflare вместо nginx и обрабатывает более 40 млн запросов в секунду. Код написан на языке Rust и опубликован под лицензией Apache 2.0.
Karakteristikat kryesore të Pingora:
- Mbështetje për HTTP/1 dhe HTTP/2 (në planet është HTTP/3), si dhe mundësia për të krijuar shërbime që përdorin protokolle të veta ose UDP/TCP.
- Mbështetje për përpunim shumëthjeshtësor të kërkesave në mënyrë asinkrone.
- Mundësia për të bashkangjitur menaxhuese callback dhe filtra, të cilët lejojnë menaxhimin e fazave të ndryshme të përpunimit të kërkesave, si dhe ndryshimin, ridrejtimin, bllokimin dhe regjistrimin e kërkesave dhe përgjigjeve.
- Proksimi i gRPC dhe WebSocket.
- Balancues ngarkese të qartë.
- Mundësia për të ndryshuar konfigurimin pa rinisje.
- Mbështetje për azhurnimin e kodit të aplikacionit pa ndërprerje të lidhjeve.
- Mjetet për kalimin e ngarkesës në rast dështimi (failover).
- Integrimi me sisteme të ndryshme të monitorimit dhe regjistrimit të të dhënave (Syslog, Prometheus, Sentry, OpenTelemetry).
- Mbështetje për enkriptimin TLS (përdoren OpenSSL, BoringSSL ose Rustls).
- Paketa të gatshme Rust për krijimin e proksi HTTP, punën me protokolle rrjeti, përpunimin e kokës HTTP, mbajtjen dhe kufizimin e trafikut, balancimin e ngarkesës, punën me tabelat e hesh dhe mbajtjen e caches në memorie të përkohshme dhe përpunimin asinkron të kohëve të prishura.
Ndër ndryshimet në versionin e ri:
- В структуру SslDigest добавлено поле «extension», а для типажа TlsAccept реализован обработчик handshake_complete_callback, позволяющие прикреплять к TLS-соединению произвольные данные, специфичные для приложения. В качестве примера показано как использовать данную возможность для создания сервера, читающего информацию из сертификата клиента и возвращающего её в HTTP-ответе.
- Добавлен типаж ConnectionFilter для фильтрации TCP-соединений на стадии до согласования параметров TLS, что позволяет экономить ресурсы, сбрасывая соединения на ранней стадии.
- Добавлена поддержка виртуальных потоков транспортного уровня (Virtual L4 Streams), позволяющих интегрировать в pingora-proxy собственные реализации сетевых протоколов.
- Реализована возможность использования опций verify_cert и verify_hostname в конфигурациях с rustls.
- Для внешних crate-пакетов разрешён доступ к структуре HttpProxy для переопределения логики проксирования запросов.
- Разрешено выделение фоновых обработчиков подзапросов из основного обработчика сеанса.
- Предоставлена возможность отслеживания размера тела запросов HTTP1 и HTTP2, а также метрик работы прокси.
- Добавлена возможность создания собственных сеансов для инкапсулированного HTTP-трафика.
- Выставлено ограничения на использование версий библиотеки lru (0.16.3 или новее) из-за уязвимости в реализации итератора IterMut, приводящей к аварийному завершению из-за срабатывания проверки заимствования переменных (borrow checker).
Burimi: opennet.ru
