Cloudflare ji NGINX veguherî proxeya xweya Pingora ya ku bi Rust hatî nivîsandin

Cloudflare veguhestina tora xweya radestkirina naverokê ragihand ku proxy Pingora, ku bi zimanê Rust hatî nivîsandin, bikar bîne. Proxy-ya nû veavakirina server-based NGINX bi tîpên Lua diguhezîne, û rojane zêdetirî trîlyonek daxwazan pêvajoyê dike. Tê destnîşan kirin ku veguheztina proxyek pispor ne tenê dihêle ku ne tenê taybetmendiyên nû bicîh bîne û ewlehiyê ji ber xebata ewledar a bîranînê zêde bike, lê di heman demê de bû sedema zêdebûnek berbiçav di performans û teserûfa çavkaniyê de - çareseriya bingehîn Pingora ne hewce ye ku bikar bîne. ya Lua, û ji ber vê yekê 70% kêmtir çavkaniyên CPU û 67% kêmtir bîranîn dema ku heman mîqdara seyrûseferê hildiweşîne.

Demek dirêj, pergalek ji bo seyrûsefera seyrûsefera di navbera bikarhêner û serverên paşîn de ku li ser bingeha nivîsarên NGINX û Lua hewcedariyên Cloudflare têr dike, lê her ku tora mezin bû û tevliheviya wê zêde bû, çareseriyek gerdûnî ne bes bû, hem ji hêla performans û ji ber sînorkirinên di berfirehbûn û pêkanîna derfetên nû ji bo xerîdaran. Bi taybetî, di lêzêdekirina fonksiyonê de ji dergehek hêsan û hevsengkerek barkirinê de dijwarî hebûn. Mînakî, pêdivî bû, ger server daxwazek pêvajo neke, daxwazê ​​ji nû ve bişîne serverek din, û jê re komek sernavên HTTP-ya cûda peyda bike.

Li şûna mîmariyek ku daxwazan di pêvajoyên xebatkar ên cihêreng de vediqetîne, Pingora modelek pir-mijarî bikar tîne, ku di rewşên Cloudflare de bikar tîne (tevrabûna zêde ya seyrûsefera ji malperên cihêreng bi veguheztinek statîstîkî ya mezin) dabeşek jêhatîtir a çavkaniyan di navbera core CPU de nîşan da. Bi taybetî, girêdana nginx ya daxwazên nehevseng bi pêvajoyan re bû sedema barkirina nehevseng a li ser bingehên CPU-yê, di encamê de daxwazên çavkaniyê-dijwar û astengkirina I/O pêvajoya daxwazên din hêdî dike. Digel vê yekê, girêdana hewza pêwendiyê bi pêvajoyên hilker re rê neda ji nû ve karanîna girêdanên jixwe sazkirî yên ji pêvajoyên din ên destkarker re, ku ev yek dema ku hejmareke mezin ji pêvajoyên hilgirê hebin, karîgeriyê kêm dike.

NGINX:

Cloudflare ji NGINX veguherî proxeya xweya Pingora ya ku bi Rust hatî nivîsandin

Pingora:

Cloudflare ji NGINX veguherî proxeya xweya Pingora ya ku bi Rust hatî nivîsandin

Pêkanîna Pingora îmkan da ku hejmara sazkirinên girêdanên nû 160 carî kêm bike û para pirsên ji nû ve hatî bikar anîn ji% 87.1 berbi 99.92% zêde bike. Digel kêmkirina vegirêdan û karanîna bêtir bikêrhatî ya core CPU, baştirkirina performansa proxy-ya nû bi giranî ji ber rakirina hilgirên Lua yên hêdî yên ku bi nginx re têne bikar anîn bû.

Zimanê Rust hate hilbijartin ku bigihîje performansa bilind digel hebûna amûran da ku xebata ewledar bi bîranînê re misoger bike. Tê behs kirin ku tevî endezyarên pir jêhatî yên Cloudflare û vekolîna koda ku bi zimanê C hatî nivîsandin, ne gengaz bû ku ji xeletiyên ku dibin sedema pirsgirêkên bîranînê (mînakî, qelsiyek di parsera HTML-ê de) dûr bixin. Di derbarê koda nû de, ew behsa bûyerên analîzkirina têkçûnên li Pingora dike, ku derket holê ku ne ji ber pirsgirêkên di serîlêdanê de, lê ji ber xeletiyek di kernel Linux û têkçûna hardware de ye.

Wekî din, em dikarin şîroveya Linus Torvalds, ku di konferansa Open-Source Summit Europe ku van rojan de pêk tê de, di derbarê tevlêbûna piştgirî ji bo zimanê Rust di kernel Linux de, destnîşan bikin. Paçên ji bo pêşdebirina ajokarên cîhazê bi zimanê Rust di kernel 6.0 de nehatin girtin, lê li gorî Linus, ew ê bi îhtîmalek mezin di kernel 6.1 de bêne pejirandin; ew ê entegrasyonê dereng neke. Wekî motîvasyonek ji bo zêdekirina piştgirî ji Rust re, ji bilî bandora erênî ya li ser ewlehiyê, Linus di heman demê de fersendê dide zêdekirina eleqeya xebata li ser bingeha beşdarên nû, ku di çarçoweya pîrbûna kevneperest de girîng e.

Source: opennet.ru

Add a comment