Cloudflare перешла на Pingora, собственный прокси, написанный на Rust

Cloudflare переходит с NGINX на Pingora

Pingora — новый HTTP-прокси, созданный cloudflare с использованием Rust.

Представлен Cloudflare в последнее время кто мигрирует вашей сети доставки контента для использования прокси «пингора», который выделяется тем, что написан на Rust. заменен новый прокси Конфигурация на основе сервера NGINX со сценариями Lua и обработка более миллиарда запросов в день.

Отмечается, что переход на специализированный прокси «Pingora» позволил не только реализовать новые функции и повысить безопасность за счет безопасной работы с памятью, но и привел к значительному увеличению производительности и экономии ресурсов.

Решение на основе Pingora не требует использования Lua и использует оптимизированную под нагрузку архитектуру Cloudflare, потребляя на 70% меньше ресурсов ЦП и на 67% меньше памяти при обработке того же объема трафика.

Длительное время, система прокси трафика между пользователями и конечными серверами на основе скриптов NGINX и Луа соответствует потребностям Cloudflare, но по мере роста сети и увеличения ее сложности универсального решения было недостаточно, как с точки зрения производительности, так и ограничений в расширяемости и реализации новых возможностей для клиентов.

В частности, возникли трудности с добавлением функциональности помимо простого шлюза и балансировщика нагрузки. Например, в случае, если сервер не смог обработать запрос, необходимо было перенаправить запрос на другой сервер, предоставив ему другой набор HTTP-заголовков.

Вместо архитектуры с запросами, разделенными на отдельные рабочие процессы (воркеры), Pingora использует многопоточную модель, что в сценариях использования Cloudflare (высокая концентрация трафика с разных площадок с большим статистическим сдвигом) показало более эффективное распределение ресурсов между ядрами ЦП.

В частности, привязка несбалансированных запросов к процессам в nginx приводила к несбалансированной нагрузке на ядра ЦП, в результате чего ресурсоемкие запросы и блокировка ввода-вывода замедляли обработку других запросов.

Также привязка пула соединений к процессам-контроллерам не позволяла повторно использовать уже установленные соединения из других процессов-контроллеров, что снижает эффективность при большом количестве процессов-контроллеров.

Внедрение Pingora позволило сократить количество операций в 160 раз установление новых связей и увеличить долю повторно используемых запросов с 87,1% до 99,92%. Помимо сокращения повторных подключений и более эффективного использования ядер ЦП, повышение производительности нового прокси произошло в основном за счет удаления медленных драйверов Lua, используемых с nginx.

Язык Rust был выбран потому, что он обеспечивает высокую производительность. в сочетании с наличием безопасных для памяти инструментов. Упоминается, что, несмотря на высококвалифицированных инженеров Cloudflare и проверку кода, программы, написанные на языке C, не смогли избежать ошибок, приводящих к проблемам с памятью (например, уязвимость в парсере HTML).

Что касается нового кода, то мы рассказали о случаях краш-анализа в Pingora, которые оказались вызваны не проблемами в приложении, а багом в ядре Linux и аппаратными сбоями.

Дополнительно можно отметить, что Линус Торвальдс прокомментировал включение поддержки языка Rust в ядро ​​Linux, высказанное на проходящей в эти дни конференции Open-Source Summit Europe. В ядре 6.0 не было патчей для разработки драйверов устройств на языке Rust, но, по словам Линуса, они, скорее всего, будут приняты в ядре 6.1, и вы не сможете воспользоваться преимуществами интеграции.

В качестве причины для добавления поддержки Rust, в дополнение к положительному влиянию на безопасность, Линус также использует возможность повысить интерес к работе над ядром со стороны новых участников, что важно в контексте стареющих ветеранов.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.