Cloudflare NGINX-тен Rust тілінде жазылған өзінің Pingora проксиіне ауысты

Cloudflare өзінің мазмұнды жеткізу желісін Rust тілінде жазылған Pingora проксиін пайдалануға көшкенін жариялады. Жаңа прокси NGINX серверіне негізделген конфигурацияны Lua сценарийлерімен ауыстырады және күніне триллионнан астам сұрауларды өңдейді. Мамандандырылған проксиге көшу жадтың қауіпсіз жұмысы арқасында жаңа мүмкіндіктерді енгізуге және қауіпсіздікті арттыруға мүмкіндік беріп қана қоймай, өнімділіктің және ресурстарды үнемдеудің айтарлықтай артуына әкелді - Pingora негізіндегі шешім пайдалануды қажет етпейді. Lua, сондықтан трафиктің бірдей көлемін өңдеу кезінде CPU ресурстарын 70% және жадты 67% аз тұтынады.

Ұзақ уақыт бойы NGINX және Lua сценарийлеріне негізделген пайдаланушылар мен соңғы серверлер арасындағы трафикті прокси-серверлеу жүйесі Cloudflare қажеттіліктерін қанағаттандырды, бірақ желі өсіп, оның күрделілігі артқан сайын әмбебап шешім жеткіліксіз болып шықты. өнімділік және кеңейту және клиенттер үшін жаңа мүмкіндіктерді енгізудегі шектеулерге байланысты. Атап айтқанда, қарапайым шлюз мен жүктеме теңгерімінен тыс функционалдылықты қосуда қиындықтар болды. Мысалы, егер сервер сұрауды өңдей алмаса, сұрауды басқа серверге HTTP тақырыптарының басқа жиынтығымен қамтамасыз ете отырып, қайта жіберу қажет болды.

Сұраныстарды жеке жұмысшы процестеріне бөлетін архитектураның орнына Pingora көп ағынды модельді пайдаланады, ол Cloudflare қолдану жағдайларында (үлкен статистикалық ауысыммен әртүрлі сайттардан трафиктің жоғары концентрациясы) орталық процессордың өзектері арасында ресурстарды тиімдірек бөлуді көрсетті. Атап айтқанда, nginx теңгерімсіз сұрауларды процестермен байланыстыру процессор өзектеріне теңгерімсіз жүктеме әкелді, нәтижесінде ресурсты көп қажет ететін сұраулар және енгізу/шығаруды бұғаттау басқа сұрауларды өңдеуді баяулатады. Бұған қоса, қосылым пулын өңдеуші процестеріне байланыстыру басқа өңдеуші процестерінен бұрыннан орнатылған қосылымдарды қайта пайдалануға мүмкіндік бермеді, бұл өңдеуші процестерінің көп саны болған кезде тиімділікті төмендетеді.

NGINX:

Cloudflare NGINX-тен Rust тілінде жазылған өзінің Pingora проксиіне ауысты

Пингора:

Cloudflare NGINX-тен Rust тілінде жазылған өзінің Pingora проксиіне ауысты

Pingora енгізу жаңа қосылымдарды орнату санын 160 есе қысқартуға және қайта пайдаланылған сұраулар үлесін 87.1%-дан 99.92%-ға дейін арттыруға мүмкіндік берді. Қайта қосылуларды азайту және процессор өзектерін тиімдірек пайдаланудан басқа, жаңа прокси өнімділігін жақсарту негізінен nginx-пен пайдаланылатын баяу Lua өңдегіштерін жоюға байланысты болды.

Rust тілі жадпен қауіпсіз жұмыс істеуді қамтамасыз ететін құралдардың болуымен бірге жоғары өнімділікке қол жеткізу үшін таңдалды. Cloudflare жоғары білікті инженерлеріне және Си тілінде жазылған кодты қарап шығуына қарамастан, жад ақауларына әкелетін қателерді болдырмау мүмкін болмағаны (мысалы, HTML талдаушысындағы осалдық). Жаңа кодқа келетін болсақ, ол Pingora-дағы сәтсіздіктерді талдау жағдайлары туралы айтады, бұл қолданбадағы ақаулардан емес, Linux ядросындағы қатеден және аппараттық құралдың ақауларынан туындады.

Сонымен қатар, Linux ядросында Rust тілін қолдауды қосуға қатысты осы күндері өтіп жатқан Еуропадағы Open-Surce Summit Europe конференциясында айтылған Линус Торвальдстың түсіндірмелерін атап өтуге болады. Rust тіліндегі құрылғы драйверлерін әзірлеуге арналған патчтар 6.0 ядросына қосылмаған, бірақ Линустың айтуынша, олар 6.1 ядросына қабылданады, ол интеграцияны кейінге қалдырмайды. Rust үшін қолдауды қосу мотивациясы ретінде, қауіпсіздікке оң әсер етуден басқа, Линус сонымен қатар ескі таймерлердің қартаюы жағдайында маңызды болып табылатын жаңа қатысушылардың өзегімен жұмыс істеуге қызығушылықты арттыру мүмкіндігін келтіреді.

Ақпарат көзі: opennet.ru

пікір қалдыру