Cloudflare премина от NGINX на собствен прокси Pingora, написан на Rust

Компания Cloudflare обяви, че е преминала към използването на прокси Pingora, написано на Rust, за своята мрежа за доставка на съдържание. Новото прокси замени конфигурацията на базата на NGINX с Lua скриптове и обработва повече от един трилион заявки на ден. Преминаването към специализирано прокси не само че предоставя нови възможности и увеличава сигурността чрез безопасна работа с памет, но също така доведе до значително увеличаване на производителността и икономия на ресурси — решението на базата на Pingora не изисква използване на Lua, поради което консумира с 70% по-малко CPU ресурси и с 67% по-малко памет при обработка на същия обем трафик.

Дълго време системата за проксиране на трафика между потребителите и крайните сървъри потребители на базата на NGINX и Lua скриптове задоволяваше нуждите на Cloudflare, но с растежа на мрежата и увеличаването на нейната сложност, универсалното решение се оказа недостатъчно както по отношение на производителността, така и поради ограничения по отношение на разширяемостта и внедряването на нови възможности за клиентите. В частност, възникнаха трудности при добавянето на функционалности, които излизат извън рамките на прост шлюз и балансировчик на натоварването. Например, възникна необходимостта при сбой в обработката на заявка сървър да се пренасочи заявката към друг сървър, снабдявайки я с друг набор от HTTP заглавия.

Вместо архитектура с разделяне на заявките в отделни процеси-обработчици (worker), Pingora прилага многопоточна модел, който в сценарии на използване от Cloudflare (висока концентрация на трафик от различни сайтове при значителен статистически отклонение) показа по-ефективно разпределение на ресурсите между ядрата на CPU. В частност, привързването на несбалансирани заявки към процесите в NGINX водеше до несбалансирано натоварване на ядрата на CPU, в резултат на което ресурсоемките заявки и блокиращият вход-изход забавяха обработката на други заявки. Освен това, свързването на пула от връзки към процесите-обработчици не позволявало повторно използване на вече установените връзки от други процеси-обработчици, което намалява ефективността на работата при голям брой процеси-обработчици.

NGINX:

Cloudflare премина от NGINX на собствен прокси Pingora, написан на Rust

Pingora:

Cloudflare премина от NGINX на собствен прокси Pingora, написан на Rust

Внедряването на Pingora позволи да се намали броят на операциите за инсталиране на нови свързвания 160 пъти и да се увеличи делът на повторно използваните заявки от 87.1% на 99.92%. Освен намалението на повторните свързвания и по-ефективната употреба на ядрата на CPU, увеличаването на производителността на новия прокси се дължи основно на премахването на бавните Lua обработчици, използвани с nginx.

Езикът Rust е избран, тъй като позволява постигането на висока производителност и предлага средства за осигуряване на безопасна работа с паметта. Споменава се, че въпреки високата квалификация на инженерите на Cloudflare и рецензирането на кода, написан на C, не е било възможно да се избегнат грешки, водещи до проблеми с паметта (например, уязвимост в HTML парсера). Що се отнася до новия код, беше разказано за случаи на сблъсъци в Pingora, които се оказаха предизвикани не от проблеми в приложението, а от грешка в ядрото на Linux и хардуерни повреди.

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster