Tupperware: Kujerê Kubernetes a Facebookê?

Bi Tupperware re rêveberiya bikêr û pêbawer a koman di her astê de

Tupperware: Kujerê Kubernetes a Facebookê?

Îro li ser Konferansa Systems@Scale me Tupperware destnîşan kir, pergala meya rêveberiya komê ya ku konteynerên bi mîlyonan serverên ku hema hema hemî karûbarên me dimeşînin berhev dike. Me yekem car di sala 2011-an de Tupperware bi cih kir, û ji hingê ve binesaziya me ji wê mezintir bûye 1 navenda daneyê bi tevahî 15 navendên danûstendinê yên jeo-belavkirî. Hemî vê demê, Tupperware sekinî û bi me re pêş ket. Em ê nîşanî we bidin ka Tupperware çawa rêveberiya komê ya pola yekem peyda dike, di nav de piştgirîya hêsan ji bo karûbarên dewletî, panelek kontrolê ya yekane ji bo hemî navendên daneyê, û şiyana belavkirina kapasîteyê di navbera karûbaran de di demek rast de. Di heman demê de em ê dersên ku me fêr bûne jî ku binesaziya me pêşve diçe parve bikin.

Tupperware karên cûda pêk tîne. Pêşdebirên serîlêdanê wê bikar tînin da ku serîlêdanan radest bikin û birêve bibin. Ew koda serîlêdanê û girêdanan di nav wêneyekê de pak dike û wekî konteyneran radestî serveran dike. Konteyner di navbera serîlêdanên li ser heman serverê de veqetandinê peyda dikin da ku pêşdebiran bi mantiqa serîlêdanê re mijûl bibin û ji dîtina serveran an birêvebirina nûvekirinan xeman nebin. Tupperware di heman demê de performansa serverê jî dişopîne, û heke têkçûnek bibîne, ew konteyneran ji servera bi pirsgirêk vediguhezîne.

Endezyarên plansazkirina kapasîteyê Tupperware bikar tînin da ku kapasîteya serverê li ser bingeha budce û astengiyan veqetînin tîmên. Ew jî wê bikar tînin da ku karanîna serverê baştir bikin. Operatorên navenda daneyê berê xwe didin Tupperware da ku konteyneran bi rêkûpêk li navendên daneyê belav bikin û di dema lênihêrînê de konteyneran rawestînin an biguhezînin. Bi saya vê yekê, domandina server, torgilok û amûran hewceyê destwerdana mirovî ya hindik e.

mîmariya Tupperware

Tupperware: Kujerê Kubernetes a Facebookê?

Mîmariya Tupperware PRN yek ji herêmên navendên daneyên me ye. Herêm ji gelek avahiyên navenda daneyê (PRN1 û PRN2) ku li nêzîkê ne pêk tê. Em plan dikin ku panelek kontrolê çêbikin ku dê hemî serveran li yek herêmek birêve bibe.

Pêşdebirên serîlêdanê di forma karên Tupperware de karûbaran peyda dikin. Karek ji gelek konteyneran pêk tê, û ew hemî bi gelemperî heman koda serîlêdanê dimeşînin.

Tupperware ji peydakirina konteyneran û birêvebirina çerxa jiyana wan berpirsiyar e. Ew ji çend beşan pêk tê:

  • Pêşiya Tupperware API-ê ji bo navgîniya bikarhêner, CLI, û amûrên din ên otomasyonê peyda dike ku hûn dikarin bi Tupperware re têkilî daynin. Ew tevahiya avahiya hundurîn ji xwediyên karên Tupperware vedişêrin.
  • Tupperware Scheduler panelek kontrolê ye ku berpirsiyarê birêvebirina konteynir û çerxa jiyana kar e. Ew di astên herêmî û gerdûnî de tête bicîh kirin, ku nexşerêya herêmî serveran li yek herêmek birêve dibe û nexşerê gerdûnî serverên ji herêmên cihêreng birêve dibe. Plansaz li ser perçeyan tê dabeş kirin, û her perçeyek komek karan birêve dibe.
  • Tupperware's Scheduler Proxy parvekirina hundurîn vedişêre û ji bo bikarhênerên Tupperware şûşeyek yekta hêsan peyda dike.
  • Dabeşkarê Tupperware konteyneran ji pêşkêşkeran re destnîşan dike. Plansaz rawestan, destpêkirin, nûvekirin û têkçûna konteyneran digire dest. Heya nuha, yek veqetandî dikare tevahiya herêmê bêyî dabeşkirina perçeyan îdare bike. (Cûdahiya di termînolojiyê de bala xwe bidinê. Mînakî, plansazker di Tupperware de bi panela kontrolê re têkildar e Kubernetes, û veqetînera Tupperware di Kubernetes de plansazker tê gotin.)
  • Brokera çavkaniyê ji bo server û bûyerên karûbarê çavkaniya rastiyê hilîne. Em ji bo her navendek daneyê yek brokerek çavkaniyê dimeşînin, û ew hemî agahdariya li ser serverên li wê navenda daneyê hilîne. Brokera çavkaniyê û pergala rêveberiya kapasîteyê, an pergala dabînkirina çavkaniyê, bi dînamîk biryar dide ku radestkirina plansaz kîjan serverê kontrol dike. Karûbarê kontrolkirina tenduristiyê serveran dişopîne û daneyên li ser tenduristiya wan di brokera çavkaniyê de hilîne. Ger serverek pirsgirêk hebe an hewceyê lênihêrînê be, brokerê çavkaniyê ji veqetanker û plansazker re dibêje ku konteyneran rawestînin an wan biguhezînin serverên din.
  • Tupperware Agent şeydanek e ku li ser her serverê dixebite ku peydakirin û rakirina konteyneran dike. Serlêdan di hundurê konteynerek de têne xebitandin, ku ji wan re bêtir îzolasyon û dubarebûnê dide. Li konferansa Systems @Scale ya sala borî Me berê jî diyar kiriye ka konteynerên Tupperware yên takekesî çawa bi karanîna wêne, btrfs, cgroupv2 û systemd têne afirandin.

Taybetmendiyên cihêreng ên Tupperware

Tupperware bi gelek awayan dişibihe pergalên rêveberiya komê yên din ên wekî Kubernetes û Mesos, lê cûdahî jî hene:

  • Piştgiriya çêkirî ji bo karûbarên dewletê.
  • Panelek kontrolê ya yekane ji bo pêşkêşkerên li navendên daneyên cihêreng da ku radestkirina konteyneran li ser bingeha mebest, rakirina koman û lênihêrînê otomatîk bike.
  • Dabeşkirina panela kontrolê ya ji bo zoomkirinê paqij bike.
  • Hesabkirina elastîk dihêle hûn di demek rast de hêzê di navbera karûbaran de belav bikin.

Me van taybetmendiyên xweş pêşxist da ku piştgirî bide cûrbecûr serîlêdanên bêdewlet û dewletparêz li seranserê fîloya serverek hevpar a gerdûnî ya mezin.

Piştgiriya çêkirî ji bo karûbarên dewletê.

Tupperware cûrbecûr karûbarên krîtîk ên krîtîk ên ku daneyên hilbera domdar ji bo Facebook, Instagram, Messenger û WhatsApp hilîne dimeşîne. Dibe ku ev dikanên mezin ên cotên key-nirxê bin (mînak. ZippyDB) û şopandina depoyên daneyê (mînak, ODS Gorilla и Scuba). Xwedîkirina karûbarên dewletî ne hêsan e, ji ber ku pergal pêdivî ye ku pêbaweriya konteyneran li ber astengiyên mezin, tevî qutbûna torê an qutbûna elektrîkê, bisekinin. Û dema ku teknîkên kevneşopî, wekî belavkirina konteyneran li ser domên xeletiyê, ji bo karûbarên bêdewlet baş dixebitin, karûbarên dewletî hewceyê piştgirîyek din in.

Mînakî, heke têkçûnek server yek kopiyek databasê neberdest bike, gelo hûn ê lênihêrîna otomatîkî çalak bikin ku dê li ser 50 pêşkêşkerên ji hewzek 10-î core nûve bike? Bi rewşê ve girêdayî ye. Ger yek ji van 50 pêşkêşkeran kopiyek din a heman databasê hebe, çêtir e ku hûn li bendê bimînin û 2 kopiyên yekcar winda nekin. Ji bo ku em bi awayekî dînamîkî biryarên di derbarê domandin û performansa pergalê de bidin, em hewceyê agahdariya di derbarê dubarekirina daneya navxweyî û mantiqa cîhkirina her karûbarek dewletî de ne.

Navbera TaskControl destûrê dide karûbarên dewletî ku bandorê li biryarên ku bandorê li hebûna daneyê dikin. Bi karanîna vê navberê, plansazker sepanên derveyî di derheqê operasyonên konteynerê de (ji nû ve destpêkirin, nûvekirin, koçberî, lênihêrîn) agahdar dike. Karûbarek dewletdar kontrolkerek pêk tîne ku ji Tupperware re dibêje kengê ew ewle ye ku her operasyonê pêk bîne, û van operasyonan dikarin bi demkî werin guheztin an dereng kirin. Di mînaka li jor de, kontrolkerê databasê dikare ji Tupperware re bêje ku 49 ji 50 pêşkêşkeran nûve bike, lê serverek taybetî (X) ji bo naha tenê bihêle. Wekî encamek, heke heyama nûvekirina kernel derbas bibe û databas hîn jî nikaribe kopyaya pirsgirêk vegerîne, Tupperware dê hîn servera X-ê nûve bike.

Tupperware: Kujerê Kubernetes a Facebookê?

Gelek karûbarên dewletî yên di Tupperware de TaskControl ne rasterast, lê bi navgîniya ShardManager, platformek hevpar a afirandina karûbarên dewletparêz li ser Facebook-ê bikar tînin. Bi Tupperware re, pêşdebiran dikarin niyeta xwe diyar bikin ka tam çawa konteynir li navendên daneyê têne belavkirin. Bi ShardManager re, pêşdebiran niyeta xwe diyar dikin ka divê çirûskên daneyê çawa li ser konteyneran werin belavkirin. ShardManager ji danîna daneyan û dubarekirina serîlêdanên xwe haydar e û bi navbeynkariya TaskControl re bi Tupperware re danûstendinê dike da ku karûbarên konteynerê bêyî tevlêbûna rasterast a serîlêdanê destnîşan bike. Ev entegrasyon rêveberiya karûbarên dewletî pir hêsan dike, lê TaskControl jêhatî ye. Mînakî, asta meya webê ya berfireh bê dewlet e û TaskControl bikar tîne da ku bi dînamîk rêjeya nûvekirina konteyneran rast bike. Paştirîn qata tevneyê karibe bi lez û bez danûstendinên pir nermalavê biqedîne her roj bêyî ku hebûna xwe tawîz bide.

Birêvebirina serverên li navendên daneyê

Dema ku Tupperware yekem car di 2011-an de dest pê kir, her komek serverê ji hêla plansaziyek cûda ve hate rêve kirin. Wê gavê, komikek Facebook komek raftên serverê bû ku bi yek guheztina torê ve girêdayî bû, û navenda daneyê gelek koman dihewand. Plansazkar tenê dikaribû serveran di yek komê de bi rê ve bibe, yanî kar nekare li gelek koman belav bibe. Binesaziya me mezin bû, me her ku çû koman nivîsand. Ji ber ku Tupperware nikarîbû kar ji komê veqetandî bê guhertin berbi komên din veguhezîne, di navbera pêşdebirên sepanê û operatorên navenda daneyê de gelek hewildan û hevrêziyek baldar hewce bû. Dema ku server ji ber prosedurên hilweşandinê bi mehan bêkar bûn, ev pêvajo bû sedema windakirina çavkaniyên.

Me brokerek çavkaniyek çêkir da ku pirsgirêka hilweşandina komê çareser bike û celebên din ên peywirên lênihêrînê hevrêz bike. Brokera çavkaniyê hemî agahdariya laşî ya ku bi serverek ve girêdayî ye dişopîne û bi dînamîk biryar dide ka kîjan plansazker her serverê kontrol dike. Girêdana dînamîkî ya pêşkêşkeran bi plansazkeran re dihêle ku plansazker serverên li navendên daneyên cihêreng îdare bike. Ji ber ku karekî Tupperware êdî bi yek komê ve nayê sînorkirin, bikarhênerên Tupperware dikarin diyar bikin ka konteynir divê çawa li ser domên xeletiyê werin belavkirin. Mînakî, pêşdebirek dikare niyeta xwe eşkere bike (bibêje: "karê xwe li ser 2 domên xeletiyê li herêma PRN bimeşîne") bêyî ku deverên hebûna taybetî diyar bike. Tupperware bixwe dê serverên maqûl bibîne da ku vê mebestê bicîh bîne, hetta ku kom an karûbar were rakirin.

Scalable ji bo piştgiriya tevahiya pergala gerdûnî

Ji hêla dîrokî ve, binesaziya me ji bo tîmên kesane li bi sedan hewzên serverê yên diyarkirî hatiye dabeş kirin. Ji ber perçebûn û nebûna standardan, me lêçûnên xebitandinê yên mezin hebûn, û serverên bêkar dîsa karanîna dijwartir bûn. Di konferansa par de Sîstemên @Scale me pêşkêş kir binesaziya wekî karûbar (IaaS), ku divê binesaziya me di nav parkek yek serverek mezin de bike yek. Lê parkek serverek yekane dijwariyên xwe hene. Pêdivî ye ku ew hin şertan bicîh bîne:

  • Scalability. Gava ku me navendên daneyê li her herêmê zêde kir, binesaziya me mezin bû. Server piçûktir û bikêrtir enerjiyê bûne, ji ber vê yekê li her deverê gelek ji wan hene. Wekî encamek, yek plansazkerek her herêmek nikare hejmara konteynerên ku li her deverê li ser bi sed hezaran pêşkêşkeran têne xebitandin hilîne.
  • Ewlehiyê Tewra ku plansazkar ew qas mezin bibe jî, qada mezin a plansazker tê vê wateyê ku xeterek xeletiyek mezintir heye û tevahiya herêmek konteyneran dikare bê rêvebirin bibe.
  • Toleransa xeletiyê. Di bûyera têkçûnek mezin a binesaziyê de (mînakî, serverên ku nexşerê dimeşînin ji ber têkçûna torê an qutbûna elektrîkê têk diçin), encamên neyînî divê tenê bandorê li beşek serverên li herêmê bike.
  • Kêrhatiya karanînê. Dibe ku xuya bibe ku hûn hewce ne ku ji bo yek herêmek çend plansazkerên serbixwe bimeşînin. Lê ji perspektîfek rehetiyê, xalek yek ketina nav hewza hevpar a herêmek birêvebirina kapasîteyê û karan hêsantir dike.

Me plansazker li perçeyan dabeş kir da ku pirsgirêkên domandina hewzek hevpar a mezin çareser bike. Her şaxek plansazker komek karên xwe yên li herêmê bi rê ve dibe, û ev xetera ku bi plansazker ve girêdayî ye kêm dike. Her ku hewza parvekirî mezin dibe, em dikarin şeleyên plansazker zêde bikin. Ji bo bikarhênerên Tupperware, hûrs û proxeyên plansazker wekî panelek kontrolê xuya dikin. Ne hewce ye ku ew bi komek şûşeyên ku karan organîze dikin re bixebitin. Parçeyên Scheduler bi bingehîn ji plansazkerên komê yên ku me berê bikar anîn cûda ne, dema ku panela kontrolê bêyî dabeşkirina statîk hewza hevpar a pêşkêşkeran li gorî topolojiya torê hate dabeş kirin.

Bi Computing Elastic Karbidestiya Bikaranînê baştir bikin

Binesaziya me her ku mezintir be, ew qas girîngtir e ku em serverên xwe bi bandor bikar bînin da ku lêçûnên binesaziyê xweşbîn bikin û barkirinê kêm bikin. Du rê hene ku meriv karbidestiya karanîna serverê zêde bike:

  • Hesabkirina elastîk - di demjimêrên bêdeng de karûbarên serhêl kêm bikin û ji bo karên negirêdayî, wekî fêrbûna makîneyê û karên MapReduce, serverên azadkirî bikar bînin.
  • Zêdebarkirin - Karûbarên serhêl û barkêşên kar ên hevrê li ser heman serveran bi cîh bikin da ku barkêşên karûbar bi pêşanî kêm bimeşin.

Di navendên daneyên me de tengahî ye bikaranîna hêzê. Ji ber vê yekê, em serverên piçûk, enerjî-kêrhatî yên ku bi hev re bêtir hêza pêvajoyê peyda dikin tercîh dikin. Mixabin, li ser serverên piçûk ên bi CPU û bîranîna piçûk, barkirina zêde kêmtir bandorker e. Bê guman, em dikarin çend konteynerên karûbarên piçûk li ser serverek piçûk a enerjiyê bikêr bi cîh bikin ku çavkaniyên pêvajoyê û bîranîna piçûk dixwe, lê karûbarên mezin dê di vê rewşê de xwedan performansa kêm bin. Ji ber vê yekê, em pêşdebirên karûbarên xwe yên mezin şîret dikin ku wan xweşbîn bikin da ku ew hemî serveran bikar bînin.


Di bingeh de, em bi karanîna hesabkirina elastîk re karbidestiya karanîna çêtir dikin. Gelek karûbarên me yên sereke, wekî Xebera Nûçeyan, Taybetmendiya Mesajê, û asta tevna pêşîn, li gorî dema rojê diguhere. Em bi mebest di demjimêrên bêdeng de karûbarên serhêl kêm dikin û serverên azadkirî ji bo bargiraniyên xebata negirêdayî bikar tînin, wek fêrbûna makîneyê û karên MapReduce.

Tupperware: Kujerê Kubernetes a Facebookê?

Em ji ezmûnê dizanin ku çêtirîn e ku meriv serverên tevahî wekî yekîneyên kapasîteya elastîk peyda bike ji ber ku karûbarên mezin hem xêrxwazên sereke ne û hem jî xerîdarên sereke yên kapasîteya elastîk in, û ji bo karanîna hemî serveran xweşbîn in. Dema ku server di demjimêrên bêdeng de ji karûbarê serhêl tê berdan, brokerê çavkaniyê serverê dide plansazker da ku li ser wê barkirinên xebata negirêdayî bimeşîne. Ger karûbarê serhêl bargiraniyek lûtkeyê biceribîne, brokerê çavkaniyê zû servera deynkirî bi bîr tîne û, ligel plansazker, wê vedigerîne karûbarê serhêl.

Ders û planên pêşerojê

Di van 8 salên çûyî de, me Tupperware pêşve xist da ku bi mezinbûna bilez a Facebookê re bimeşe. Em tiştên ku me hîn bûne parve dikin û hêvî dikin ku ew ê ji yên din re bibe alîkar ku binesaziyên ku zû mezin dibin birêve bibin:

  • Di navbera panela kontrolê û pêşkêşkerên ku ew îdare dike de têkiliyek maqûl saz bikin. Ev nermbûn dihêle ku panela kontrolê serverên li navendên daneya cihêreng bi rê ve bibe, ji bo otomatîzekirin û domandina koman dibe alîkar, û veqetandina kapasîteya dînamîkî bi karanîna hesabkirina elastîk pêk tîne.
  • Li gel panelek kontrolê ya yekane li herêmê, karkirina bi peywiran re hêsantir dibe û birêvebirina fîloya serverek hevpar a mezin hêsantir dibe. Bala xwe bidinê ku panela kontrolê yek xalek têketinê diparêze, hetta ku avahiya hundurê wê ji ber sedemên pîvanê an tolerasyona xeletiyê veqetandî ye.
  • Bi karanîna modelek pêvekê, panela kontrolê dikare sepanên derveyî yên operasyonên konteynerê yên pêşerojê agahdar bike. Wekî din, karûbarên dewletparêz dikarin pêveka pêvekê bikar bînin da ku rêveberiya konteynerê xweş bikin. Bi vê modela pêvekê re, panela kontrolê hêsan peyda dike dema ku bi karîgerî gelek karûbarên cûda yên dewletî re xizmet dike.
  • Em bawer dikin ku hesabkirina elastîk, ku em ji bo karên hevîrê, fêrbûna makîneyê, û karûbarên din ên ne-lezgîn, hemî serveran ji karûbarên xêrxwazan digirin, awayê çêtirîn e ku meriv kargêriya serverên piçûk, bi enerjî-kêrhatî baştir bike.

Em nû dest bi pêkanînê dikin fîloya servera hevpar a gerdûnî ya yekane. Niha ji sedî 20% serverên me di hewzek hevpar de ne. Ji bo bidestxistina% 100, pêdivî ye ku gelek pirsgirêk bêne çareser kirin, di nav de parastina hewzek hilanînê ya hevbeş, lênihêrîna otomatîkî, birêvebirina hewcedariyên xaç-kirêdar, baştirkirina karanîna serverê, û başkirina piştgirî ji bo barkêşên fêrbûna makîneyê. Em nikarin li bendê bin ku van dijwariyan hilgirin û serkeftinên xwe parve bikin.

Source: www.habr.com

Add a comment