Cloudflare NGINX-dan Rust-da yozilgan o'zining Pingora proksi-serveriga o'tdi

Cloudflare o'zining kontent yetkazib berish tarmog'ini Rust tilida yozilgan Pingora proksi-serveridan foydalanishga o'tganini e'lon qildi. Yangi proksi-server NGINX serveriga asoslangan konfiguratsiyani Lua skriptlari bilan almashtiradi va kuniga trilliondan ortiq so'rovlarni qayta ishlaydi. Ta'kidlanishicha, ixtisoslashtirilgan proksi-serverga o'tish nafaqat yangi funksiyalarni joriy etish va xotiraning xavfsiz ishlashi hisobiga xavfsizlikni oshirish imkonini berdi, balki unumdorlikni sezilarli darajada oshirishga va resurslarni tejashga olib keldi - Pingora asosidagi yechim foydalanishni talab qilmaydi. Lua ga to'g'ri keladi va shuning uchun bir xil miqdordagi trafikni qayta ishlash jarayonida CPU resurslarini 70% va xotirani 67% kamroq iste'mol qiladi.

Uzoq vaqt davomida NGINX va Lua skriptlariga asoslangan foydalanuvchilar va oxirgi serverlar o'rtasidagi trafikni proksi-server qilish tizimi Cloudflare ehtiyojlarini qondirdi, ammo tarmoq o'sishi va uning murakkabligi oshgani sayin, universal echim ikkala nuqtai nazardan ham etarli emas edi. ishlash va mijozlar uchun yangi imkoniyatlarni kengaytirish va amalga oshirishdagi cheklovlar tufayli. Xususan, oddiy shlyuz va yuk balanslagichidan tashqari funksionallikni qo'shishda qiyinchiliklar mavjud edi. Masalan, agar server so'rovni qayta ishlamasa, so'rovni boshqa serverga HTTP sarlavhalarining boshqa to'plami bilan ta'minlash orqali qayta yuborish zarurati tug'ildi.

So'rovlarni alohida ishchi jarayonlarga ajratuvchi arxitektura o'rniga Pingora ko'p tarmoqli modeldan foydalanadi, bu Cloudflare-dan foydalanish holatlarida (katta statistik siljish bilan turli saytlardan trafikning yuqori kontsentratsiyasi) CPU yadrolari o'rtasida resurslarning yanada samarali taqsimlanishini ko'rsatdi. Xususan, nginx-ning muvozanatsiz so'rovlarni jarayonlarga bog'lashi protsessor yadrolarida muvozanatsiz yuklanishga olib keldi, natijada resursni ko'p talab qiladigan so'rovlar va kiritish-chiqarishni blokirovkalash boshqa so'rovlarni qayta ishlashni sekinlashtirdi. Bundan tashqari, ulanish hovuzini ishlov berish jarayonlariga bog'lash boshqa ishlov berish jarayonlaridan allaqachon o'rnatilgan ulanishlarni qayta ishlatishga imkon bermadi, bu ko'p sonli ishlov berish jarayonlari mavjud bo'lganda samaradorlikni pasaytiradi.

NGINX:

Cloudflare NGINX-dan Rust-da yozilgan o'zining Pingora proksi-serveriga o'tdi

Pingora:

Cloudflare NGINX-dan Rust-da yozilgan o'zining Pingora proksi-serveriga o'tdi

Pingora-ning amalga oshirilishi yangi ulanishlarni o'rnatish sonini 160 martaga qisqartirish va qayta ishlatiladigan so'rovlar ulushini 87.1% dan 99.92% gacha oshirish imkonini berdi. Qayta ulanishlarni qisqartirish va protsessor yadrolaridan samaraliroq foydalanish bilan bir qatorda, yangi proksi-serverning ishlashini yaxshilash asosan nginx bilan ishlatiladigan sekin Lua ishlov beruvchilarini olib tashlash bilan bog'liq edi.

Rust tili xotira bilan xavfsiz ishlashni ta'minlash uchun vositalar mavjudligi bilan birgalikda yuqori ishlashga erishish uchun tanlangan. Qayd etilishicha, Cloudflare’ning yuqori malakali muhandislari va C tilida yozilgan kodni ko‘rib chiqishlariga qaramay, xotira muammolariga olib keladigan xatolardan (masalan, HTML tahlilchisidagi zaiflik) qochishning iloji bo‘lmagan. Yangi kodga kelsak, u Pingora-dagi nosozliklarni tahlil qilish holatlari haqida gapiradi, bu dasturdagi muammolar emas, balki Linux yadrosidagi xatolik va apparatdagi nosozliklar tufayli yuzaga kelgan.

Bundan tashqari, Linus Torvaldsning shu kunlarda bo'lib o'tayotgan Open-Surce Summit Europe konferentsiyasida Linux yadrosiga Rust tilini qo'llab-quvvatlashga oid izohini ham qayd etishimiz mumkin. Rust tilidagi qurilma drayverlarini ishlab chiqish uchun yamoqlar 6.0 yadrosiga kiritilmagan, ammo Linusning so'zlariga ko'ra, ular katta ehtimol bilan 6.1 yadrosiga qabul qilinadi, u integratsiyani kechiktirmoqchi emas. Rustni qo'llab-quvvatlashni qo'shish uchun turtki sifatida, xavfsizlikka ijobiy ta'sir qilishdan tashqari, Linus, shuningdek, eski odamlarning qarishi sharoitida muhim bo'lgan yangi ishtirokchilarning yadrosi ustida ishlashga qiziqishni oshirish imkoniyatini ham keltiradi.

Manba: opennet.ru

a Izoh qo'shish