Newidiodd Cloudflare o NGINX i'w ddirprwy Pingora ei hun, a ysgrifennwyd yn Rust

Cyhoeddodd Cloudflare y byddai ei rwydwaith darparu cynnwys yn cael ei drosglwyddo i ddefnyddio dirprwy Pingora, a ysgrifennwyd yn yr iaith Rust. Mae'r dirprwy newydd yn disodli cyfluniad gweinydd NGINX gyda sgriptiau Lua, ac yn prosesu mwy na thriliwn o geisiadau y dydd. Nodir bod y newid i ddirprwy arbenigol yn caniatáu nid yn unig i weithredu nodweddion newydd a chynyddu diogelwch oherwydd gweithrediad diogel y cof, ond hefyd wedi arwain at gynnydd sylweddol mewn perfformiad ac arbedion adnoddau - nid oes angen defnyddio'r datrysiad sy'n seiliedig ar Pingora. o Lua, ac felly'n defnyddio 70% yn llai o adnoddau CPU a 67% yn llai o gof wrth brosesu'r un faint o draffig.

Am gyfnod hir, roedd system ar gyfer dirprwyo traffig rhwng defnyddwyr a gweinyddwyr terfynol yn seiliedig ar sgriptiau NGINX a Lua yn bodloni anghenion Cloudflare, ond wrth i'r rhwydwaith dyfu ac i'w gymhlethdod gynyddu, daeth datrysiad cyffredinol i fod yn annigonol, o ran perfformiad ac oherwydd cyfyngiadau o ran estynadwyedd a gweithredu cyfleoedd newydd i gleientiaid. Yn benodol, roedd heriau o ran ychwanegu ymarferoldeb y tu hwnt i borth syml a chydbwysedd llwyth. Er enghraifft, daeth yn angenrheidiol, os yw'r gweinydd yn methu â phrosesu cais, i ail-anfon y cais i weinydd arall, gan ddarparu set wahanol o benawdau HTTP iddo.

Yn lle pensaernïaeth sy'n gwahanu ceisiadau i brosesau gweithwyr ar wahân, mae Pingora yn defnyddio model aml-edau, a ddangosodd mewn achosion defnydd Cloudflare (crynodiad uchel o draffig o wahanol safleoedd gyda shifft ystadegol fawr) ddosbarthiad mwy effeithlon o adnoddau rhwng creiddiau CPU. Yn benodol, arweiniodd rhwymiad nginx o geisiadau anghytbwys i brosesau at lwyth anghytbwys ar y creiddiau CPU, gan arwain at geisiadau sy'n defnyddio llawer o adnoddau a rhwystro I/O yn arafu prosesu ceisiadau eraill. Yn ogystal, nid oedd rhwymo'r pwll cysylltiad â phrosesau trin yn caniatáu ailddefnyddio cysylltiadau a sefydlwyd eisoes o brosesau trin eraill, sy'n lleihau effeithlonrwydd pan fo nifer fawr o brosesau trin.

NGINX:

Newidiodd Cloudflare o NGINX i'w ddirprwy Pingora ei hun, a ysgrifennwyd yn Rust

Pingora:

Newidiodd Cloudflare o NGINX i'w ddirprwy Pingora ei hun, a ysgrifennwyd yn Rust

Roedd gweithredu Pingora yn ei gwneud hi'n bosibl lleihau nifer y gosodiadau o gysylltiadau newydd 160 gwaith a chynyddu cyfran y ceisiadau a ailddefnyddir o 87.1% i 99.92%. Yn ogystal â lleihau cysylltiadau dro ar ôl tro a defnydd mwy effeithlon o greiddiau CPU, roedd gwelliant perfformiad y dirprwy newydd yn bennaf oherwydd dileu'r trinwyr Lua araf a ddefnyddir gyda nginx.

Dewiswyd yr iaith Rust i gyflawni perfformiad uchel ynghyd ag argaeledd offer i sicrhau gweithrediad diogel gyda'r cof. Mae sôn, er gwaethaf y peirianwyr cymwys iawn o Cloudflare ac adolygu'r cod a ysgrifennwyd yn yr iaith C, nid oedd yn bosibl i osgoi gwallau yn arwain at broblemau cof (er enghraifft, bregusrwydd yn y parser HTML). O ran y cod newydd, mae'n sôn am achosion o ddadansoddi methiannau yn Pingora, a drodd allan i gael eu hachosi nid gan broblemau yn y cais, ond gan gamgymeriad yn methiannau cnewyllyn Linux a chaledwedd.

Yn ogystal, gallwn nodi sylwebaeth Linus Torvalds, a leisiwyd yng nghynhadledd Open-Source Summit Europe a gynhelir y dyddiau hyn, ynghylch cynnwys cefnogaeth i'r iaith Rust yn y cnewyllyn Linux. Ni chynhwyswyd clytiau ar gyfer datblygu gyrwyr dyfeisiau yn yr iaith Rust yn y cnewyllyn 6.0, ond yn ôl Linus, mae'n debygol y byddant yn cael eu derbyn i'r cnewyllyn 6.1; Fel cymhelliant i ychwanegu cefnogaeth i Rust, yn ogystal â'r effaith gadarnhaol ar ddiogelwch, mae Linus hefyd yn nodi'r cyfle i gynyddu diddordeb mewn gweithio ar graidd cyfranogwyr newydd, sy'n bwysig yng nghyd-destun hen-amserwyr sy'n heneiddio.

Ffynhonnell: opennet.ru

Ychwanegu sylw