I-Cloudflare itshintshile ukusuka kwi-NGINX ukuya kwi-proxy yayo ye-Pingora, ebhalwe kwi-Rust

I-Cloudflare ibhengeze utshintsho lwenethiwekhi yokuhanjiswa komxholo wayo ukusebenzisa i-proxy ye-Pingora, ebhalwe ngolwimi lwe-Rust. I-proxy entsha ithatha indawo ye-NGINX-based based configuration kunye ne-Lua scripts, kunye neenkqubo ezingaphezu kwe-trillion yezicelo ngosuku. Kuphawulwe ukuba ukutshintshela kwi-proxy ekhethekileyo akuvunyelwe kuphela ukuphumeza iimpawu ezintsha kunye nokwandisa ukhuseleko ngenxa yokusebenza ngokukhuselekileyo kwememori, kodwa kwakhokelela ekunyuseni okukhulu ekusebenzeni kunye nokugcinwa kwezibonelelo - isisombululo esisekelwe kwiPingora asifuni ukusetyenziswa. yeLua, kwaye ke idla i-70% encinci yezixhobo ze-CPU kunye ne-67% yememori engaphantsi ngelixa kusetyenzwa inani elifanayo letrafikhi.

Kwangexesha elide, inkqubo ye-proxying traffic phakathi kwabasebenzisi kunye neeseva zokugqibela ezisekelwe kwi-NGINX kunye ne-Lua scripts zanelisa iimfuno ze-Cloudflare, kodwa njengoko inethiwekhi yanda kwaye ubunzima bayo banda, isisombululo sendalo yonke sabonakala singenakwanela, zombini ngokwemiqathango ukusebenza kwaye ngenxa yokunciphisa ukwandiswa kunye nokuphunyezwa kwamathuba amatsha kubathengi. Ngokukodwa, bekukho imingeni ekongezeni ukusebenza ngaphaya kwesango elilula kunye ne-balancer yomthwalo. Ngokomzekelo, kuye kwaba yimfuneko, ukuba umncedisi akaphumeleli ukucubungula isicelo, ukuthumela kwakhona isicelo kwenye iseva, enikezela ngesethi eyahlukileyo yeentloko zeHTTP.

Esikhundleni soyilo lwezakhiwo olwahlula izicelo kwiinkqubo zabasebenzi abahlukeneyo, i-Pingora isebenzisa imodeli enemisonto emininzi, ekwiimeko zokusetyenziswa kwe-Cloudflare (uxinzelelo oluphezulu lwetrafikhi ukusuka kwiindawo ezahlukeneyo kunye noshintsho olukhulu lwamanani) lubonise ukuhanjiswa okusebenzayo kwezixhobo phakathi kwe-CPU cores. Ngokukodwa, ukubophelela kwe-nginx kwezicelo ezingalungelelananga kwiinkqubo kubangele umthwalo ongalinganiyo kwii-CPU cores, okukhokelela kwizicelo ezinzulu zobutyebi kunye nokuthintela i-I/O icothise ukuqhutywa kwezinye izicelo. Ukongeza, ukubophelela i-pool yokudibanisa kwiinkqubo zokuphatha akuzange kuvumele ukusetyenziswa kwakhona koqhagamshelo olusele lusekiwe ukusuka kwezinye iinkqubo zokuphatha, okunciphisa ukusebenza kakuhle xa kukho inani elikhulu leenkqubo zokuphatha.

NGINX:

I-Cloudflare itshintshile ukusuka kwi-NGINX ukuya kwi-proxy yayo ye-Pingora, ebhalwe kwi-Rust

Pingora:

I-Cloudflare itshintshile ukusuka kwi-NGINX ukuya kwi-proxy yayo ye-Pingora, ebhalwe kwi-Rust

Ukuphunyezwa kwePingora kwenze ukuba kube lula ukunciphisa inani lofakelo loqhagamshelo olutsha ngamaxesha angama-160 kunye nokwandisa isabelo sezicelo ezisetyenzisiweyo kwakhona ukusuka kwi-87.1% ukuya kwi-99.92%. Ukongeza ekunciphiseni ukuqhagamshelwa kwakhona kunye nokusetyenziswa ngokufanelekileyo kwe-CPU cores, ukuphuculwa komsebenzi omtsha we-proxy kwakungenxa yokususwa kweziphatho ezicothayo zeLua ezisetyenziswe nge-nginx.

Ulwimi lweRust lukhethwe ukufezekisa ukusebenza okuphezulu kunye nokufumaneka kwezixhobo zokuqinisekisa ukusebenza okukhuselekileyo ngememori. Kukhankanyiwe ukuba nangona iinjineli eziphezulu ze-Cloudflare kunye nokuphonononga ikhowudi ebhalwe ngolwimi lwe-C, kwakungenakwenzeka ukuphepha iimpazamo ezikhokelela kwiingxaki zememori (umzekelo, ubuthathaka kwi-HTML parser). Ngokuphathelele ikhowudi entsha, ithetha ngeemeko zokuhlalutya ukungaphumeleli kwi-Pingora, okuye kwavela ukuba akubangelwa yingxaki kwisicelo, kodwa ngephutha kwi-Linux kernel kunye nokungaphumeleli kwe-hardware.

Ukongezelela, sinokuphawula inkcazo kaLinus Torvalds, evezwe kwinkomfa ye-Open-Source Summit yaseYurophu eyenzeka kule mihla, malunga nokubandakanywa kwenkxaso yolwimi lweRust kwi-Linux kernel. Iipetshi zokuphuhlisa abaqhubi besixhobo kulwimi lweRust azizange zibandakanywe kwi-6.0 kernel, kodwa ngokukaLinus, kunokwenzeka ukuba zamkelwe kwi-6.1 kernel; akayi kulibazisa ukudibanisa. Njengesikhuthazo sokongeza inkxaso ye-Rust, ngaphezu kwefuthe elihle kukhuseleko, uLinus uphinde uchaze ithuba lokwandisa umdla ekusebenzeni kwingundoqo yabathathi-nxaxheba abatsha, okubalulekileyo kumxholo wokuguga.

umthombo: opennet.ru

Yongeza izimvo