Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane

Not. werger.: Tevra karûbar fenomenek e ku hîna wergerek bi îstîqrar a rûsî tune ye (zêdetirî 2 sal berê me vebijarka "mesh ji bo karûbaran" pêşkêşî kir, û piçek şûnda, hin hevkaran dest bi aktîv danasîna kombînasyona "sîreya karûbarê" kirin) . Axaftina domdar li ser vê teknolojiyê rê li ber rewşek vekiriye ku tê de beşên kirrûbirra û teknîkî pir ji nêz ve bi hev ve girêdayî ne. Ev materyalê ecêb ji yek ji nivîskarên peyva orjînal tê armanc kirin ku ji endezyaran re û ne tenê zelaliyê bîne.

Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane
Comic ji Sebastian Caceres

Pîrozbahiyê

Ger hûn endezyarek nermalavê ne ku li cîhek di warê pergalên paşerojê de dixebitin, têgîna "mesh karûbarê" belkî di van çend salên borî de di hişê we de zexm bûye. Bi xêrhatinek ecêb, ev hevok her ku diçe bêtir li ser pîşesaziyê digire, û gemar û pêşniyarên danasînê yên têkildar mîna topek berfê mezin dibin, li çiyê difirin û ti nîşanên hêdîbûnê nîşan nadin.

Tevra karûbarê di avên gemar û meyldar ên ekosîstema xwecî ya ewrê de çêbû. Mixabin, ev tê vê wateyê ku piraniya gengeşiyên li dora wê ji "gotûbêja kêm-kalorî" heya -bi karanîna têgîna teknîkî-xemgîniyek eşkere diguhere. Lê heke hûn hemî dengan fîlter bikin, hûn dikarin bibînin ku tevna karûbarê fonksiyonek pir rast, diyar û girîng heye.

Di vê postê de, ez ê hewl bidim ku tenê wiya bikim: ji bo tevna karûbarê rêberek rast, kûr, endezyar-rêber peyda bikim. Ez ê ji pirsê zêdetir bersiv bidim: "Ew çi ye?", - lê her weha "Çima?"û herweha "Çima niha?". Di dawiyê de, ez ê hewl bidim ku rave bikim ka çima (bi dîtina min) vê teknolojiyê ya taybetî bûye sedema xezebek wusa dîn, ku bi serê xwe çîrokek balkêş e.

Ma ez kî me

Silav hemû! Navê min William Morgan. Ez yek ji afirîner im Linkerd - yekem projeya tevna karûbarê û projeya ku ji xuyabûna termê sûcdar e tevna xizmetê bi vî rengî (biborin hevalno!). (Têbînî werger.: Bi awayê, di destpêka derketina vê termê de, zêdetirî 2,5 sal berê, me berê materyalên destpêkê yên heman nivîskarî bi navê "Meshek karûbarê çi ye û çima ez jê re hewce dikim [ji bo serîlêdana ewr bi mîkroxizmetan]?".) Ez jî rêberiyê dikim buoyant destpêkek e ku tiştên tevna karûbarê xweş ên mîna Linkerd û ava dike Navdeçûn.

Hûn dikarin texmîn bikin ku di vê mijarê de nêrînek min a pir alîgir û subjektîf heye. Lêbelê, ez ê hewl bidim ku alîgiriyê herî kêm bihêlim (ji bilî yek beşê: "Çima ew qas li ser tevna xizmetê tê axaftin?", - ku tê de ez ê dîsa jî ramanên xwe yên pêşwext parve bikim). Ez ê her weha her tiştê ku ji destê min tê bikim ku ev rêber bi qasî ku gengaz be objektîf bikim. Di mînakên taybetî de, ez ê bi giranî xwe bispêrim serpêhatiya Linkerd, dema ku balê bikişînim ser cûdahiyên (heke hebe) ku ez pê dizanim di pêkanîna celebên din ên tevna karûbarê de.

Baş e, dem hatiye ku em biçin ser dermanan.

Mesh xizmetê çi ye?

Digel hemî hûrguliyan, tevna karûbarê ji hêla strukturî ve pir hêsan e. Ew tenê komek proxeyên cîhê bikarhêneran e ku li ser karûbarên "li kêleka" cih digirin (em ê paşê hinekî li ser "nêzîkî" biaxivin), plus komek pêvajoyên kontrolê. Proxy bi hev re têne gotin balafira daneyan, û pêvajoyên kontrolê têne gotin balafira kontrolê. Balafira daneyê bangên di navbera karûbaran de digire û bi wan re "tiştek cûda" dike; balafira kontrolê, bi rêzê ve, tevgera proxy hevrêz dike û ji we re gihîştina peyda dike, ango. operator, ji API-ê re, dihêle ku torê bi tevahî were manîpulekirin û pîvandin.

Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane

Ev proxy çi ye? Ev proxy TCP ya kategoriya "Layer 7-aware" ye (ango "hesibandin" qata 7-emîn a modela OSI) mîna HAProxy û NGINX. Hûn dikarin li gorî dilê xwe proxyek hilbijêrin; Linkerd proxy Rust bikar tîne, ku navê wî ne tevlihev e linkerd-proxy. Me ew bi taybetî ji bo tevna karûbarê berhev kiriye. Meşên din proxeyên din tercîh dikin (Envoy bijarek hevpar e). Lêbelê, hilbijartina proxy tenê meseleyek pêkanînê ye.

Van serverên proxy çi dikin? Eşkere ye, ew bangên proxy ji karûbar û ji karûbaran re dikin (bi hişkî, ew wekî proxy tevdigerin û proxy berevajî dikin, hem bangên hatin û hem jî yên derketinê digirin). Û ew komek taybetmendiyek ku balê dikişîne ser bangan bicîh dikin di navbera xizmetên. Ev balkişandina li ser seyrûsefera di navbera karûbaran de ew e ku proxyek tevna karûbarê ji, bêje, dergehên API an proxeyên hundurîniyê cuda dike (ya paşîn balê dikişîne ser bangên ku ji cîhana derve têne nav komê). (Not. werger.: Ji bo danberheva kontrolkerên Kubernetes Ingress-ê yên heyî, ku gelek ji wan nûnerê berê hatî destnîşan kirin bikar tînin, binêre. vê gotara.)

Ji ber vê yekê, me balafira daneyê fêhm kir. Balafira kontrolê sadetir e: ew komek pêkhatan e ku hemî mekanîka ku balafira daneyê hewce dike ku bi rengek hevrêz bixebite peyda dike, di nav de vedîtina karûbarê, derxistina sertîfîkaya TLS, berhevkirina metrîkan, hwd. Balafira daneyê balafira kontrolê li ser agahdar dike. tevgera wê; di encamê de, balafira kontrolê API-yek peyda dike ku destûrê dide te ku hûn tevgera balafira daneyê bi tevahî biguhezînin û bişopînin.

Li jêr diagramek balafira kontrolê û balafira daneyê li Linkerd heye. Wekî ku hûn dibînin, balafira kontrolê çend hêmanên cihêreng vedihewîne, di nav de mînakek Prometheus ku metrîkan ji pêşkêşkerên proxy berhev dike, û her weha hêmanên din ên wekî destination (vedîtina karûbarê), identity (desthilata sertîfîkayê, CA) û public-api (ji bo tevn û CLI xalên dawî). Berevajî vê, balafira daneyê li kêleka mînaka serîlêdanê girêdanek-navdêrek hêsan e. Ev tenê diyagramek mantiqî ye; di cîhanek rastîn de, dibe ku hûn sê kopiyên her pêkhateya balafira kontrolê û bi sedan an bi hezaran proxy di balafira daneyê de hebin.

(Di vê diagramê de qutiyên şîn sînorên podên Kubernetes temsîl dikin. Hûn dikarin bibînin ku konteynerên bi linkerd-proxy di heman podê de ne û konteynerên serîlêdanê ne. Ev nexşe wekî tê zanîn. konteynir sidecar.)

Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane

Mîmariya tevna karûbarê çend bandorên girîng hene. Pêşîn, ji ber ku karê proxy ew e ku bangên di navbera karûbaran de bişopîne, tevnek karûbarê tenê maqûl e heke serîlêdana we ji bo komek karûbar hatî çêkirin. mesh dikare bi monolîtan re bikar bînin, lê ev eşkere ji bo xatirê yek proxy zêde zêde ye, û ne gengaz e ku fonksiyona wê di daxwaziyê de be.

Encamek din a girîng ev e ku tevna karûbarê hewce dike pirr hejmara proxies. Bi rastî, Linkerd bi her mînakek ji her karûbarekê re zencîrek-proxy-ê zencîre dike (pêkanînanên din li her nod/hoste/VM proxy zêde dikin. Her wusa, ew pir e). Bikaranîna bi vî rengî ya çalak a proxy bi serê xwe gelek tevliheviyên din vedigire:

  1. Proxies di plana daneyê de divê bibin , ji ber ku ji bo her bangekê çend bangên proxy hene: yek li milê xerîdar, yek li milê serverê.
  2. Di heman demê de, divê proxy jî hebin biçûk и sivik. Her yek dê çavkaniyên bîranîn û CPU-ê bixwin, û ev serfkirin dê bi serîlêdanê re bi rêzê mezin bibe.
  3. Hûn ê hewceyê mekanîzmayek bikin ku hûn hejmareke mezin ji proxiyan bicîh bikin û nûve bikin. Bi destan kirina wê ne vebijarkek e.

Bi gelemperî, tevna karûbarê bi vî rengî xuya dike (kêm nebe ji çavê çûk): hûn komek proxeyên cîhê bikarhêner ku bi seyrûsefera hundurîn, nav-karûbar re "tiştekî dikin" bicîh dikin, û balafira kontrolê bikar tînin da ku çavdêrî û birêvebirina wan bikin.

Dem dema pirsa "Çima?"

Mesh xizmetê ji bo çi ye?

Ji bo yên ku yekem car bi ramana tevnek karûbarê re rû bi rû mane, efûkirin e ku meriv hinekî bi heybet be. Sêwirana tevna karûbarê tê vê wateyê ku ne tenê ew ê derengiya serîlêdanê zêde bike, lê ew ê jî vexwarin çavkaniyên û dê zêde bike di binesaziyê de komek mekanîzmayên nû. Pêşî hûn tevnek karûbarê saz dikin, û dûv re hûn ji nişkê ve hewce dikin ku hûn bi sedan (heke ne bi hezaran) ji proxiyan re xizmetê bikin. Pirs ev e, kî dê bi dilxwazî ​​ji bo vê?

Bersiva vê pirsê du beş e. Pêşîn, lêçûnên danûstendinê yên ku bi belavkirina van proxyan re têkildar in ji ber hin guhertinên ku di ekosîstemê de çêdibin bi girîngî kêm dibe (li ser vê paşê bêtir).

Ya duyemîn, amûrek wusa bi rastî rêyek girîng e ku meriv mantiqê zêde bixe nav pergalê. Û ne tenê ji ber ku gelek taybetmendiyên nû dikarin bi karanîna tevna karûbarê werin zêdekirin, lê di heman demê de ji ber ku ew dikare bêyî mudaxelekirina ekosîstemayê were kirin. Di rastiyê de, tevahiya modela tevna karûbarê li ser vê postulatê ye: di pergalek pirkarûbar de, çi dibe bila bibe bikin xizmetên şexsî, trafîkê di navbera wan de xala îdeal e ku fonksiyonê zêde bike.

Mînakî, di Linkerd de (wekî di pir meshan de) fonksiyonê bi taybetî li ser bangên HTTP-ê, di nav de HTTP/2 û gRPC * disekine. Fonksiyonê pir dewlemend e - ew dikare li sê çînan were dabeş kirin:

  1. Taybetmendiyên têkildar pêbawerî. Daxwazên ji nû ve biceribîne, dem derbasbûn, nêzîkatiya canary (perçebûna trafîkê / beralîkirin), hwd.
  2. Taybetmendiyên têkildar çavdêrîkirina. Kombûna rêjeyên serkeftinê, dereng û cildên daxwazê ​​ji bo her karûbar an cîhên kesane; çêkirina nexşeyên topolojîk ên karûbaran, hwd.
  3. Taybetmendiyên têkildar ewlekarî. TLS hevbeş, kontrola gihîştinê, hwd.

* Ji nihêrîna Linkerd, gRPC bi pratîkî ji HTTP/2 cudatir nîne: ew tenê di barkêşanê de protobuf bikar tîne. Ji nêrîna pêşdebiran, ev her du tişt, bê guman, cûda ne.

Gelek ji van mekanîzmayan di asta daxwaznameyê de dixebitin (ji ber vê yekê "L7 proxy"). Mînakî, heke karûbarê Foo bangek HTTP-ê ji karûbarê Bar re bike, lînkerd-proxy-ya li kêleka Foo dikare bi aqilane bar bike-balansek û bangên ji Foo berbi Bar-ê li ser bingeha derengiya çavdêrîkirî rêve bike; ger hewce bike dikare daxwazê ​​dubare bike (û heke bêhêz be); ew dikare koda bersivê û dema derbasbûnê tomar bike, û hwd. Bi heman awayî, linkerd-proxy li milê Bar dikare daxwazek red bike ger destûr neyê dayîn an ger sînorê daxwazê ​​derbas bibe; dikare derengiyê ji aliyê xwe ve rast bike, hwd.

Proxies dikarin di asta girêdanê de jî "tiştek bikin". Mînakî, linkerd-proxy li alîyê Foo dikare pêwendiyek TLS bide destpêkirin, û linkerd-proxy li milê Bar dikare wê biqedîne, û her du alî dikarin sertîfîkayên TLS yên hevûdu verast bikin*. Ev ne tenê şîfrekirinê di navbera karûbaran de peyda dike, lê di heman demê de rêgezek ewledar a krîptografî jî peyda dike ku karûbaran nas bike: Foo û Bar dikarin "îsbat bikin" ku ew ew in ku ew dibêjin ew in.

* "Hevalê hevalê" tê vê wateyê ku sertîfîkaya xerîdar jî tê verast kirin (TLS hevbeş). Mînakî, di TLS "klasîk" de, di navbera gerokek û serverek de, bi gelemperî sertîfîkaya yek alî (pêşkêşker) tê verast kirin.

Ma ew li ser daxwazê ​​an asta girêdanê tevdigerin, girîng e ku em tekez bikin ku hemî taybetmendiyên tevna karûbarê ne operasyonel şexsîyet. Linkerd nekare semantîka bargiraniyê biguhezîne, wekî zevîyan li perçeyek JSON zêde bike an jî di protobufekê de guhertinan bike. Em ê paşê li ser vê taybetmendiya girîng biaxivin dema ku em li ser ESB û navgîniyê biaxivin.

Ev komek taybetmendiyên ku tevna karûbarê pêşkêşî dike ye. Pirs derdikeve holê: çima wan rasterast di serîlêdanê de bicîh nakin? Û çima qet bi proxy re tevlihev dibe?

Çima tevnek xizmetê ramanek baş e

Dema ku kapasîteyên tevna karûbarê dîlgirtî ne, nirxa wê ya sereke bi rastî di taybetmendiyan de nabe. Di dawiyê de em Qûtîk wan rasterast di serîlêdanê de bicîh bikin (paşê em ê bibînin ku ev eslê tevna karûbarê bû). Ji bo ku wê di yek hevokê de kurt bike, nirxa tevna karûbarê ev e: ew fonksiyonek krîtîk peyda dike ku nermalava serverê ya nûjen bi rengek domdar, berbelav, serîlêdan-kod-agnostîk bimeşîne..

Ka em vê pêşniyarê analîz bikin.

«Fonksiyonên ji bo xebitandina Nermalava Pêşkêşkara Nûjen Krîtîk in". Ger hûn serîlêdanek servera danûstendinê ya ku bi înterneta giştî ve girêdayî ye ava dikin ku daxwazên ji cîhana derve qebûl dike û di demek kurt de bersivê dide wan - mînakî, serîlêdanek webê, serverek API, û pirraniya mezin a serîlêdanên nûjen ên din - û heke hûn wê wekî komek karûbaran bicîh bikin ku bi hevûdu re hevdemî tevdigerin, û heke hûn bi berdewamî vê nermalavê nûve dikin, taybetmendiyên nû lê zêde dikin, û heke hûn neçar in ku di pêvajoya guheztinê de vê pergalê di rewşa xebatê de bihêlin - di vê rewşê de, pîroz dikim, hûn nermalava servera nûjen diafirînin. Û hemî wan taybetmendiyên mezin ên ku li jor hatine destnîşan kirin bi rastî ji we re krîtîk derdikevin. Pêdivî ye ku serîlêdan pêbawer, ewledar be, û divê hûn karibin bibînin ka ew çi dike. Van pirsan e ku tevna karûbarê ji bo çareserkirina wan dibe alîkar.

(Baş e, baweriya min ku ev nêzîkatî awayê nûjen e ji bo avakirina nermalava serverê ye, ketiye paragrafa berê. Yên din tercîh dikin ku monolîtan, "mikroxizmetên reaktîf" û tiştên din ên ku di bin pênaseya ku li jor hatî dayîn de ne pêşve bibin. ramana ku ji ya min cuda ye, û di encamê de, ez bawer dikim ku ew "şaş" in - her çend di her rewşê de, tevna karûbarê ji bo wan ne pir bikêr e).

«Ji bo tevahiya stackê yekgirtî". Taybetmendiyên ku ji hêla tevna karûbarê ve têne peyda kirin ne tenê krîtîk in. Ew li ser hemî karûbarên di serîlêdanê de bicîh dikin, bêyî ku ew bi kîjan zimanî têne nivîsandin, ew bi kîjan çarçoveyê bikar tînin, kê ew nivîsandiye, ew çawa hatine bicîh kirin, û hemî hûrgelên din ên pêşveçûn û karanîna wan.

«Koda serîlêdanê serbixwe". Di dawiyê de, tevna karûbarê ne tenê fonksiyonek domdar li seranserê stakê peyda dike, ew bi rengek ku hewcedariya guherandina serîlêdanê nake jî dike. Bingeha bingehîn a fonksiyona tevnek karûbarê, tevî peywirên mîhengkirin, nûvekirin, xebitandin, parastin, hwd., bi tenê di asta platformê de ye û ji serîlêdanê serbixwe ye. Serlêdan dikare bêyî bandorkirina tevna karûbarê biguhezîne. Di encamê de, tevna karûbarê dikare bêyî destwerdana serîlêdanê biguhezîne.

Bi kurtasî, tevna karûbarê ne tenê fonksiyonek girîng peyda dike, lê ew bi rengek gerdûnî, yekgirtî û serbixwe-serîlêdanê dike. Ji ber vê yekê, dema ku fonksiyona tevnek karûbar dikare di koda karûbarek de were bicîh kirin (mînakî, wekî pirtûkxaneyek ku bi her karûbarek re tê de heye), ev nêzîkatî dê yekrêzî û serxwebûna ku di rewşek karûbarek de ew qas hêja peyda bike peyda neke. tevna xizmetê.

Û ya ku hûn hewce ne bikin ev e ku komek proxies zêde bikin! Ez soz didim, di demek nêzîk de em ê li lêçûnên xebitandinê yên ku bi zêdekirina van proxiyan ve girêdayî ne binêrin. Lê pêşî, em rawestin û li vê ramana serxwebûnê ji perspektîfa cûrbecûr binihêrin gel.

Mesh xizmetê ji kê re dibe alîkar?

Her çendî nerehet be jî, ji bo ku teknolojiyek bibe parçeyek girîng a ekosîstemê, divê ji hêla mirovan ve were pejirandin. Ji ber vê yekê kî bi tevna karûbarê re eleqedar e? Kî ji karanîna wê sûd werdigire?

Ger hûn nermalava serverê ya nûjen pêşve bixin, hûn dikarin bi qasî tîmê xwe wekî komek xeyal bikin xwediyên xizmetêyên ku bi hev re mantiqa karsaziyê pêş dixin û bicîh dikin, û xwediyên platformêbeşdarî pêşkeftina platforma navxweyî ya ku van karûbaran li ser dimeşîne. Di rêxistinên piçûk de, ev dikarin heman kes bin, lê her ku pargîdanî mezin dibe, ev rol meyldar dibin ku bêtir diyar bibin û tewra di bin-rolan de jî têne dabeş kirin ... (Li vir gelek tişt hene ku di derbarê xwezaya guheztina devops de bêne gotin, bandora rêxistinî ya mîkroxizmetan, hwd.) n. Lê ji bo niha, em van ravekirinan ji xwe re bigirin).

Ji vî alî ve, sûdmendên zelal ên tevna karûbarê xwediyê platformê ne. Beriya her tiştî, armanca dawîn a tîmê platformê ew e ku platformek hundurîn biafirîne ku li ser wê xwedan karûbar dikarin mantiqa karsaziyê bicîh bînin û wiya bi rengek ku ji wan re serxwebûna herî zêde ji hûrguliyên xirab ên xebata wê garantî dike, bikin. Mesh karûbarê ne tenê kapasîteyên ku ji bo gihîştina vê armancê krîtîk pêşkêşî dike, ew bi rengekî ku, di encamê de, ti girêdanê li ser xwediyên karûbarê ferz nake.

Xwediyên karûbaran jî sûd werdigirin, her çend bi awayek nerasterasttir be. Armanca xwediyê karûbar ew e ku di pêkanîna mantiqa pêvajoya karsaziyê de bi qasî ku gengaz be hilberdar be, û her ku ew ji mijarên xebitandinê kêmtir xemgîn bibe, ew çêtir e. Li şûna bicîhkirina, bêje, polîtîkayên an TLS-ê ji nû ve biceribîne, ew dikarin bi tenê li ser karsaziyê bisekinin û hêvî dikin ku platform li yên mayî xwedî derkeve. Ji bo wan ev avantajeke mezin e.

Nirxa rêxistinî ya dabeşkirinek wusa di navbera xwediyên platform û karûbaran de nayê zêdekirin. Ez difikirim ku ew beşdar dibe ser tevkariya nirxa tevna xizmetê.

Em fêrî vê dersê bûn dema ku temaşekerek zû Linkerd ji me re got ku çima wan tevna karûbarê hilbijart: ji ber ku ew hişt ku "bi hindiktirîn biaxivin." Li vir hin hûrgulî hene: xortên ji pargîdaniyek mezin platforma xwe koçî Kubernetes kirin. Ji ber ku serîlêdan bi agahdariya hesas re xebitî, wan dixwest ku hemî danûstandinên di koman de şîfre bikin. Lêbelê, rewş ji ber hebûna bi sedan karûbar û bi sedan tîmên pêşkeftinê tevlihev bû. Hêviya ku bi her kesî re têkilî daynin û wan qanih bikin ku piştgirîya ji bo TLS-ê di planên xwe de cîh bikin, qet kêfa wan nehat. Bi sazkirina Linkerd, ew koç kirin berpirsiyariyek ji pêşdebiran (ji nêrîna ku ew tengahiyek nepêwist bû) bigire heya platformeran, ji bo wan ev pêşanîyek asta jorîn bû. Bi gotineke din, Linkerd ji bo wan ne ew qas pirsgirêkek teknîkî, lê pirsgirêkek rêxistinî çareser dikir.

Bi kurtasî, tevna karûbarê, ne çareseriyek teknîkî ye, lê sosyo-teknîkî Problems. (Sipas ji were Cindy Sridharan ji bo danasîna vê termê.

Dê tevna karûbarê hemî pirsgirêkên min çareser bike?

Erê. Yanî na!

Li sê çînên taybetmendiyên ku li jor hatine destnîşan kirin - nihêrîn - pêbawerî, ewlehî, û çavdêrî - diyar dibe ku tevna karûbarê ji yek ji van pirsgirêkan re ne çareseriyek bêkêmasî ye. Her çend Linkerd dikare daxwazên dubare bişîne (heke ew dizane ku ew bêhêz in), ew ne di rewşekê de ye ku biryarê bide ka dê çi vegere bikarhêner heke karûbar di dawiyê de têk çûye - divê biryarên weha ji hêla serîlêdanê ve bêne girtin. Linkerd dikare li ser daxwazên serketî statîstîkan bigire, lê ew nekare li karûbarê binêre û pîvanên xwe yên hundurîn peyda bike - serîlêdanek pêdivî ye ku amûrek wusa hebe. Û dema ku Linkerd karibe mTLS mêvandar bike, çareseriyên ewlehiyê yên bêkêmasî pir zêde hewce dike.

Beşek ji taybetmendiyên li van deveran ku ji hêla tevna karûbarê ve têne pêşkêş kirin ve girêdayî ne taybetmendiyên platformê. Bi vê yekê ez fonksiyonên ku:

  1. Ji mantiqa karsaziyê serbixwe. Awayê ku histogramên bangê di navbera Foo û Bar de têne çêkirin bi tevahî ji gelo serbixwe ye çima Foo gazî Bar dike.
  2. Zehmet e ku meriv rast bicîh bîne. Di Linkerd de, dubarekirin bi her cûre tiştên xweşik ên mîna butçeyên ji nû ve ceribandinê ve têne parametre kirin. (butçeyên ji nû ve biceribîne), ji ber ku nêzîkatiyek sade ya ji bo pêkanîna van tiştan bê guman dê bibe sedema peydabûna bi navê "berfek daxwazan" (ji nû ve bahoz biceribîne) û pirsgirêkên din ên taybetî yên pergalên belavkirî.
  3. Dema ku bi domdarî were sepandin herî bi bandor. Mekanîzmaya TLS tenê heke li her deverê were sepandin watedar e.

Ji ber ku ev taybetmendî li qata proxy (û ne li qata serîlêdanê) têne bicîh kirin, tevna karûbarê wan li qata proxy eşkere dike. rawesta axaftevan, ne serîlêdan. Ji ber vê yekê, ne girîng e ku servîs bi kîjan zimanî têne nivîsandin, di çi çarçoveyê de bikar tînin, kê ew nivîsandiye û çima. Proxies ji van hemî hûrguliyan wêdetir dixebitin, û bingeha bingehîn a vê fonksiyonê, tevî peywirên mîhengkirin, nûvekirin, xebitandin, parastin, hwd., tenê di asta platformê de ye.

Nimûneyên kapasîteyên tevna karûbarê

Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane

Bi kurtahî, tevnek karûbarê ji bo pêbawerî, çavdêrîkirin, an ewlehiyê ne çareseriyek bêkêmasî ye. Di çarçoveya van deveran de beşdarbûna mecbûrî ya xwedan karûbar, tîmên Ops / SRE û beşdarên din ên pargîdanî vedihewîne. Mesh karûbarê tenê ji bo her yek ji van deveran di asta platformê de "perçek" peyda dike.

Çima tevna karûbarê niha populer bûye?

Hûn belkî niha dipirsin: Baş e, heke tevna karûbarê ew qas baş e, çima me deh sal berê dest bi belavkirina bi mîlyonan proxy li ser stackê nekir?

Ji vê pirsê re bersivek banal heye: deh sal berê her kesî monolîtan çêkir, û kes hewcedarê tevnek karûbarê nebû. Ev rast e, lê bi dîtina min, ev bersiv ji xalê dûr dikeve. Tewra deh sal berê, têgeha mîkroxizmetan wekî rêyek sozdar a afirandina pergalên mezin bi berfirehî di pargîdaniyên wekî Twitter, Facebook, Google û Netflix de hate nîqaş kirin û sepandin. Têgihîştina gelemperî - bi kêmanî di beşên pîşesaziyê de ku ez pê re têkilî danîbûm - ev bû ku mîkroxizmet "rêya rast" e ji bo avakirina pergalên mezin, her çend ew pir dijwar be.

Bê guman, her çend deh sal berê pargîdaniyên ku mîkroxizmetan îstismar dikirin jî hebûn, wan li her deverê ku dikaribû proxy negirtin da ku tevnek karûbarê ava bikin. Lêbelê, heke hûn ji nêz ve lê mêze bikin, wan tiştek wusa kir: gelek ji van pargîdaniyan karanîna pirtûkxaneyek navxweyî ya taybetî ji bo torê ferz kirin (carinan jê re pirtûkxaneya xerîdar a qelew tê gotin, pirtûkxaneya muwekîlê qelew).

Netflix xwediyê Hysterix bû, Google xwediyê Stubby bû, Twitter xwediyê pirtûkxaneya Finagle bû. Mînakî, Finagle ji bo her karûbarek nû ya li ser Twitter-ê mecbûrî ye. Ew hem ji hêla xerîdar û hem jî serverê ve girêdayî ye, destûr da daxwazên dubare, rêvekirina daxwazê ​​piştgirî, hevsengkirina barkirinê, û pîvandinê. Ew qatek pêbawer û çavdêriyê ya domdar li seranserê stacka Twitter-ê peyda kir, bêyî ku karûbar çi dikir. Bê guman, ew tenê ji bo zimanên JVM dixebitî û li ser modelek bernamekirinê ya ku diviyabû ji bo tevaya serîlêdanê were bikar anîn, bû. Lêbelê, fonksiyona wê hema hema wekî ya tevna karûbarê yek bû. (Bi rastî, guhertoya yekem a Linkerd tenê Finagle di forma proxy de pêça bû.)

Bi vî rengî, deh sal berê ne tenê mîkroxizmet, lê di heman demê de pirtûkxaneyên taybetî yên proto-xizmet-mesh jî hebûn ku heman pirsgirêkên ku îro mesh karûbarê çareser dike çareser kirin. Lêbelê, tevna karûbarê bi xwe wê demê tune bû. Berî ku ew xuya bibe, pêdivî bû ku veguherînek din hebe.

Û ev e cihê ku bersiva kûr veşêre, di guhertineke din a ku di van 10 salên borî de pêk hatiye de veşartî ye: di lêçûna belavkirina mîkroxizmetan de kêmbûnek tund heye. Pargîdaniyên ku li jor hatine behs kirin ku deh sal berê mîkroxizmet bikar anîn -Twitter, Netflix, Facebook, Google- pargîdaniyên mezin û çavkaniyên mezin bûn. Wan ne tenê hewcedarî, lê di heman demê de şiyana avakirina, bicihkirin û xebitandina serîlêdanên mezin li ser bingeha mîkroservisan jî hebû. Enerjî û hewildana ku endezyarên Twitter-ê kirine ku ji nêzîkatiyek yekparêz berbi nêzîkatiya mîkroservisê ve biçin ecêb e. (Bi rûmet, wekî ku rastiya ku ew xebitî bû.) Wê demê ev celeb manevrakirina binesaziyê ji bo pargîdaniyên piçûktir ne gengaz bû.

Werin em herin heya niha. Îro destpêk hene ku rêjeya mîkroxizmetan bi pêşdebiran re 5:1 e (an jî heta 10:1), û ji bilî vê, ew bi serfirazî bi wan re mijûl dibin! Ger destpêkek ji 5 kesan pêk tê bikaribe 50 mîkroxizmetan bêyî tengahiyê bixebite, wê hingê tiştek eşkere lêçûna pêkanîna wan kêm kir.

Xizmeta Mesh: Tiştê ku Her Endezyarê Nermalavê Pêdivî ye ku Derbarê Teknolojiya Herî Herî Bizane
1500 mîkroxizmetên li Monzo; her xet qaîdeyek torê ya diyarkirî ye ku destûrê dide trafîkê

Kêmkirina dramatîk di lêçûna mîkroxizmetên xebitandinê de encama pêvajoyek yekane ye: mezinbûna populerbûna konteyneran и orkestrator. Ev bi rastî bersiva kûr a pirsê ye ku çi bûye sedema derketina tevna karûbarê. Heman teknolojî hem tevna karûbarê hem jî mîkroxizmet balkêş kir: Kubernetes û Docker.

Çima? Welê, Docker pirsgirêkek mezin çareser dike - pirsgirêka pakkirinê. Bi pakkirina serîlêdanek û girêdanên wê yên dema xebitandinê (ne-torê) di konteynerek de, Docker serîlêdanê vediguherîne yekînek guhezbar ku dikare li her deverê were mêvandar kirin û bimeşîne. Di heman demê de, ew operasyonê pir hêsan dike. pirzimanî stack: Ji ber ku konteynir yekîneyek atomî ya darvekirinê ye, ne girîng e ka çi di hundurê de ye, gelo ew serîlêdana JVM, Node, Go, Python, an Ruby be, ji bo bicîhkirin û mebestên xebitandinê. Hûn tenê wê dimeşînin û ew e.

Kubernetes her tiştî digihîne asta din. Naha ku komek "tiştên îcrakar" û gelek makîneyên ku wan li ser bixebitin hene, hewcedarî bi amûrek heye ku bikaribe wan li hember hev bide hev. Di wateyek fireh de, hûn gelek konteynir û gelek makîneyan didin Kubernetes, û ew wan bi hevûdu re li hev dike (bê guman, ev pêvajoyek dînamîk û domdar diguhezîne: konteynerên nû li dora pergalê digerin, makîneyên dest pê dikin û disekinin, hwd. Lêbelê, Kubernetes van hemî hesab dike).

Dema ku Kubernetes hate saz kirin, wextê ku ji bo danîn û xebitandina yek karûbarê pêdivî ye ji lêçûna danîn û xebitandina deh karûbaran ne pir cûda ye (bi rastî, ew ji bo 100 karûbar hema hema heman e). Wekî mekanîzmayek pakkirinê ya ku pêkanîna pirzimanî teşwîq dike, li van konteyneran zêde bikin, û we tonek serîlêdanên nû hene ku wekî mîkroxizmetên ku bi gelek zimanan hatine nivîsandin hatine bicîh kirin, tenê celebek hawîrdora ku tevna karûbarê ew qas xweş tê de ye.

Ji ber vê yekê, em werin bersiva pirsa çima ramana tevnek karûbarê nuha populer bûye: yekrengiya ku Kubernetes ji bo karûbaran peyda dike rasterast ji bo karên xebitandinê yên ku bi tevna karûbarê re rû bi rû ne tê sepandin. Hûn proxiyan di konteyneran de pak dikin, erkê didin Kubernetes ku wan li ku derê gengaz bihêle, û voila! Wekî encamek, hûn tevnek karûbarê digirin, dema ku Kubernetes hemî mekanîzmayên bicîhkirina wê kontrol dike. (Qet nebe ji çavê çûkan. Helbet gelek nuansên vê pêvajoyê hene.)

Bi kurtasî: sedema ku tevna karûbarê nuha û ne deh sal berê populer bûye ev e ku Kubernetes û Docker ne tenê bi girîngî zêde bûne lazimî di wê de, pêkanîna sepanan wekî komên mîkroxizmetên pirzimanî hêsan dike, lê di heman demê de bi girîngî kêm dibe mesrefên ji bo xebata wê bi peydakirina mekanîzmayên ji bo bicihkirin û domandina parkên proxy yên kêlekê.

Çima ew qas li ser tevna xizmetê tê axaftin?

Parastina: Di vê beşê de, ez serî li her cûre texmîn, tehsîl, çêkirin û agahdariya hundurîn dikim.

Lêgerîna li "tevra karûbarê" dê komek naveroka vezîvirandin, kêm-kalorî, projeyên xerîb, û kaleidoskopek guheztinê ya ku hêjayî jûreyek echo ye derxe holê. Her teknolojiyek nû ya trendî vê yekê heye, lê di mijara tevna karûbarê de, pirsgirêk bi taybetî tûj e. Çima?

Belê, qismî sûcê min e. Min di her fersendê de, bi navgîniya bêhejmar postên blogê û gotarên mîna vê yekê, çêtirîn kir ku ez Linkerd û tevna karûbarê pêşve bixim. Lê ez ne ew qas hêzdar im. Ji bo ku em bi rastî bersiva vê pirsê bidin, divê em hinekî li ser rewşa giştî biaxivin. Û ne mimkûn e ku meriv li ser wê biaxive bêyî ku yek projeyek behs bike: Istio tevnek karûbarê çavkaniyek vekirî ye ku bi hev re ji hêla Google, IBM û Lyft ve hatî pêşve xistin.

(Ew sê pargîdanî xwedî rolên pir cûda ne: Tevlêbûna Lyft bi tenê bi navê sînorkirî dixuye; ew Envoy dinivîsin lê bi kar naynin an di pêşkeftina Istio de beşdar in. IBM di pêşveçûna Istio de beşdar e û wê bikar tîne. Google bi giranî ye beşdarî pêşkeftina Istio bû, lê bi qasî ku ez dikarim bibêjim, bi rastî wê bikar nayîne.)

Projeya Istio ji ber du tiştan girîng e. Ya yekem, ew hewildana kirrûbirrê ya mezin e ku Google, bi taybetî, dixe nav danasîna xwe. Ez texmîn dikim ku piraniya mirovên ku niha ji konsepta tevna karûbarê haydar in, yekem car bi saya Istio fêr bûn. Taybetmendiya duyemîn jî ew e ku Istio çiqas xirab hate pêşwazî kirin. Di vê mijarê de, ez, eşkere, partiyek eleqedar im, lê hewl didim ku bi qasî ku gengaz bimînim objektîf, ez hîn jî nikarim alîkariyê bikim lê mark pir nebaş rewş, ne pir taybetî (her çend ne yekta be jî: systemd tê hişê xwe, hevbeş pêk hat êdî gelek caran...) ji bo projeyek Çavkaniya Vekirî.

(Di pratîkê de, xuya dike ku Istio ne tenê bi tevlihevî û UX, lê di heman demê de bi performansê re jî pirsgirêk hene. Mînakî, di dema Nirxandinên performansa Linkerdku ji hêla aliyek sêyemîn ve hatî kirin, pisporan rewşên ku derengiya dûvika Istio 100 carî ji ya Linkerd zêdetir bû, û her weha rewşên bi kêmbûna çavkaniyan re, dema ku Linkerd bi serfirazî xebata xwe domand, û Istio bi tevahî xebata xwe rawestand.)

Dev ji teoriyên xwe yên di derbarê çima ev yek de bihêle, ez bawer dikim ku hîpertansiyonê li dora tevna karûbarê ji ber tevlêbûna Google-ê ye. Ango, berhevokek ji sê faktorên jêrîn:

  1. danasîna berbiçav a Istio ji hêla Google ve;
  2. nepejirandin, helwesta rexnegir a li hember projeyê;
  3. populerbûna herî dawî ya Kubernetes, ku bîranîna wê hîn nû ye.

Bi hev re, van faktoran di nav cûreyek hawîrdorek serxweş, anoksî de ku tê de kapasîteya dadweriya maqûl qels dibe, û tenê celebek ecêb dimîne. mania lale.

Li gorî nêrîna Linkerd, ev e… Ez ê wê wekî pîroziyek tevlihev bi nav bikim. Yanî ez pir xweş e ku tevna karûbarê ketiye navgîniya bingehîn - ku di sala 2016-an de gava ku Linkerd yekem car xuya bû ne wusa bû û bi rastî dijwar bû ku bala mirovan bikişîne ser projeyê. Niha pirsgirêkek wisa tune! Lê nûçeyên xirab ev e ku rewşa tevna karûbarê îro ew qas tevlihev e ku hema ne gengaz e ku meriv fêhm bike ka kîjan proje bi rastî di kategoriya tevna karûbarê de cih digirin (bihêlin ku meriv fêm bike ka kîjan ji bo dozek karanîna taybetî çêtirîn e). Ev bê guman rê li ber her kesî digire (û bê guman di hin rewşan de Istio an projeyek din ji Linkerd çêtir e, ji ber ku ya paşîn ne çareseriyek yek-salî ye).

Ji hêla Linkerd ve, stratejiya me ev e ku em guh nedin dengan, li ser çareserkirina pirsgirêkên rastîn ên di civatê de bisekinin, û bi bingehîn li bendê bin ku hîle bimire. Di dawiyê de dê hîle kêm bibe û em dikarin di aştiyê de xebata xwe bidomînin.

Heya wê demê, em ê hemî bi sebir bin.

Dê tevna karûbarê ji min re, endezyarek nermalava nerm, bikêr be?

Pirsnameya jêrîn dê alîkariya bersiva vê pirsê bike:

Ma hûn tenê bi pêkanîna mantiqa karsaziyê re mijûl dibin? Di vê rewşê de, tevna karûbarê dê ji we re ne bikêr be. Ango, bê guman, dibe ku hûn jê re eleqedar bibin, lê bi îdeal, tevna karûbarê divê rasterast bandorê li tiştek li hawîrdora we neke. Li ser tiştê ku ji bo we tê dayîn bixebitin.

Ma hûn di pargîdaniyek ku Kubernetes bikar tîne de platformek diparêzin? Erê, di vê rewşê de hûn hewceyê tevnek karûbarê hewce ne (bê guman, heke hûn K8-an bikar neynin tenê ji bo ku hûn pêvajoyek monolît an hevîrê bimeşînin - lê wê hingê ez dixwazim bipirsim çima hûn hewceyê K8-ê ne). Bi îhtîmalek mezin, hûn ê xwe di rewşek bi gelek mîkroxizmetên ku ji hêla mirovên cihêreng ve hatine nivîsandin de bibînin. Ew hemî bi hevûdu re têkilî dikin û bi tevliheviyek girêdanên dema xebatê ve girêdayî ne, û hûn hewce ne ku rêyek bibînin ku bi van hemîyan re mijûl bibin. Bikaranîna Kubernetes dihêle hûn "ji bo xwe" tevnek karûbarê hilbijêrin. Ji bo kirina vê yekê, xwe bi jêhatîbûn û taybetmendiyên wan re nas bikin û bersiva vê pirsê bidin ka gelo yek ji projeyên berdest bi tevahî li gorî we ye (Ez pêşniyar dikim ku hûn lêkolîna xwe bi Linkerd re dest pê bikin).

Ma hûn ji bo pargîdaniyek ku Kubernetes bikar neynin lê mîkroservisan bikar tîne platformek dimeşînin? Di vê rewşê de, tevna karûbarê dê ji we re bikêr be, lê karanîna wê dê ne hindik be. Bê guman hûn dikarin teqlîdkirin tevna karûbarê bi mazûvaniya komek proxiyan re, lê avantajek girîng a Kubernetes bi rastî modela bicîhkirinê ye: domandina bi desta van proxiyan dê pir dem, hewldan û lêçûn hewce bike.

Ma hûn di pargîdaniyek ku bi monolîtan re dixebite berpirsiyarê platformê ne? Di vê rewşê de, dibe ku hûn ne hewceyê tevnek karûbarê nebin. Ger hûn bi monolîtan (an tewra komên monolîtan) yên ku xwedan şêwazên danûstendinê yên baş diyarkirî ne û kêm kêm diguhezin re dixebitin, wê hingê tevna karûbarê hindik e ku ji we re pêşkêş bike. Ji ber vê yekê hûn dikarin tenê paşguh bikin û hêvî bikin ku ew mîna xewnek xirab winda bibe...

encamê

Dibe ku, tora karûbarê hîn jî nabe ku jê re were gotin "teknolojiya herî hîpkirî ya cîhanê" - ev rûmeta gumanbar dibe ku ji bitcoin an AI-ê ye. Dibe ku ew di pênc yekem de ye. Lê heke hûn qatên deng û dînê bişkînin, diyar dibe ku tevna karûbarê feydeyên rastîn ji kesên ku li Kubernetes sepanan diafirînin re tîne.

Ez dixwazim ku hûn Linkerd biceribînin - wê di komek Kubernetes de saz bikin (an jî Minikube li ser laptopê) nêzîkî 60 saniyeyan digireû hûn dikarin bi xwe bibînin ka ez qala çi dikim.

Pirs û Bersîv

- Ger ez tevna karûbarê paşguh bikim, dê winda bibe?
- Divê ez we bêhêvî bikim: mêşa xizmetê ji demek dirêj ve bi me re ye.

- Lê ez NAXWAZIM ku tevnek karûbarê bikar bînim!
- Belê, ne hewce ye! Tenê pirsnameya min li jor bixwînin da ku hûn bibînin ka divê hûn bi kêmanî xwe bi bingehên wê re nas bikin.

- Ma ew ne baş e ESB/navîn a kevn bi sosek nû?
- Mesh karûbarê bi mantiqa xebitandinê re têkildar e, ne semantîk. Ev kêmasiya sereke bû otobusa karûbarê pargîdanî (ESB). Ragirtina vê veqetandinê dibe alîkar ku tevna karûbarê ji heman çarenûsê dûr bixe.

- Meshek karûbarê ji dergehên API-ê çawa cûda ye?
Li ser vê mijarê mîlyonek gotar hene. Tenê google.

Ma Envoy tevnek karûbarê ye?
- Na, Envoy ne meshek karûbarê ye, ew serverek proxy ye. Ew dikare ji bo organîzekirina tevnek karûbarê were bikar anîn (û hêj bêtir - ew proxyek armanca gelemperî ye). Lê bi serê xwe, ew ne tevnek xizmetê ye.

- Mesh Karûbarê Torê - ew tevna karûbarê ye?
- Na. Tevî navê, ev ne tevnek karûbar e (hûn ji ecêbên kirrûbirrê çawa hez dikin?).

- Dê tevna karûbarê li ser bingeha rêza peyamê bi pergala min a asynkron a reaktîf re bibe alîkar?
- Na, tevna xizmetê dê alîkariya te neke.

- Divê ez kîjan tevna karûbarê bikar bînim?
- Linkerd, bê mêjî.

- Gotar şaş e! / Nivîskar - li ser sabûnê!
— Ji kerema xwe lînka wê bi hemû hevalên xwe re parve bikin da ku ew bi vê yekê qane bibin!

Spasdarî

Wekî ku hûn ji sernavê texmîn dikin, ev gotar ji peymana fantastîk ya Jay Kreps ve hatî îlhama kirin "Têketin: Tiştê ku divê her endezyar nermalavê di derbarê berhevdana yekgirtî ya daneya rast-ê de zanibe". Min deh sal berê dema ku hevpeyvînek li ser Linked In dikir bi Jay re hevdîtin kir û ji wê hingê ve ew ji min re îlhamek e.

Dema ku ez dixwazim ji xwe re bibêjim "pêşdebirê Linkerd", rastî ev e ku ez di projeyekê de bêtir xweparêzek pelê README.md me. Îro li Linkerd dixebitin pir, pir, pir много mirov, û ev proje bêyî civata ecêb a beşdar û bikarhêneran ne gengaz bû.

Û di dawiyê de, spasiya taybetî ji afirînerê Linkerd re, Oliver Gould (primus inter pares), yê ku bi min re gelek sal berê, bi serê xwe ket nav van tevna tevna xizmetê.

PS ji wergêr

Li ser bloga me jî bixwînin:

Source: www.habr.com