Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Markaa waxaad ururinaysaa cabbirada. Sida aan nahay. Waxaan sidoo kale aruurinnaa cabbirada. Dabcan, lagama maarmaanka u ah ganacsiga. Maanta waxaan ka hadli doonaa isku xirka ugu horreeya ee nidaamkayaga kormeerka - server-ka isku-darka ku habboon statsd bioiyo, sababta aan u qornay iyo sababta aan uga tagnay brubeck.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Qormadeenii hore (1, 2) waxaad ogaan kartaa in ilaa wakhti aanu soo ururinay calaamado isticmaalaya buraash. Waxay ku qoran tahay C. Marka laga eego dhinaca koodka, way fududahay sida fur (tani waa muhiim marka aad rabto inaad wax ku darsato) iyo, tan ugu muhiimsan, waxay gacanta ku haysaa muggayada 2 milyan metrics ilbiriqsi kasta (MPS) marka ugu sarreysa dhib la'aan. Dukumeentigu wuxuu sheegayaa in 4 milyan MPS lagu taageerayo calaamad. Tani waxay ka dhigan tahay inaad heli doonto tirada la sheegay haddii aad si sax ah ugu habayso shabakada Linux Linux. (Ma garanayno inta MPS ee aad heli karto haddii aad uga baxdo shabakadda sida ay tahay). Iyadoo ay jiraan faa'iidooyinkaas, waxaan ka helnay cabashooyin dhowr ah oo ku saabsan burushka.

Sheegasho 1. Github, horumariyaha mashruuca, ayaa joojiyay taageeradiisa: daabacaadda balastarrada iyo hagaajinta, aqbalka annaga iyo (maaha oo keliya) PR. Dhowrkii bilood ee la soo dhaafay (meel laga soo bilaabo Febraayo-Maarso 2018), dhaqdhaqaaqa ayaa dib u soo laabtay, laakiin ka hor waxaa jiray ku dhawaad ​​2 sano oo xasilloon. Intaa waxaa dheer, mashruuca waa la horumarinayaa baahida gudaha Gihub, taasoo caqabad weyn ku noqon karta soo bandhigida astaamo cusub.

Sheegasho 2. Saxnimada xisaabinta. Brubeck wuxuu ururiyaa wadarta 65536 qiyam ee isku-darka. Xaaladeena, halbeegyada qaar, inta lagu jiro xilliga isku-darka (30 ilbiriqsi), qiimayaal aad u badan ayaa imaan kara (1 meesha ugu sarreysa). Natiijadii shaybaarkan, qiimaha ugu sarreeya iyo kan ugu yar ayaa u muuqda mid aan waxtar lahayn. Tusaale ahaan, sida tan:

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka
Sidii ay ahayd

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka
Siday ahaan lahayd

Isla sababtaas awgeed, lacagta guud ahaan waxaa loo xisaabiyaa si khaldan. Ku dar halkan cayayaan leh qulqul sabeyn 32-bit ah, kaas oo guud ahaan u dira serferka si uu u noqdo segfault marka la helo cabbir u muuqda mid aan waxba galabsan, wax walbana way fiicnaanayaan. Cayayaanka, dhanka kale, lama hagaajin.

Ugu dambeyntii Sheegashada X. Waqtiga qorista, waxaan diyaar u nahay inaan u soo bandhigno dhammaan 14 ka badan ama ka yar fulinta statsd ee aan awoodnay inaan helno. Aynu qiyaasno in qaar ka mid ah kaabayaasha dhaqaalaha ay si aad ah u koreen oo aqbalida 4 milyan MPS kuma filna. Ama xitaa haddii aysan weli korin, laakiin cabbirada ayaa durbaba aad muhiim ugu ah adiga oo xitaa gaaban, 2-3 daqiiqadood oo jaantusyada ku jira waxay mar hore noqon karaan kuwo muhiim ah oo sababi kara niyad-jabka aan la dabooli karin ee maamulayaasha dhexdooda. Maadaama daaweynta niyad-jabku ay tahay hawl aan mahad lahayn, xalal farsamo ayaa loo baahan yahay.

Marka hore, dulqaadka qaladka, si dhibaatada lama filaanka ah ee server-ka aysan u keenin apocalypse zombie maskaxeed ee xafiiska. Marka labaad, miisaanka si ay u awoodaan inay aqbalaan in ka badan 4 milyan MPS, iyada oo aan si qoto dheer loo qodin xirmooyinka shabakadda Linux oo si deggan u koraya "ballaaran" cabbirka loo baahan yahay.

Maadaama aan haysanay meel aan ku cabirno, waxaan go'aansanay inaan ku bilowno dulqaadka qaladka. " KU SAABSAN! Dulqaadka qaladka! Way fududahay, waan samayn karnaa, "Waxaan u maleynay oo aan bilownay 2 server, kor u qaadista nuqul ka mid ah brubeck. Si tan loo sameeyo, waxay ahayd inaan koobiyayno taraafig leh metrik labada adeegayaal oo aan xitaa u qorno tan adeeg yar. Waxaan ku xalinay dhibaatada dulqaadka qaladka tan, laakiin... si fiican uma ahayn. Markii hore wax walba waxay u muuqdeen kuwo aad u wanaagsan: brubeck kastaa wuxuu ururiyaa nooca isugeynta, wuxuu u qoraa xogta Graphite hal mar 30 ilbiriqsi kasta, isagoo dib u qoraya barqadii hore (tani waxaa lagu sameeyaa dhinaca Graphite). Haddii hal server uu si lama filaan ah u guuldareysto, waxaan had iyo jeer haysanaa mid labaad oo leh nuqul u gaar ah oo ah xogta la isku daray. Laakiin halkan waa dhibka: haddii server-ku guuldareysto, "sawir" ayaa ka muuqda garaafyada. Tan waxa u sabab ah in 30-da ilbiriqsi ee u dhexeeya brubeck aan la wada socon, isla markaana xilligan shilku dhacay mid ka mid ah aan la qorin. Marka server-ka labaad bilaabo, wax la mid ah ayaa dhacaya. Aad loo dulqaadan karo, laakiin waxaan rabaa wax ka sii wanaagsan! Dhibaatada miisaanku sidoo kale ma tagin. Dhammaan halbeegyada cabbirada ayaa weli "u duulaya" hal server, sidaas darteed waxaan ku xaddidnay isla 2-4 milyan MPS, iyadoo ku xiran heerka shabakadda.

Haddii aad ka fikirto wax yar oo ku saabsan dhibaatada oo isla markaaba baraf ku qodo majarafad, ka dibna fikradda cad ee soo socota ayaa laga yaabaa inay maskaxda ku hayso: waxaad u baahan tahay statsd kaas oo ka shaqayn kara habka loo qaybiyay. Taasi waa, mid fulinaya is-waafajinta noodhka wakhtiga iyo cabbirada. "Dabcan, xal noocan oo kale ah waxay u badan tahay inuu hore u jiray," ayaanu nidhi oo aanu tagnay Google-ka…. Waxna ma ay helin. Ka dib markii loo maro dukumeentiyada statsd kala duwan (https://github.com/etsy/statsd/wiki#server-implementations laga bilaabo Diisambar 11.12.2017, XNUMX), gabi ahaanba waxba maanu helin. Sida muuqata, horumariyayaashu iyo isticmaaleyaasha xalalkan midkoodna wali lama kulmin cabbirro aad u badan, haddii kale hubaal waxay la imaan doonaan wax.

Kadibna waxaan xasuusanay wax ku saabsan "toy" statsd - bioyino, kaas oo lagu qoray Just for Fun hackathon (magaca mashruuca waxaa soo saaray qoraalka ka hor bilawga hackathon) waxaanan ogaanay inaan si degdeg ah ugu baahanahay statsd noo gaar ah. Maxay?

  • sababtoo ah waxaa jira tiro aad u yar oo ka mid ah clones-ka adduunka,
  • sababtoo ah waxaa suurtogal ah in la bixiyo waxa la rabo ama u dhow dulqaadka cilada la rabo iyo miisaanka (oo ay ku jirto isku-dhafka cabbirada isku-darka ah ee u dhexeeya server-yada iyo xallinta dhibaatada diritaanka isku dhacyada),
  • sababtoo ah waxaa suurtogal ah in si sax ah loo xisaabiyo mitirka brubeck,
  • sababtoo ah adigu waxaad ururin kartaa tirokoobyo faahfaahsan oo dheeraad ah, taas oo brubeck ficil ahaan aan na siin,
  • sababtoo ah waxaan fursad u helay in aan barnaamijiyo hyperperformance u gaar ah codsiga shaybaadhka qaybiyey, taas oo aan si buuxda u soo celin doonaa qaab-dhismeedka hyperfor kale oo la mid ah ... si fiican, taasi waa.

Maxaa lagu qoraa? Dabcan, in Rust. Waa maxay sababtu?

  • sababtoo ah waxaa hore u jiray xal tusaale ah,
  • sababtoo ah qoraaga maqaalku wuxuu hore u yaqaanay miridhku waagaas wuxuuna u heellanaa inuu wax ku qoro si loo soo saaro isagoo fursad u helaya inuu ku dhejiyo ilo furan.
  • sababtoo ah luqadaha GC naguma habboona sababtoo ah dabeecadda gaadiidka la helay (ku dhawaad ​​​​waqtiga dhabta ah) iyo joojinta GC waa wax aan la aqbali karin,
  • sababtoo ah waxaad u baahan tahay waxqabadka ugu sarreeya ee u dhigma C
  • sababtoo ah miridhku waxa uu ina siinaya lacag aan baqdin lahayn, oo hadii aan ku bilowno qorista C/C++, waxa aanu la kulmi lahayn nuglaanta xitaa ka sii badan, qulqulka xad dhaafka ah, xaaladaha jinsiyada iyo ereyo kale oo cabsi leh marka loo eego brubeck.

Waxa kale oo jirtay dood ka dhan ah Daxalka. Shirkaddu wax khibrad ah uma lahayn abuurista mashaariicda Rust, iyo hadda sidoo kale ma qorsheyneyno inaan u isticmaalno mashruuca ugu weyn. Sidaa darteed, waxaa jirtay cabsi weyn oo ah in aanay waxba soconayn, laakiin waxaan go'aansanay inaan fursad qaadanno oo aan isku daynay.

Waqti ayaa dhaafey...

Ugu dambeyntii, dhowr isku day oo fashilmay ka dib, nuqulkii ugu horreeyay ee shaqada ayaa diyaar ahaa. Maxaa dhacay? Sidan ayaa dhacday.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Nod kastaa wuxuu helayaa jaangooyooyin u gaar ah oo urursada, mana soo ururiyo cabbiraadaha noocyadaas halka xirmooyinkooda oo buuxa looga baahan yahay isu geynta kama dambaysta ah. Nodes-ku waxay ku xiran yihiin midba midka kale nooc ka mid ah borotokoolka qufulka la qaybiyey, kaas oo kuu ogolaanaya inaad ka dhex doorato midka kaliya ee (halkan waannu ku qaylinnay) kaas oo u qalma in loo diro mitirka Weyn. Dhibaatadan hadda waxaa lagu xalin karaa Qunsulka, laakiin mustaqbalka hamiga qoraagu waa uu sii socdaa leedahay hirgelinta Raft, halka kan ugu mudan uu, dabcan, noqon doono hogamiyaha la isku raacsan yahay. Marka laga soo tago is-afgaradka, noodhadhku marar badan (hal ilbiriqsi ahaan hal mar) waxay u diraan deriskooda qaybaha cabbirada hore loo soo ururiyay ee ay ku guuleysteen inay ku ururiyaan ilbiriqsigaas. Waxaa soo baxday in xajinta iyo u dulqaadashada qaladka la ilaaliyo - noodh kastaa wuxuu weli hayaa jaangooyo buuxa, laakiin cabbirada waxaa loo diraa mar hore la isku daray, iyada oo loo sii marayo TCP oo lagu dhejiyay borotokoolka binary, markaa kharashka nuqulku si weyn ayaa loo dhimay marka loo eego UDP. In kasta oo tirada saxda ah ee cabbirrada soo galaya ay aad u badan yihiin, ururintu waxay u baahan tahay xasuus aad u yar iyo xitaa CPU ka yar. Xirfadeena aadka loo cadaadin karo, tani waa kaliya dhowr tobanaan megabyte oo xog ah. Sida gunno dheeraad ah, ma helayno xog aan loo baahnayn oo dib ugu qorta Graphite, sida kiiskii burbeck.

Xirmooyinka UDP ee leh mitirku waa isku dheeli tirnayn inta u dhaxaysa qanjidhada qalabka shabakada iyada oo loo marayo Round Robin fudud. Dabcan, qalabka shabakadu ma kala saaro waxa ku jira baakadaha, sidaas darteedna waxa uu soo jiidi karaa wax ka badan baakadaha 4M ilbiriqsi kasta, iyada oo aan la xusin qiyaasaha kuwaas oo aanay waxba ka garanayn. Haddii aan xisaabta ku darno in cabbiradu aysan midba mar ku imaan xirmo kasta, markaa ma aragno wax dhibaato ah oo waxqabadka meeshan ah. Haddii server-ku burburo, aaladda shabakadu si dhakhso ah (1-2 ilbiriqsi gudahood) waxay ogaanaysaa xaqiiqadan oo waxay ka saartaa server-ka burburay wareegga. Natiijadu waxay tahay, qanjidhada dadban (ie, kuwa aan hogaamiye ahayn) noodhadhka waa la dami karaa oo dami karaa si ficil ahaan ah iyada oo aan la dareemin hoos u dhigista jaantusyada. Inta ugu badan ee aan luminay waa qayb ka mid ah cabbirada soo galay ilbiriqsigii ugu dambeeyay. Luminta/damida lama filaanka ah ee hoggaamiyaha ayaa weli abuuri doonta cillad yar (30-ka ilbiriqsi weli waa ka maqan yahay), laakiin haddii uu jiro xiriir ka dhexeeya noodyada, dhibaatooyinkan waa la yareeyn karaa, tusaale ahaan, iyada oo la dirayo xirmooyinka isku-dhafka. .

Wax yar oo ku saabsan qaabka gudaha. Codsiga, dabcan, waa la isku duubay, laakiin qaab dhismeedka duntu wuu ka duwan yahay kan loo isticmaalo brubeck. Xadhkaha ku jira brubeck waa isku mid - mid kasta oo iyaga ka mid ah ayaa mas'uul ka ah ururinta macluumaadka iyo isku-darka labadaba. Bioyono, shaqaaluhu waxay u qaybsan yihiin laba kooxood: kuwa mas'uulka ka ah shabakadda iyo kuwa mas'uulka ka ah isku-darka. Qeybtaani waxay kuu ogolaaneysaa inaad si dabacsan u maareyso codsiga iyadoo ku xiran nooca mitirka: meesha isku-darka degdega ah loo baahan yahay, waxaad ku dari kartaa isku-darka, halkaas oo ay jiraan taraafikada shabakado badan, waxaad ku dari kartaa tirada qulqulka shabakada. Waqtigan xaadirka ah, server-yadayada waxaan ka shaqeynaa 8 shabakad iyo 4 isku-dar ah isku-darka.

Qaybta tirinta (mas'uulka ka ah isku-darka) waa mid caajis badan. Xirmooyinka ay buuxiyeen qulqulka shabakadu waxay u qaybsan yihiin tirinta qulqulka, halkaas oo ay ka dib kala soocaan oo la isku daray. Marka la codsado, cabbirada ayaa la bixiyaa si loogu diro qanjidhada kale. Waxaas oo dhan, oo ay ku jiraan dirista xogta u dhaxaysa noodhka iyo la shaqaynta Qunsulka, ayaa loo fuliyaa si isku mid ah, iyada oo ku socota qaabka tokyo.

Dhibaatooyin kale oo badan inta lagu jiro horumarka waxaa sababay qaybta shabakada ee mas'uulka ka ah helitaanka cabbirada. Hadafka ugu weyn ee kala soocida qulqulka shabakadaha ee qaybaha kala duwan waxay ahayd rabitaanka in la dhimo wakhtiga socodka socodka ma si aad u akhrido xogta godka. Ikhtiyaarada isticmaalaya UDP asynchronous iyo recvmsg caadiga ah si dhakhso ah ayey u lumeen: kan kowaad wuxuu cunaa meel aad u badan oo CPU ah si loo habeeyo dhacdada, ka labaadna wuxuu u baahan yahay bedelo badan oo macnaha guud ah. Sidaa darteed hadda waa la isticmaalaa recvmmsg oo leh bakhaarro waaweyn (iyo kaydiyayaal, saraakiishii mudane, adiga waxba maaha!). Taageerada UDP-ga caadiga ah waxaa loo hayaa kiisaska khafiifka ah ee aan loo baahnayn recvmmsg. Qaabka fariimaha badan, waxaa suurtagal ah in la gaaro waxa ugu muhiimsan: inta badan waqtiga, dunta shabakadu waxay kicisaa safka OS - waxay akhridaa xogta godka waxayna u gudbisaa barta isticmaale, kaliya marmarka qaarkood waxay u beddeshaa siinta kaydiyaha buuxa isku-ururiyeyaasha. Safka ku jira godka si dhab ah uma ururo, tirada baakadaha la tuuray ficil ahaan ma koraan.

tacliiq

Goobaha caadiga ah, cabbirka kaydinta ayaa loo dejiyay inuu noqdo mid aad u weyn. Haddii aad si lama filaan ah u go'aansato inaad isku daydo server-ka laftaada, waxaa laga yaabaa inaad la kulanto xaqiiqda ah in ka dib markaad dirto tiro yar oo mitir ah, ma iman doonaan Graphite, oo ku sii jira kaydiyaha qulqulka shabakada. Si aad ula shaqeyso tiro yar oo cabbirro ah, waxaad u baahan tahay inaad dejiso cabbirka bufsize iyo cabbirka-shaqada-cabbirka-qiyamyada yaryar ee isku xidhka.

Ugu dambeyntii, qaar ka mid ah jaantusyada jaantusyada jecel.

Tirakoobka tirada cabbirada soo galaya ee server kasta: in ka badan 2 milyan MPS.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Deminta mid ka mid ah noodyada iyo dib u qaybinta qiyaasaha soo socda.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Tirakoobyada cabbirada baxaya: hal nood oo keliya ayaa had iyo jeer soo dira - horjoogaha weerarka.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Tirakoobka hawlgalka node kasta, iyada oo la tixgelinayo khaladaadka qaybaha nidaamka kala duwan.

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Faahfaahinta halbeegyada soo socda (magacyada metric waa qarsoon yihiin).

Biyoino - qaybsan, isku-darka cabbiraadda cabbirka

Maxaan qorshaynaynaa inaan ku samayno waxaas oo dhan xiga? Dabcan, qor kood, habaar...! Mashruucan ayaa markii hore loo qorsheeyay inuu noqdo il furan wuxuuna ahaan doonaa inta uu nool yahay. Qorshayaashayada dhow waxaa ka mid ah u beddelashada noocayada Raft, beddelka borotokoolka asxaabta mid la qaadi karo, soo bandhigida tirokoobyo gudaha ah oo dheeri ah, noocyo cusub oo cabbirro ah, hagaajinta cayayaanka iyo horumarin kale.

Dabcan, qof kastaa waa lagu soo dhaweynayaa inuu ka caawiyo horumarinta mashruuca: abuuro PR, Arrimaha, haddii ay suurtagal tahay waxaan ka jawaabi doonaa, hagaajin doonaa, iwm.

Iyadoo taas la leeyahay, waa intaas dadyow, iibsada maroodigayaga!



Source: www.habr.com

Add a comment