Ang Cloudflare mibalhin gikan sa NGINX ngadto sa kaugalingon nga Pingora proxy, nga gisulat sa Rust

Gipahibalo sa Cloudflare ang pagbalhin sa network sa pagpadala sa sulud niini aron magamit ang Pingora proxy, nga gisulat sa Rust nga sinultian. Gipulihan sa bag-ong proxy ang NGINX server-based configuration sa mga Lua script, ug nagproseso ug kapin sa usa ka trilyon nga hangyo kada adlaw. Namatikdan nga ang transisyon ngadto sa usa ka espesyal nga proxy nagtugot dili lamang sa pagpatuman sa bag-ong mga bahin ug sa pagdugang sa seguridad tungod sa luwas nga operasyon sa panumduman, apan usab mitultol ngadto sa usa ka mahinungdanon nga pagtaas sa performance ug resource savings - ang Pingora-based nga solusyon wala magkinahanglan sa paggamit. sa Lua, ug busa konsumo sa 70% nga mas gamay nga mga kapanguhaan CPU ug 67% mas gamay nga memorya samtang nagproseso sa samang gidaghanon sa trapiko.

Sulod sa dugay nga panahon, ang usa ka sistema alang sa pag-proxy sa trapiko tali sa mga tiggamit ug mga end server nga gibase sa NGINX ug Lua nga mga script nakatagbaw sa mga panginahanglan sa Cloudflare, apan samtang ang network mitubo ug ang pagkakomplikado niini misaka, ang usa ka unibersal nga solusyon nahimo nga dili igo, sa mga termino sa performance ug tungod sa mga limitasyon sa extensibility ug pagpatuman sa bag-ong mga oportunidad alang sa mga kliyente. Sa partikular, adunay mga hagit sa pagdugang sa pagpaandar lapas sa usa ka yano nga gateway ug load balancer. Pananglitan, gikinahanglan, kung ang server mapakyas sa pagproseso sa usa ka hangyo, ipadala pag-usab ang hangyo ngadto sa laing server, nga naghatag niini og lain nga set sa HTTP header.

Imbis sa usa ka arkitektura nga nagbulag sa mga hangyo ngadto sa bulag nga mga proseso sa trabahante, ang Pingora naggamit sa usa ka multi-threaded nga modelo, nga sa Cloudflare naggamit sa mga kaso (taas nga konsentrasyon sa trapiko gikan sa lain-laing mga site nga adunay dako nga statistical shift) nagpakita sa usa ka mas episyente nga pag-apod-apod sa mga kahinguhaan tali sa CPU cores. Sa partikular, ang pagbugkos sa nginx sa dili balanse nga mga hangyo sa mga proseso miresulta sa dili balanse nga pagkarga sa mga cores sa CPU, nga miresulta sa mga hangyo nga kusog sa kapanguhaan ug pagbabag sa I/O nga nagpahinay sa pagproseso sa ubang mga hangyo. Dugang pa, ang pagbugkos sa pool sa koneksyon ngadto sa mga proseso sa handler wala magtugot sa paggamit pag-usab sa natukod na nga mga koneksyon gikan sa ubang mga proseso sa handler, nga makapamenos sa kahusayan kung adunay daghang mga proseso sa handler.

NGINX:

Ang Cloudflare mibalhin gikan sa NGINX ngadto sa kaugalingon nga Pingora proxy, nga gisulat sa Rust

Pingora:

Ang Cloudflare mibalhin gikan sa NGINX ngadto sa kaugalingon nga Pingora proxy, nga gisulat sa Rust

Ang pagpatuman sa Pingora nagpaposible sa pagpakunhod sa gidaghanon sa mga instalasyon sa mga bag-ong koneksyon sa 160 ka beses ug pagdugang sa bahin sa gigamit pag-usab nga mga pangutana gikan sa 87.1% ngadto sa 99.92%. Dugang pa sa pagkunhod sa reconnections ug mas episyente nga paggamit sa CPU cores, ang bag-ong proxy nga performance improvement kay nag-una tungod sa pagtangtang sa hinay nga Lua handler nga gigamit sa nginx.

Ang Rust nga pinulongan gipili aron makab-ot ang taas nga performance inubanan sa pagkaanaa sa mga himan aron masiguro ang luwas nga operasyon nga adunay memorya. Gihisgutan nga bisan pa sa mga kwalipikado nga mga inhenyero sa Cloudflare ug gisusi ang code nga gisulat sa C nga lengguwahe, dili posible nga malikayan ang mga sayup nga nagdala sa mga problema sa memorya (pananglitan, usa ka pagkahuyang sa HTML parser). Sama sa alang sa bag-ong code, kini naghisgot bahin sa mga kaso sa pag-analisar sa mga kapakyasan sa Pingora, nga nahimo nga dili tungod sa mga problema sa aplikasyon, apan sa usa ka sayup sa Linux kernel ug mga kapakyasan sa hardware.

Dugang pa, atong mamatikdan ang komentaryo ni Linus Torvalds, nga gipahayag sa Open-Source Summit Europe nga komperensya nga nahitabo karong mga adlawa, mahitungod sa paglakip sa suporta alang sa Rust nga pinulongan sa Linux kernel. Ang mga patch alang sa pagpalambo sa mga driver sa device sa Rust nga pinulongan wala gilakip sa 6.0 kernel, apan sumala ni Linus, kini lagmit nga dawaton ngadto sa 6.1 kernel; dili niya malangan ang paghiusa. Ingon usa ka panukmod sa pagdugang suporta alang sa Rust, dugang sa positibo nga epekto sa seguridad, gikutlo usab ni Linus ang oportunidad nga madugangan ang interes sa pagtrabaho sa kinauyokan sa mga bag-ong partisipante, nga hinungdanon sa konteksto sa mga tigulang nga tigulang.

Source: opennet.ru

Idugang sa usa ka comment