Cloudflare-ը NGINX-ից անցավ Rust-ով գրված իր սեփական Pingora վստահված անձին

Cloudflare-ը հայտարարեց իր բովանդակության առաքման ցանցի անցման մասին Pingora պրոքսի օգտագործելու մասին, որը գրված է Rust լեզվով: Նոր վստահված անձը փոխարինում է NGINX սերվերի վրա հիմնված կոնֆիգուրացիան Lua սկրիպտներով և մշակում է օրական ավելի քան մեկ տրիլիոն հարցում: Նշվում է, որ մասնագիտացված վստահված անձի անցումը թույլ է տվել ոչ միայն ներդրել նոր հնարավորություններ և բարձրացնել անվտանգությունը հիշողության անվտանգ շահագործման շնորհիվ, այլև հանգեցրել է կատարողականի և ռեսուրսների խնայողության զգալի աճի. Pingora-ի վրա հիմնված լուծումը չի պահանջում օգտագործում: Lua-ի, և, հետևաբար, սպառում է 70%-ով պակաս պրոցեսորային ռեսուրսներ և 67%-ով ավելի քիչ հիշողություն՝ նույն քանակությամբ տրաֆիկ մշակելիս:

Երկար ժամանակ NGINX և Lua սկրիպտների վրա հիմնված օգտատերերի և վերջնական սերվերների միջև տրաֆիկի պրոքսի համակարգը բավարարում էր Cloudflare-ի կարիքները, բայց քանի որ ցանցը մեծանում էր և դրա բարդությունը մեծանում էր, համընդհանուր լուծումը անբավարար էր՝ և՛ առումով։ կատարողականի և հաճախորդների համար ընդարձակելիության և նոր հնարավորությունների իրականացման սահմանափակումների պատճառով: Մասնավորապես, կային դժվարություններ՝ ավելացնելու ֆունկցիոնալությունը՝ հասարակ դարպասի և բեռի հավասարակշռիչից դուրս: Օրինակ, անհրաժեշտություն առաջացավ, եթե սերվերը չի կարողանում մշակել հարցումը, ապա հարցումը նորից ուղարկել մեկ այլ սերվեր՝ նրան տրամադրելով HTTP վերնագրերի այլ հավաքածու:

Ճարտարապետության փոխարեն, որը բաժանում է հարցումները առանձին աշխատանքային գործընթացների, Pingora-ն օգտագործում է բազմաշերտ մոդել, որը Cloudflare-ի օգտագործման դեպքերում (տարբեր կայքերից տրաֆիկի բարձր կոնցենտրացիան՝ մեծ վիճակագրական տեղաշարժով) ցույց է տվել ռեսուրսների ավելի արդյունավետ բաշխում CPU միջուկների միջև: Մասնավորապես, nginx-ի կողմից անհավասարակշիռ հարցումների կապումը գործընթացներին հանգեցրեց պրոցեսորի միջուկների անհավասարակշռված բեռի, ինչը հանգեցնում էր ռեսուրսների ինտենսիվ հարցումների և արգելափակում I/O-ն՝ դանդաղեցնելով այլ հարցումների մշակումը: Բացի այդ, միացման լողավազանը կարգավորիչի գործընթացներին կապելը թույլ չի տվել վերօգտագործել արդեն իսկ հաստատված կապերը այլ մշակման գործընթացներից, ինչը նվազեցնում է արդյունավետությունը, երբ առկա են մեծ թվով մշակման գործընթացներ:

NGINX:

Cloudflare-ը NGINX-ից անցավ Rust-ով գրված իր սեփական Pingora վստահված անձին

Պինգորա:

Cloudflare-ը NGINX-ից անցավ Rust-ով գրված իր սեփական Pingora վստահված անձին

Pingora-ի իրականացումը հնարավորություն է տվել 160 անգամ կրճատել նոր կապերի տեղադրումների քանակը և կրկնակի օգտագործվող հարցումների մասնաբաժինը 87.1%-ից հասցնել 99.92%-ի։ Ի հավելումն վերամիացումների կրճատմանը և պրոցեսորի միջուկների ավելի արդյունավետ օգտագործմանը, նոր վստահված անձի կատարողականի բարելավումը հիմնականում պայմանավորված էր nginx-ի հետ օգտագործվող դանդաղ Lua կարգավորիչների հեռացմամբ:

Rust լեզուն ընտրվել է բարձր կատարողականություն ձեռք բերելու համար՝ զուգակցված գործիքների առկայության հետ, որոնք ապահովում են հիշողության հետ անվտանգ աշխատանքը: Նշվում է, որ չնայած Cloudflare-ի բարձր որակավորում ունեցող ինժեներներին և C լեզվով գրված կոդը վերանայելուն, հնարավոր չի եղել խուսափել հիշողության հետ կապված խնդիրներ առաջացնող սխալներից (օրինակ՝ HTML վերլուծիչի խոցելիություն)։ Ինչ վերաբերում է նոր կոդի, ապա այն խոսում է Pingora-ում խափանումների վերլուծության դեպքերի մասին, որոնք, պարզվել է, պայմանավորված են ոչ թե հավելվածում առկա խնդիրներով, այլ Linux-ի միջուկի սխալով և ապարատային խափանումներով։

Բացի այդ, կարող ենք նշել Լինուս Տորվալդսի մեկնաբանությունը, որը հնչեցվել է օրերս տեղի ունեցող Open-Source Summit Europe կոնֆերանսում, որը վերաբերում է Rust լեզվի աջակցության ներառմանը Linux միջուկում: Rust լեզվով սարքերի դրայվերների մշակման պատչերը ներառված չեն եղել 6.0 միջուկում, սակայն, ըստ Լինուսի, դրանք, ամենայն հավանականությամբ, կընդունվեն 6.1 միջուկում, նա չի պատրաստվում հետաձգել ինտեգրումը։ Որպես Rust-ի համար աջակցություն ավելացնելու դրդապատճառ, ի լրումն անվտանգության վրա դրական ազդեցության, Լինուսը նաև նշում է նոր մասնակիցների հիմնական հիմքի վրա աշխատելու հետաքրքրությունը մեծացնելու հնարավորությունը, ինչը կարևոր է ծերացող հին ժամանակների համատեքստում:

Source: opennet.ru

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