Компанията Cloudflare публикува второ издание на фреймворка Pingora, предназначен за разработка на защитени високо производителни мрежови услуги на езика Rust. Построен с Pingora, проксито се използва около година в мрежата за доставка на съдържание на Cloudflare вместо nginx и обработва над 40 млн. заявки в секунда. Кодът е написан на Rust и е публикуван под лицензия Apache 2.0.
Основни характеристики на Pingora:
- Поддръжка на HTTP/1 и HTTP/2 (в планиране е HTTP/3), както и възможности за създаване на услуги, използващи собствени протоколи или UDP/TCP.
- Възможност за многопоточна обработка на заявки в асинхронен режим.
- Поддръжка на прикрепяне на callback обработвачи и филтри, позволяващи управление на различните етапи на обработка на заявки, както и промяна, пренасочване, блокиране и регистриране на заявки и отговори.
- Проксиринг на gRPC и WebSocket.
- Разширяеми балансери на натоварването.
- Възможност за промяна на конфигурацията без рестартиране.
- Поддръжка на обновление на кода на приложението без прекъсване на връзките.
- Инструменти за превключване на натоварването в случай на повреда (failover).
- Интеграция с различни системи за мониторинг и логиране (Syslog, Prometheus, Sentry, OpenTelemetry).
- Поддръжка на TLS криптиране (използва се OpenSSL или BoringSSL).
- Готови Rust пакети за създаване на HTTP прокси, работа с мрежови протоколи, анализ на HTTP заглавия, управление и лимитиране на трафика, баланс на натоварване, работа с разпределена хеш таблица Ketama, поддържане на кеш в оперативната памет и асинхронно обработка на таймаутите.
Сред измененията в новата версия:
- Добавена поддръжка за инсталиране на филтри за допълнителни заглавия на HTTP/2.
- Добавена възможност за промяна на размера на буфера на входящите пакети за TCP.
- Добавена функция body_bytes_read().
- Добавен е филтър cache_not_modified_filter.
- Добавена възможност за водене на лог на TLS ключовете.
- Добавена callback функция purge_response.
Източник: opennet.ru
