Как стать автором
Обновить

Комментарии 24

Да, кастомные решения быстрее nginx, в этом можно убедиться тут https://www.techempower.com/benchmarks/#section=data-r21&test=plaintext
И не обязательно 100 инженеров для написания такого кода. Да, на их масштабах это 100% окупается. Nginx очень хорошо как комбайн который очень много всего умеет, и да он очень хорош по производительности. Но может быть обогнан в разы. В этом нет ничего плохого.

Искренне говоря, не уверен, что тут прям кастомщина vs Nginx. Скорее Rust/Tokio vs Nginx+Lua. И тут неочевидно, был ли такой прирост преимущественно из-за отказа от Lua или рукопожатия действительно настолько дороги. Хотя если Lua каждый раз копирует все HTTP заголовки к себе (а они могут быть очень объемными), улучшение в потреблении памяти должно быть, как минимум, ощутимым

Когда через вас проксируется половина интернета, то да, даже такие оптимизации сокращают, вероятно, месяцы времени ЦПУ и таймаутов

А разве spdy не обещал решить все эти моменты с tls?

Насколько я понимаю, обещал и и решает -- мультиплексирует много разных запросов в одно защищенное соединение, но вот это первое соединение-рукопожатие все равно нужно делать. У Cloudflare, кажется, проблема была в том, что к уже установленным соединениям нельзя было получить доступ из другого worker/процесса, то есть подключаться заново.

Чуть более радикально проблему решает протокол QUIC, который использует UDP вместо TCP и в самые первые пакеты включает данные для шифрования, что сокращает время на установку защищенного соединения, но это требует существенной поддержки на стороне сервера. Подозреваю, что подавляющего большинство серверов/клиентов, с которыми работает Cloudflare, это не поддерживает


клиенты как раз сегодня почти поголовно — хром, там с поддержкой http/3 всё неплохо.


HTTP/3 is supported by 75% of web browsers (and 83% of "tracked desktop" web browsers), and 26% of the top 10 million websites. It has been supported by Chromium (and derived projects including Google Chrome, Microsoft Edge, Samsung Internet, and Opera) since April 2020 and by Mozilla Firefox since May 2021. Safari 14 (on macOS Big Sur and iOS 14) implemented the protocol but it remains disabled by default.


серверам поддерживать и не надо, прокси же держит постоянные соединения до апстрима, там время рукопожатия роли не играет.


другое дело, читал, что в реальной жизни выигрыш от http/3 далеко не так очевиден.

серверам поддерживать и не надо, прокси же держит постоянные соединения до апстрима, там время рукопожатия роли не играет.

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

я не уверен, что это узкое место вообще.

Судя по написанному — именно в нём и была проблема.


Если у вас, условно, 8 воркеров и 8 апстримов, а запросов в секунду приходит 100 (все числа с потолка) — то с постоянными соединениями всё в порядке.


Если у вас, как у CF, 8000 воркеров (число снова с потолка) и 8 апстримов на клиента, и запросов в секунду приходит 100 на того же самого клиента — то постоянные соединения между воркером и апстримом становятся мифом.

то постоянные соединения между воркером и апстримом становятся мифом

да нет, написано же, что в три раза стало меньше переустановок соединений, а про 160 раз — это частный случай.


Судя по написанному — именно в нём и была проблема

насколько я понимаю, там основной выигрыш в том, что код на lua заменили кодом на rust, а улучшение работы постоянных соединений — просто бонус

Это связанные проблемы. Проблемы медленного кода на lua всегда можно решить увеличением числа воркеров (да-да, "закидать железом"), а это как раз и не дают сделать проблемы с соединениями.

гхм, «закидать железом» очень дорого.

Nginx, вроде, был написан изначально чуть не в одиночку, зачем тут сотня программистов?

Думаю core-команда сравнительно небольшая, человек 7-10, но, уверен, у них много кастомщины для самых больших клиентов + плюс кто-то должен все это собирать, деплоить и поддерживать на масштабах Cloudflare. По-моему 100 человек легко наберется

Nginx переходит в стадию угасания

Чтобы Nginx перешёл в стадию угасания в конкретной компании, нужно дорасти до уровня CloudFlare, так что 99% компаний и инженеров могут быть спокойными.

разработка nginx сильно замедлилась, новый функционал практически не появляется.

Ещё годик-другой с QUIC потянут и " 99% компаний и инженеров " начнут думать как соскочить

Envoy сейчас в моде для таких клауд-шмауд дел. А главная фишка у него, что он умеет gRPC проксировать, а не просто на уровне HTTP.

я правильно понял, что pingora пока не опенсурсный?

В "Выводах":

Мы также вернемся с нашим планом по открытию исходного кода.

Прямой перевод из оригинальной статьи:

We will also be back with our plan to open source it.

Точно! спасибо

Код открыли вчера. Скоро текст про это :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации