Cloudflare се префрли од NGINX на свој прокси Pingora, напишан во Rust

Cloudflare ја објави транзицијата на својата мрежа за испорака на содржини за користење на прокси Pingora, напишана на јазикот Rust. Новиот прокси ја заменува конфигурацијата базирана на сервер NGINX со скрипти Lua и обработува повеќе од трилион барања дневно. Забележано е дека преминот кон специјализиран прокси овозможи не само да се имплементираат нови функции и да се зголеми безбедноста поради безбедното функционирање на меморијата, туку и доведе до значително зголемување на перформансите и заштедата на ресурси - решението базирано на Pingora не бара употреба на Lua, и затоа троши 70% помалку ресурси CPU и 67% помалку меморија додека обработува иста количина на сообраќај.

Долго време, системот за прокси сообраќај помеѓу корисниците и крајните сервери базиран на скрипти NGINX и Lua ги задоволуваше потребите на Cloudflare, но како што растеше мрежата и се зголемуваше нејзината сложеност, универзалното решение се покажа како недоволно, како во однос на перформанси и поради ограничувањата во проширливоста и имплементацијата на нови можности за клиентите. Особено, имаше предизвици во додавањето на функционалност надвор од едноставната порта и балансерот на оптоварување. На пример, стана неопходно, ако серверот не успее да обработи барање, повторно да го испрати барањето на друг сервер, обезбедувајќи му различен сет на HTTP заглавија.

Наместо архитектура која ги раздвојува барањата во посебни работни процеси, Pingora користи модел со повеќе нишки, кој во случаите на употреба на Cloudflare (висока концентрација на сообраќај од различни локации со големо статистички поместување) покажа поефикасна дистрибуција на ресурси помеѓу јадрата на процесорот. Посебно, врзувањето на неурамнотежените барања на nginx за процесите резултираше со небалансирано оптоварување на јадрата на процесорот, што резултираше со барања со интензивни ресурси и блокирање на I/O забавување на обработката на други барања. Дополнително, врзувањето на базенот за поврзување со процесите на управувачот не дозволи повторна употреба на веќе воспоставените врски од други процеси на управувачот, што ја намалува ефикасноста кога има голем број процеси на управувачот.

NGINX:

Cloudflare се префрли од NGINX на свој прокси Pingora, напишан во Rust

Пингора:

Cloudflare се префрли од NGINX на свој прокси Pingora, напишан во Rust

Имплементацијата на Pingora овозможи да се намали бројот на инсталации на нови приклучоци за 160 пати и да се зголеми уделот на повторно употребени барања од 87.1% на 99.92%. Покрај намалувањето на повторното поврзување и поефикасната употреба на јадрата на процесорот, подобрувањето на перформансите на новиот прокси главно се должи на отстранувањето на бавните ракувачи Lua што се користат со nginx.

Јазикот Rust е избран за постигнување високи перформанси во комбинација со достапноста на алатки за да се обезбеди безбедно работење со меморија. Се споменува дека и покрај висококвалификуваните инженери на Cloudflare и прегледувањето на кодот напишан на јазикот C, не беше можно да се избегнат грешките што доведуваат до проблеми со меморијата (на пример, ранливост во HTML парсерот). Што се однесува до новиот код, тој зборува за случаи на анализа на неуспеси во Pingora, што се покажа дека не се предизвикани од проблеми во апликацијата, туку од грешка во кернелот на Linux и хардверски неуспеси.

Дополнително, можеме да го забележиме коментарот на Линус Торвалдс, изразен на конференцијата Open-Source Summit Europe што се одржува деновиве, во врска со вклучувањето на поддршка за јазикот Rust во кернелот на Linux. Закрпи за развој на двигатели на уреди на јазикот Rust не беа вклучени во кернелот 6.0, но според Линус, тие најверојатно ќе бидат прифатени во кернелот 6.1; тој нема да ја одложи интеграцијата. Како мотивација за додавање поддршка за Rust, покрај позитивното влијание врз безбедноста, Линус ја наведува и можноста за зголемување на интересот за работа на јадрото на новите учесници, што е важно во контекст на стареењето на олдтајмерите.

Извор: opennet.ru

Додадете коментар