Cloudflare NGINX-dən Rust-da yazılmış öz proxy Pingora-ya keçdi

Cloudflare, məzmun çatdırma şəbəkəsinin Rust dilində yazılmış Pingora proxy-dən istifadə etmək üçün keçidini elan etdi. Yeni proksi NGINX server əsaslı konfiqurasiyanı Lua skriptləri ilə əvəz edir və gündə bir trilyondan çox sorğunu emal edir. Qeyd edilir ki, ixtisaslaşmış proksiyə keçid nəinki yeni funksiyaların tətbiqinə və yaddaşın təhlükəsiz işləməsi hesabına təhlükəsizliyin artırılmasına imkan verib, həm də performansın və resurs qənaətinin əhəmiyyətli dərəcədə artmasına səbəb olub - Pingora əsaslı həll istifadəni tələb etmir. Lua və buna görə də eyni miqdarda trafiki emal edərkən CPU 70% daha az resurs və 67% daha az yaddaş istehlak edir.

Uzun müddətdir ki, NGINX və Lua skriptlərinə əsaslanan istifadəçilər və son serverlər arasında trafikin proksiləşdirilməsi sistemi Cloudflare-in ehtiyaclarını ödəyirdi, lakin şəbəkə böyüdükcə və mürəkkəbliyi artdıqca, universal həll həm də problem baxımından qeyri-kafi oldu. performans və müştərilər üçün yeni imkanların genişləndirilməsi və həyata keçirilməsində məhdudiyyətlərə görə. Xüsusilə, sadə şlüzdən və yük balanslaşdırıcısından kənara funksionallıq əlavə etməkdə çətinliklər var idi. Məsələn, əgər server sorğunu emal edə bilmirsə, onu başqa HTTP başlıqları dəsti ilə təmin edərək sorğunu başqa serverə yenidən göndərmək zərurəti yaranıb.

Sorğuları ayrı-ayrı işçi proseslərinə ayıran arxitektura əvəzinə Pingora çox yivli modeldən istifadə edir ki, bu model Cloudflare istifadə hallarda (böyük statistik yerdəyişmə ilə müxtəlif saytlardan gələn trafikin yüksək konsentrasiyası) CPU nüvələri arasında resursların daha səmərəli paylanmasını göstərdi. Xüsusilə, nginx-in balanssız sorğuları proseslərə bağlaması CPU nüvələrində balanssız yüklənmə ilə nəticələndi, nəticədə resurs tələb edən sorğular və I/O-nun bloklanması digər sorğuların işlənməsini yavaşlatdı. Bundan əlavə, əlaqə hovuzunu idarəedici proseslərə bağlamaq, çox sayda işləyici prosesləri olduqda səmərəliliyi azaldan digər işləyici proseslərindən artıq qurulmuş əlaqələrin təkrar istifadəsinə imkan vermədi.

NGINX:

Cloudflare NGINX-dən Rust-da yazılmış öz proxy Pingora-ya keçdi

Pinqora:

Cloudflare NGINX-dən Rust-da yazılmış öz proxy Pingora-ya keçdi

Pingora-nın tətbiqi yeni qoşulmaların quraşdırılmasının sayını 160 dəfə azaltmağa və təkrar istifadə edilən sorğuların payını 87.1%-dən 99.92%-ə çatdırmağa imkan verdi. Yenidən qoşulmaların azaldılması və CPU nüvələrinin daha səmərəli istifadəsi ilə yanaşı, yeni proxy-nin performansının yaxşılaşdırılması əsasən nginx ilə istifadə olunan yavaş Lua işləyicilərinin çıxarılması ilə əlaqədar idi.

Rust dili yaddaşla təhlükəsiz əməliyyatı təmin etmək üçün alətlərin mövcudluğu ilə birlikdə yüksək performansa nail olmaq üçün seçilmişdir. Qeyd olunur ki, “Cloudflare” şirkətinin yüksək ixtisaslı mühəndislərinin C dilində yazılmış kodu nəzərdən keçirməsinə baxmayaraq, yaddaş problemlərinə (məsələn, HTML analizatorunda boşluq) səbəb olan xətaların qarşısını almaq mümkün olmayıb. Yeni koda gəldikdə, Pingora-da nasazlıqların təhlili hallarından bəhs edir, bunun tətbiqdəki problemlərdən deyil, Linux nüvəsindəki xəta və aparat uğursuzluqlarından qaynaqlandığı ortaya çıxdı.

Əlavə olaraq, Linus Torvaldsın bu günlərdə baş tutan Open-Source Summit Europe konfransında Linux nüvəsinə Rust dilinin dəstəyinin daxil edilməsi ilə bağlı səsləndirdiyi şərhi qeyd edə bilərik. Rust dilində cihaz drayverlərinin hazırlanması üçün yamaqlar 6.0 nüvəsinə daxil edilməyib, lakin Linusun sözlərinə görə, onlar çox güman ki, 6.1 nüvəsinə qəbul ediləcək, o, inteqrasiyanı gecikdirmək niyyətində deyil. Rust-a dəstək əlavə etmək üçün motivasiya olaraq, təhlükəsizliyə müsbət təsirdən əlavə, Linus köhnə vaxtların qocalması kontekstində vacib olan yeni iştirakçıların əsas üzərində işləməyə marağı artırmaq imkanını da qeyd edir.

Mənbə: opennet.ru

Добавить комментарий