Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra

Fanamarihana. transl.: Service mesh dia tranga iray izay tsy mbola manana fandikan-teny miorina amin'ny teny rosiana (2 taona mahery lasa izay dia nanolotra ny safidy "mesh ho an'ny serivisy" izahay, ary taty aoriana kely dia nanomboka nampiroborobo ny fitambaran'ny "sieve serivisy" ny mpiara-miasa sasany). Ny resaka tsy tapaka momba ity teknolojia ity dia nitarika toe-javatra iray izay mifamatotra akaiky ny singa ara-barotra sy ara-teknika. Ity fitaovana mahafinaritra avy amin'ny iray amin'ireo mpanoratra ny teny tany am-boalohany dia natao hanomezana fanazavana ho an'ny injeniera sy ny hafa.

Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra
Comic avy amin'ny Sebastian Caceres

fampidirana

Raha injeniera rindrambaiko miasa any amin'ny toeran'ny rafitra backend ianao, ny teny hoe "serivisy mesh" dia mety efa niraikitra mafy tao an-tsainao tato anatin'ny roa taona lasa. Noho ny fifanandrifian-javatra hafahafa, ity fehezanteny ity dia mihamitombo hatrany ny indostria, ary ny hype sy ny tolotra fampiroboroboana mifandraika amin'izany dia mitombo toy ny oram-panala manidina midina midina ary tsy misy soritr'aretina miadana.

Teraka tao amin'ny rano manjavozavo sy mitongilana ao amin'ny tontolo voajanahary voajanahary ny rahona. Indrisy anefa fa midika izany fa ny ankamaroan'ny resabe manodidina azy dia miainga avy amin'ny "resaka ambany kaloria" ka hatramin'ny fampiasana teny teknika - tsy misy dikany. Fa raha manapaka ny tabataba rehetra ianao, dia ho hitanao fa ny serivisy mesh dia manana asa tena izy, voafaritra ary manan-danja.

Amin'ity lahatsoratra ity dia hiezaka ny hanao izany aho: manome torolalana marina, lalina, mifantoka amin'ny injeniera amin'ny serivisy serivisy. Tsy hamaly fotsiny ny fanontaniana aho: "Inona izany?", - fa koa "Fa nahoana?", ary koa "Fa maninona izao?". Farany, hiezaka aho hamaritra ny antony (raha ny hevitro) no nahatonga an'io teknolojia manokana io ho korontana adala, izay tantara mahaliana mihitsy.

Iza aho

Salama daholo! Ny anarako dia William Morgan. Iray amin'ireo mpamorona aho Linkerd - ny tetikasa mesh serivisy voalohany indrindra sy ny tetikasa izay omena tsiny amin'ny fisehoan'ny fe-potoana harato serivisy toy izany (miala tsiny ry zalahy a!). (Fanamarihana transl.: Raha ny tokony ho izy, tamin'ny fiandohan'ny fisehoan'ity teny ity, 2,5 taona mahery lasa izay, dia efa nandika ny lahatsoratra voalohan'ny mpanoratra iray mitondra ny lohateny hoe “Inona no atao hoe mesh serivisy ary nahoana aho no mila izany [ho an'ny fampiharana rahona misy microservices]?".) Izaho koa loha feno fifaliana dia fanombohana izay mamorona serivisy mesh mahafinaritra toa an'i Linkerd sy mitsoraka.

Azonao atao angamba ny maminavina fa manana hevitra mitongilana sy subjective aho momba ity olana ity. Na izany aza, hiezaka ny hitazona ny fitongilanana ho faran'izay kely aho (afa-tsy ny fizarana iray: "Nahoana no be resaka momba ny serivisy serivisy?", - izay mbola hizarako ny hevitro efa noheverina). Hiezaka ihany koa aho mba hahatonga ity torolàlana ity ho tanjona araka izay tratra. Ho an'ny ohatra manokana, hiantehitra voalohany indrindra amin'ny traikefan'i Linkerd aho, raha manondro ny fahasamihafana (raha misy) izay fantatro amin'ny fampiharana ireo karazana mesh serivisy hafa.

Okay, fotoana hirosoana amin'ny zava-tsoa.

Inona no atao hoe mesh serivisy?

Na eo aza ny hype rehetra, ny firafitry ny mesh serivisy dia tsotra. Vondron'ny proxies an'ny mpampiasa izay hita "eo akaikin'ny" serivisy (hiresaka kely momba ny "akaiky" any aoriana isika), miampy andiana fanaraha-maso. Ny proxy dia antsoina miaraka fiaramanidina data, ary ny dingana fanaraha-maso dia antsoina fiaramanidina fanaraha-maso. Ny fiaramanidina data dia manakana ny antso eo amin'ny serivisy ary manao "karazan-javatra isan-karazany" miaraka amin'izy ireo; Ny fiaramanidina fanaraha-maso, araka izany, dia mandrindra ny fihetsiky ny proxy ary manome fidirana ho anao, i.e. operator, mankany amin'ny API, mamela ny tambajotra ho voafehy sy handrefesana manontolo.

Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra

Karazana proxy inona ity? Layer 7-aware TCP proxy ity (izany hoe "mihevitra" sosona 7 amin'ny modely OSI) toy ny HAProxy sy NGINX. Afaka misafidy proxy araka izay tianao ianao; Linkerd dia mampiasa proxy Rust, nomena anarana fotsiny linkerd-proxy. Natambatray manokana ho an'ny mesh serivisy izany. Ny harato hafa dia tia proxy hafa (safidy mahazatra ny iraka). Na izany aza, ny fisafidianana proxy dia resaka fampiharana fotsiny.

Inona no ataon'ireo mpizara proxy ireo? Mazava ho azy fa antso an-tariby mankany sy avy amin'ny serivisy izy ireo (raha lazaina amin'ny teny tsotra, dia toy ny proxy izy ireo ary mifamadika, mandray ny antso miditra sy mivoaka). Ary izy ireo dia mametraka endri-javatra izay mifantoka amin'ny antso eo anelanelan'ny serivisy. Ity fifantohana amin'ny fifamoivoizana eo amin'ny serivisy ity no mampiavaka ny proxy mesh serivisy amin'ny, ohatra, vavahadin'ny API na proxy miditra (ity farany dia mifantoka amin'ny antso miditra amin'ny cluster avy any ivelany). (Fanamarihana. transl.: Ho fampitahana ireo mpanara-maso Ingress efa misy ho an'ny Kubernetes, maro amin'izy ireo no mampiasa ny Envoy efa voalaza, jereo ity lahatsoratra ity.)

Noho izany, nandamina ny fiaramanidina data izahay. Ny fiaramanidina fanaraha-maso dia tsotra kokoa: fitambarana singa manome ny mekanika rehetra ilain'ny fiaramanidina data miasa amin'ny fomba mirindra, ao anatin'izany ny fitadiavana serivisy, ny famoahana ny mari-pankasitrahana TLS, ny fanangonana metrika, sns. Ny fiaramanidina data dia mampahafantatra ny fiaramanidina fanaraha-maso ny ny fitondran-tenany; kosa, ny fiaramanidina fanaraha-maso dia manome API izay ahafahanao manova sy manara-maso ny fihetsiky ny fiaramanidina data amin'ny ankapobeny.

Ity ambany ity ny sarin'ny fiaramanidina fanaraha-maso sy ny fiaramanidina data ao amin'ny Linkerd. Araka ny hitanao, ny fiaramanidina fanaraha-maso dia misy singa maro samihafa, ao anatin'izany ny ohatra Prometheus izay manangona metrika avy amin'ny mpizara proxy, ary koa singa hafa toy ny destination (fahitana serivisy), identity (fahefana fanamarinana, CA) ary public-api (teboka farany ho an'ny tranonkala sy CLI). Mifanohitra amin'izany kosa, ny fiaramanidina data dia linkerd-proxy tsotra eo akaikin'ny ohatra fampiharana. Diagrama lojika fotsiny ity; Amin'ny fametrahana eran'izao tontolo izao dia mety manana kopia telo isaky ny singa fiaramanidina fanaraha-maso sy proxy an-jatony na an'arivony ao amin'ny fiaramanidina data ianao.

(Ny mahitsizoro manga amin'ity kisary ity dia maneho ny sisin-tanin'ny pods Kubernetes. Hitanao fa ireo fitoeran-javatra misy linkerd-proxy dia ao amin'ny pod mitovy amin'ny fitoeran'ny fampiharana. Ity tetika ity dia fantatra amin'ny hoe fitoeran-javatra sidecar.)

Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra

Ny maritrano mesh serivisy dia misy fiantraikany lehibe maro. Voalohany, satria ny andraikitry ny proxy dia ny manakana ny antso eo amin'ny serivisy, ny mesh serivisy dia tsy misy dikany raha toa ka noforonina ho an'ny serivisy maromaro ny fampiharana anao. harato afaka Ampiasaina amin'ny monoliths, saingy mazava ho azy fa tsy ampy izany noho ny proxy tokana, ary tsy dia ilaina loatra ny fampiasa azy.

Ny vokatra manan-danja iray hafa dia ny fitakian'ny serivisy serivisy goavambe isan'ny proxy. Raha ny marina, ny Linkerd dia mametaka linkerd-proxy amin'ny tranga rehetra amin'ny serivisy rehetra (ny fampiharana hafa dia manampy proxy amin'ny milina node/host/virtual rehetra. Tena betsaka izany). Ny fampiasana mavitrika toy izany amin'ny proxy dia mitondra fahasarotana fanampiny:

  1. Ny proxy ao amin'ny fiaramanidina data dia tsy maintsy misy fifadian-kanina, satria isaky ny antso dia misy antso roa mankany amin'ny proxy: ny iray amin'ny lafiny mpanjifa, ny iray amin'ny lafiny server.
  2. Tokony ho toy izany koa ny proxy KELY и maivana. Ny tsirairay dia handany ny fitadidiana sy ny loharanon-karena CPU, ary io fanjifana io dia hitombo tsikelikely miaraka amin'ny fampiharana.
  3. Mila mekanika ianao hametrahana sy hanavaozana proxy maro be. Tsy safidy ny fanaovana izany amin'ny tanana.

Amin'ny ankapobeny, toa izao ny harato tolotra iray (farafaharatsiny avy amin'ny fijerin'ny vorona): mametraka andiana proxies amin'ny habaka mpampiasa ianao izay "manao zavatra" miaraka amin'ny fifamoivoizana anatiny, inter-service, ary mampiasa fiaramanidina fanaraha-maso hanara-maso sy hitantana azy ireo.

Fotoana izao hametrahana ny fanontaniana hoe "Nahoana?"

Inona no atao hoe mesh serivisy?

Ireo izay nahita voalohany ny hevitra momba ny serivisy serivisy dia azo avela noho ny fahasahiranana kely. Ny famolavolana mesh serivisy dia midika fa tsy hampitombo ny faharetan'ny fampiharana fotsiny izany, fa hampitombo ihany koa handevona loharanon-karena sy hanampy andiana mekanika vaovao amin'ny fotodrafitrasa. Voalohany dia manangana harato serivisy ianao, ary avy eo dia hitanao fa mila manompo proxy an-jatony (raha tsy an'arivony). Ny fanontaniana dia hoe iza no hanao an-tsitrapo izany?

Misy fizarana roa ny valin’io fanontaniana io. Voalohany, ny vidin'ny fifanakalozana mifandraika amin'ny fametrahana ireo proxy ireo dia mety hihena be noho ny fiovana sasany mitranga ao amin'ny tontolo iainana (bebe kokoa momba izany any aoriana).

Faharoa, ny fitaovana toy izany dia tena fomba tsara hampidirana lojika fanampiny amin'ny rafitra. Tsy vitan'ny hoe afaka manampy asa vaovao be dia be ny mesh serivisy, fa koa satria azo atao tsy manelingelina ny tontolo iainana. Raha ny marina, ny modely mesh serivisy manontolo dia mifototra amin'ity sehatra ity: amin'ny rafitra multiservice, na inona na inona manao serivisy tsirairay, fifamoivoizana eo anelanelan’izy ireo no teboka tsara indrindra hanampiana fonctionnaire.

Ohatra, ao amin'ny Linkerd (toy ny amin'ny ankamaroan'ny mesh) ny fampiasa dia mifantoka indrindra amin'ny antso HTTP, anisan'izany ny HTTP/2 sy ny gRPC*. Tena manankarena ny fiasa - azo zaraina ho kilasy telo izany:

  1. Endri-javatra mifandraika amin'ny azo itokisana. Fangatahana miverimberina, fahatapahan'ny fotoana, fomba fanao amin'ny canary (fizarana/famerenana ny fifamoivoizana), sns.
  2. Endri-javatra mifandraika amin'ny Fanaraha-maso. Fanangonana ny taham-pahombiazana, ny fahatarana ary ny habetsaky ny fangatahana ho an'ny serivisy tsirairay na toro-lalana tsirairay; fananganana sarintany topolojika momba ny serivisy, sns.
  3. Endri-javatra mifandraika amin'ny ARO. TLS, fanaraha-maso ny fidirana, sns.

* Raha ny fijerin'i Linkerd, ny gRPC dia saika tsy misy hafa amin'ny HTTP/2: mampiasa protobuf fotsiny izy amin'ny entana. Amin'ny fomba fijerin'ny mpamorona, mazava ho azy fa samy hafa ireo zavatra roa ireo.

Maro amin'ireo mekanika ireo no miasa amin'ny ambaratonga fangatahana (noho izany ny "L7 proxy"). Ohatra, raha manao antso HTTP amin'ny serivisy Bar ny serivisy Foo, ny proxy-linkerd amin'ny ilany Foo dia afaka manao fampifandanjana enta-mavesatra sy antso avy amin'ny Foo mankany Bar mifototra amin'ny fahatarana voamarika; dia afaka mamerina ny fangatahana raha ilaina (ary raha idépotent); dia afaka mirakitra ny kaody valiny sy ny fe-potoana, sns. Toy izany koa, ny linkerd-proxy amin'ny lafiny Bar dia afaka mandà fangatahana raha tsy mahazo alalana na mihoatra ny fetran'ny fangatahana; mety handrakitra ny fahatarana amin'ny ampahany, sns.

Ny proxy dia afaka "manao zavatra" amin'ny ambaratonga fifandraisana ihany koa. Ohatra, ny linkerd-proxy amin'ny lafiny Foo dia afaka manomboka fifandraisana TLS, ary ny linkerd-proxy amin'ny lafiny Bar dia afaka manafoana izany, ary ny andaniny roa dia afaka manamarina ny mari-pankasitrahana TLS*. Izany dia tsy manome encryption eo amin'ny serivisy ihany, fa koa fomba azo antoka amin'ny kriptografika hamantarana ny serivisy: Foo sy Bar dia afaka "manaporofo" fa izy ireo no lazainy.

* Ny "fifandraisana amin'ny namana" dia midika fa voamarina ihany koa ny taratasy fanamarinana mpanjifa (TLS mifamatotra). Ao amin'ny TLS "classic", ohatra eo anelanelan'ny navigateur sy ny mpizara, ny taratasy fanamarinana amin'ny lafiny iray ihany (ny mpizara) dia voamarina matetika.

Na inona na inona miasa amin'ny fangatahana na ny fifandraisana, dia zava-dehibe ny manantitrantitra fa ny fiasa rehetra amin'ny serivisy dia miasa toetra. Tsy afaka manova ny semantika amin'ny enta-mavesatra ny Linkerd - ohatra, manampy saha amin'ny ampahany JSON na manova ny protobuf. Hiresaka momba an'io endri-javatra manan-danja io isika rehefa miresaka momba ny ESB sy ny middleware.

Ity no andiana endri-javatra atolotry ny mesh serivisy. Mipetraka ny fanontaniana hoe: maninona no tsy mampihatra azy ireo mivantana amin'ny fampiharana? Ary maninona no manahirana ny proxy mihitsy?

Nahoana no hevitra tsara ny mesh serivisy

Na dia mampientam-po aza ny fahaiza-manaon'ny mesh serivisy, dia tsy miankina amin'ny endri-javatra misy azy ny sanda fototra. Amin'ny farany isika afaka mampihatra azy ireo mivantana amin'ny fampiharana (ho hitantsika any aoriana fa io no niandohan'ny serivisy serivisy). Raha hanandrana sy hamintina azy amin'ny fehezanteny iray, ny sandan'ny mesh serivisy dia: Izy io dia manome endri-javatra manan-danja amin'ny fampandehanana rindrambaiko mpizara maoderina amin'ny fomba tsy miovaova manerana ny stack iray manontolo ary tsy miankina amin'ny fehezan-dalàna fampiharana.

Andeha hodinihintsika ity soso-kevitra ity.

«Endri-javatra manan-danja amin'ny fampandehanana rindrambaiko mpizara maoderina" Raha mamorona rindranasa mpizara transactional izay mifandray amin'ny Internet ho an'ny daholobe ianao, manaiky ny fangatahana avy any ivelany ary mamaly azy ireo ao anatin'ny fotoana fohy - ohatra, fampiharana amin'ny Internet, mpizara API, ary ny ankamaroan'ny fampiharana maoderina hafa. - ary raha toa ianao ka mampihatra azy io ho andiana serivisy mifandray amin'ny tsirairay, ary raha manavao tsy tapaka an'ity rindrambaiko ity ianao, manampy endri-javatra vaovao, ary raha terena ianao hitazona ity rafitra ity amin'ny filaminana miasa mandritra ny dingana fanovana - amin'ity Raharaha, arahabaina, ianao dia mamorona rindrambaiko mpizara maoderina. Ary ireo endri-javatra lehibe rehetra voatanisa etsy ambony ireo dia tena mitsikera ho anao. Ny fampiharana dia tsy maintsy azo ianteherana, azo antoka, ary tokony ho afaka mandinika ny ataony ianao. Ireo no fanontaniana izay manampy amin'ny famahana ny serivisy mesh.

(OK, ny andalana teo aloha dia mbola ahitana ny finoako fa io fomba fiasa io no fomba maoderina amin'ny famoronana logiciel mpizara. Ny hafa dia aleony manamboatra monoliths, "microservices reactive" ary zavatra hafa izay tsy tafiditra ao anatin'ny famaritana voalaza etsy ambony. Mety manana ny azy ireo olona ireo. Tsy mitovy amin'ny ahy ny hevitro. Ho setrin'izany dia heveriko fa "diso" izy ireo - na dia tsy mahasoa azy ireo aza ny serivisy serivisy).

«Fanamiana ho an'ny stack manontolo" Ny fiasa omen'ny mesh serivisy dia tsy mitsikera iraka fotsiny. Izy ireo dia mihatra amin'ny serivisy rehetra ao amin'ny fampiharana, na inona na inona fiteny nanoratana azy, inona no rafitra ampiasain'izy ireo, iza no nanoratra azy, ahoana no nampidirana azy ireo, ary izay hafetsen'ny fivoarany sy ny fampiasana azy.

«Tsy miankina amin'ny kaody fampiharana" Farany, ny mesh serivisy dia tsy vitan'ny hoe manome fampandehanana tsy tapaka manerana ny stack manontolo, fa manao izany amin'ny fomba tsy mitaky ny fanitsiana ny rindranasa. Ny fototra fototra amin'ny fampiasa mesh serivisy, ao anatin'izany ny asa ho an'ny fanamafisana, fanavaozana, fampandehanana, fikojakojana, sns., dia mipetraka tanteraka amin'ny sehatra ary tsy miankina amin'ny fampiharana. Ny fampiharana dia afaka miova tsy misy fiantraikany amin'ny serivisy serivisy. Ho setrin'izany, ny mesh serivisy dia afaka miova tsy misy fandraisana anjara amin'ny fampiharana.

Raha fintinina, ny mesh serivisy dia tsy vitan'ny hoe manome fiasa tena ilaina, fa manao izany amin'ny fomba manerantany, fanamiana ary tsy miankina amin'ny fampiharana. Ary noho izany, na dia azo ampiharina amin'ny kaody serivisy aza ny fampiasa amin'ny serivisy (ohatra, amin'ny maha-fitehirizam-boky ao amin'ny serivisy tsirairay), ity fomba fiasa ity dia tsy hanome ny fitoviana sy ny fahaleovantena izay tena sarobidy amin'ny trangan'ny serivisy.

Ary ny hany ilainao atao dia manampy andiana proxy! Mampanantena aho fa hojerentsika tsy ho ela ny vidin'ny fampandehanana mifandraika amin'ny fampidirana ireo proxy ireo. Fa andeha aloha hijanona ary hijery ity hevitra momba ny fahaleovantena ity amin'ny fomba fijery samihafa. olona.

Iza no manampy ny serivisy mesh?

Na dia mety ho sarotra aza, mba hahatonga ny teknolojia ho lasa ampahany manan-danja amin'ny tontolo iainana, dia tsy maintsy eken'ny olona izany. Koa iza no liana amin'ny serivisy mesh? Iza no mahazo tombony amin’ny fampiasana azy?

Raha mamolavola rindrambaiko mpizara maoderina ianao dia azonao atao ny mihevitra ny ekipanao ho vondrona tompon'ny serivisyizay miara-mamolavola sy mampihatra ny lojika fandraharahana, ary tompon'ny sehatra, mamolavola ny sehatra anatiny izay iasan'ireo tolotra ireo. Ao amin'ny fikambanana madinika dia mety ho olona iray ihany ireo, saingy rehefa mitombo ny orinasa dia mihamitombo kokoa ireo andraikitra ireo ary mizarazara ho zana-tohatra mihitsy aza... (Betsaka ny azo ambara eto momba ny fiovan'ny devops, ny fiantraikan'ny fandaminana amin'ny microservices, sns) n. Fa amin'izao fotoana izao dia andao horaisina ireo famaritana ireo).

Avy amin'io fomba fijery io, ny mpandray tombony mazava amin'ny serivisy serivisy dia ny tompon'ny sehatra. Raha ny marina, ny tanjon'ny ekipan'ny sehatra amin'ny farany dia ny hamorona sehatra anatiny ahafahan'ny tompon'andraikitra mampihatra ny lojikan'ny fandraharahana ary manao izany amin'ny fomba izay miantoka ny fahaleovantenany araka izay azo atao amin'ny antsipiriany manjavozavo amin'ny asany. Tsy vitan'ny hoe manolotra fahafaha-manao manan-danja amin'ny fanatrarana io tanjona io ny mesh serivisy, fa manao izany amin'ny fomba izay tsy mametraka fiankinan-doha amin'ny tompon'ny serivisy.

Ny tompon'ny serivisy dia mahazo tombony ihany koa, na dia amin'ny fomba ankolaka kokoa aza. Ny tanjon'ny tompon'ny serivisy dia ny hahavokatra araka izay azo atao amin'ny fampiharana ny lojikan'ny fizotran'ny fandraharahana, ary ny tsy hanahirana azy amin'ny olana momba ny asa no tsara kokoa. Raha tokony hiatrika fampiharana, ohatra, andrana indray ny politika na TLS, dia afaka mifantoka fotsiny amin'ny tanjon'ny fandraharahana izy ireo ary manantena fa hikarakara ny ambiny ny sehatra. Tombony lehibe ho azy ireo izany.

Ny sandan'ny fandaminana amin'ny fizarazarana toy izany eo amin'ny tompon'ny sehatra sy ny serivisy dia tsy azo ovaina loatra. Heveriko fa mandray anjara izy tena fandraisana anjara amin'ny sandan'ny harato serivisy.

Nianatra ity lesona ity izahay rehefa nilaza taminay ny antony nisafidianany ny mesh service ny mpankafy Linkerd teo aloha: satria nahafahan'izy ireo “nihazona ny fivarotana resaka ho faran'izay kely indrindra.” Ireto misy antsipiriany vitsivitsy: nifindra tany amin'ny Kubernetes ry zalahy avy amin'ny orinasa lehibe iray. Koa satria nitantana vaovao saro-pady ny fampiharana, dia te-hanao encryption ny fifandraisana rehetra manerana ny cluster izy ireo. Na izany aza, sarotra ny toe-draharaha noho ny fisian'ny serivisy an-jatony sy ekipa fampandrosoana an-jatony. Ny fahatsinjovana ny hifandray amin'ny rehetra sy ny fandresen-dahatra azy ireo hampiditra ny fanohanan'ny TLS ao amin'ny drafitr'izy ireo dia tsy nahafaly azy ireo mihitsy. Rehefa avy nametraka Linkerd izy ireo dia nifindra andraikitra avy amin'ny mpamorona (avy amin'ny fomba fijery izay olana tsy ilaina izany) mankany amin'ny platformers, izay laharam-pahamehana ambony indrindra. Raha lazaina amin'ny teny hafa, ny Linkerd dia namaha azy ireo fa tsy olana ara-teknika loatra fa olana ara-pandaminana.

Raha fintinina, ny serivisy serivisy dia vahaolana kokoa, fa tsy ara-teknika, fa ara-tsosialy-teknika Olana. (Misaotra anao Cindy Sridharan amin'ny fampidirana ity teny ity.)

Hamaha ny olako rehetra ve ny mesh serivisy?

Eny. Ny tiako holazaina dia tsia!

Raha mijery ireo karazana endri-javatra telo voalaza etsy ambony ianao — azo itokisana, azo antoka ary azo jerena — dia hita fa tsy vahaolana feno amin'ireo olana ireo ny mesh serivisy. Na dia afaka mamoaka fangatahana indray aza ny Linkerd (raha fantany fa idépotent izy ireo), dia tsy afaka mandray fanapahan-kevitra momba izay haverina amin'ny mpampiasa izy raha toa ka tsy nahomby tanteraka ny serivisy — ireo fanapahan-kevitra ireo dia tsy maintsy ataon'ny fampiharana. Ny Linkerd dia afaka mitazona antontan'isa momba ny fangatahana mahomby, saingy tsy afaka mijery ny serivisy izy ary manome ny metrika anatiny - tsy maintsy manana fitaovana toy izany ny fampiharana. Ary na dia afaka mandamina mTLS aza i Linkerd, ny vahaolana fiarovana feno dia mitaky bebe kokoa.

Ny ampahany amin'ireo endri-javatra amin'ireo faritra atolotry ny serivisy mesh dia mifandraika amin'ny endri-javatra amin'ny sehatra. Ny tiako holazaina amin'ity dia miasa fa:

  1. Tsy miankina amin'ny lojika raharaham-barotra. Ny fomba fananganana histograma antso eo anelanelan'ny Foo sy Bar dia tsy miankina tanteraka nahoana Foo miantso Bar.
  2. Sarotra ny mampihatra tsara. Ao amin'ny Linkerd, ny andrana indray dia voasokajy miaraka amin'ireo karazan-javatra raitra rehetra toy ny tetibola andrana indray (andramo indray ny tetibola), satria ny fomba fiasa tsy raitra sy tsy misy dikany amin'ny fampiharana ireo zavatra ireo dia azo antoka fa hitarika amin'ny fipoiran'ny antsoina hoe "avalanche of demands". (andramo indray ny tafiotra) ary olana hafa mampiavaka ny rafitra mizara.
  3. Mahomby indrindra rehefa ampiharina mitovy. Ny mekanika TLS dia tsy misy dikany raha toa ka ampiharina eny rehetra eny.

Satria ireo fiasa ireo dia ampiharina amin'ny ambaratonga proxy (fa tsy amin'ny haavon'ny fampiharana), ny mesh serivisy dia manome azy ireo amin'ny платформы, tsy fampiharana. Noho izany, tsy mampaninona izay fiteny nanoratana ny serivisy, inona ny rafitra ampiasainy, iza no nanoratra azy ary nahoana. Ny proxy dia miasa ivelan'ireo antsipiriany rehetra ireo, ary ny fototra fototra amin'ity fampiasa ity, anisan'izany ny asa ho an'ny fanamafisana, fanavaozana, fampandehanana, fikojakojana, sns., dia mipetraka irery eo amin'ny sehatry ny sehatra.

Ohatra amin'ny fahafahan'ny mesh service

Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra

Raha fintinina, tsy vahaolana feno ho an'ny fahamendrehana, ny fanaraha-maso, na ny fiarovana ny harato serivisy. Mitaky ny fandraisan'anjaran'ny tompona tolotra, ekipa Ops/SRE ary sampandraharaha hafa ny sahan'ireo sehatra ireo. Ny harato serivisy dia manome "slice" amin'ny sehatra tsirairay ho an'ny faritra tsirairay.

Nahoana no lasa malaza amin'izao fotoana izao ny mesh serivisy?

Amin'izao fotoana izao dia mety hanontany tena ianao hoe: ok, raha tena tsara ny mesh serivisy, nahoana no tsy nanomboka nandefa proxy an-tapitrisany tao amin'ny stack folo taona lasa izay?

Misy valiny banal amin'ity fanontaniana ity: folo taona lasa izay, ny olona rehetra dia nanorina monoliths, ary tsy nisy olona mila serivisy serivisy. Marina izany, fa raha ny hevitro dia diso hevitra io valiny io. Na dia folo taona lasa izay aza, ny foto-kevitry ny microservices ho fomba mampanantena hananganana rafitra midadasika dia noresahina sy nampiharina tamin'ny orinasa toy ny Twitter, Facebook, Google ary Netflix. Ny fomba fijery ankapobeny-farafaharatsiny ao amin'ireo ampahan'ny indostria nifaneraserako dia ny microservices no "fomba tsara" hananganana rafitra lehibe, na dia sarotra aza izany.

Mazava ho azy, na dia folo taona lasa izay aza dia nisy orinasa miasa microservices, tsy nifikitra tamin'ny proxy izy ireo na aiza na aiza azony atao mba hamoronana serivisy serivisy. Na izany aza, raha mijery akaiky ianao dia nanao zavatra mitovy amin'izany izy ireo: maro amin'ireo orinasa ireo no nitaky ny fampiasana tranomboky anatiny manokana ho an'ny fifandraisana amin'ny tambajotra (indraindray antsoina hoe tranomboky mpanjifa matevina, tranomboky mpanjifa matavy).

Netflix dia nanana Hysterix, Google dia nanana Stubby, Twitter dia nanana ny tranomboky Finagle. Finagle, ohatra, dia tsy maintsy natao ho an'ny serivisy vaovao rehetra ao amin'ny Twitter. Izy io dia nitantana ny lafiny fifandraisana amin'ny mpanjifa sy ny mpizara, navela ho an'ny fangatahana miverimberina, fanohanan'ny lalana fangatahana, fifandanjana entana ary fandrefesana. Izy io dia nanome sosona azo itokisana sy azo jerena manerana ny stack Twitter manontolo, na inona na inona ataon'ny serivisy. Mazava ho azy fa miasa ho an'ny fiteny JVM ihany izy io ary mifototra amin'ny modely fandaharana izay tsy maintsy ampiasaina amin'ny fampiharana manontolo. Na izany aza, ny fiasany dia saika mitovy amin'ny an'ny serivisy serivisy. (Raha ny marina, ny dikan-teny voalohany amin'ny Linkerd dia Finagle nofonosina amin'ny endrika proxy.)

Noho izany, folo taona lasa izay dia tsy ny microservices ihany, fa ny trano famakiam-boky proto-service-mesh manokana izay namaha ireo olana mitovy amin'ny famahana ny serivisy amin'izao fotoana izao. Na izany aza, ny mesh serivisy dia tsy nisy tamin'izany. Tsy maintsy nisy fiovana indray vao niseho izy.

Ary eto no misy ny valiny lalindalina kokoa, miafina ao anatin'ny fiovana hafa nitranga tao anatin'ny 10 taona lasa: nihena be ny vidin'ny fandefasana microservices. Ireo orinasa voalaza etsy ambony izay nampiasa microservice folo taona lasa izay—Twitter, Netflix, Facebook, Google—dia orinasa lehibe sy loharanon-karena goavana. Tsy vitan'ny hoe nanana filana izy ireo, fa koa ny fahafahana manangana, manaparitaka, ary mampiasa rindranasa mifototra amin'ny microservices lehibe. Mahavariana ny angovo sy ny ezaka nataon'ny injeniera Twitter tamin'ny fifindran'ny monolitika mankany amin'ny fomba fiasa microservices. (Raha ny marina, dia toy izany koa ny zava-misy fa nahomby.) Ireo karazana fotodrafitrasa ireo dia tsy vitan'ny orinasa madinika.

Mandroso haingana amin'izao fotoana izao. Misy ny fanombohana ankehitriny izay ny tahan'ny microservices amin'ny mpamorona dia 5: 1 (na 10:1), ary ankoatra izany, dia mahavita miatrika izany izy ireo! Raha toa ny fanombohana olona 5 dia afaka miasa mora amin'ny microservices 50, dia misy zavatra nampihena mazava ny vidin'ny fampiharana azy ireo.

Service Mesh: Izay tokony ho fantatry ny Injeniera rindrankajy rehetra momba ny teknolojia mafana indrindra
1500 microservices ao Monzo; ny andalana tsirairay dia fitsipika tambajotra voatondro izay mamela ny fifamoivoizana

Ny fampihenana ny vidin'ny microservices dia vokatry ny dingana iray: mitombo lazan'ny kaontenera и orkesitra. Izany indrindra no valiny lalina amin'ny fanontaniana hoe inona no nahatonga ny firongatry ny serivisy serivisy. Io teknolojia io ihany no nahasarika ny serivisy sy ny microservices: Kubernetes sy Docker.

Nahoana? Eny, mamaha olana lehibe iray i Docker - ny olan'ny fonosana. Amin'ny alàlan'ny famenoana fampiharana sy ny fiankinan-dohany (tsy misy tambazotra) ao anaty fitoeran-javatra iray, dia mamadika ny rindranasa ho vondrona azo ovaina i Docker izay azo apetraka sy mihazakazaka na aiza na aiza. Amin'izay fotoana izay ihany koa dia manamora be ny asa LAHATENY Stack: Satria ny kaontenera dia singa atomika famonoana, ho an'ny tanjona fametrahana sy fampandehanana, tsy maninona izay ao anatiny, na fampiharana JVM, Node, Go, Python, na Ruby. Atombokao fotsiny izany dia izay ihany.

Kubernetes dia mitondra ny zava-drehetra ho any amin'ny ambaratonga manaraka. Amin'izao fotoana izao dia misy "zavatra hazakazaka" an-taonany maro ary milina an-taoniny hampandeha azy ireo, ilaina ny fitaovana afaka mampifandray azy ireo amin'ny tsirairay. Amin'ny lafiny midadasika, manome an'i Kubernetes kaontenera be dia be sy milina maro ianao, ary manoritra azy ireo amin'ny sarintany mifanandrify (mazava ho azy fa dingana mavitrika sy miovaova hatrany izany: mivezivezy manodidina ny rafitra ny kaontenera vaovao, manomboka ary mijanona ny milina. , sns. Na izany aza, i Kubernetes dia mandray izany rehetra izany).

Raha vantany vao voarindra ny Kubernetes, dia tsy mitovy amin'ny sandan'ny fametrahana sy fampandehanana tolotra folo (raha ny marina dia mitovy amin'ny serivisy 100 izany). Ampio amin'ity kaontenera ity ho mekanika famonosana izay mamporisika ny fampiharana amin'ny fiteny maro, ary manana rindranasa vaovao be dia be amin'ny endrika microservices voasoratra amin'ny fiteny samihafa ianao - tena karazana tontolo iainana izay mifanentana tsara amin'ny serivisy serivisy.

Noho izany, tonga amin'ny valin'ny fanontaniana hoe nahoana no lasa malaza ankehitriny ny hevitra momba ny harato serivisy: ny homogeneity omen'i Kubernetes ho an'ny serivisy dia mihatra mivantana amin'ireo fanamby atrehan'ny serivisy serivisy. Ampidirinao ao anaty kaontenera ireo proxy, omeo an'i Kubernetes ny asa hamehezana azy ireo na aiza na aiza azony atao, ary voila! Vokatr'izany dia mahazo harato serivisy ianao, fa ny mekanika rehetra amin'ny fametrahana azy dia tantanin'ny Kubernetes. (Farafaharatsiny avy amin'ny mason'ny vorona. Mazava ho azy fa maro ny nuance amin'ity dingana ity.)

Raha fintinina: ny antony nahatonga ny serivisy ho lasa malaza ankehitriny, fa tsy folo taona lasa izay, dia tsy nitombo be fotsiny i Kubernetes sy Docker. NILA ao anatin'izany, rehefa nanatsotra ny fampiharana ny fampiharana ho andiana microservices amin'ny fiteny maro, nefa nihena be ihany koa vola lany ho an'ny fampandehanana azy, manome fomba fiasa amin'ny fametrahana sy hanohanana ny fiaramanidina proxy sidecar.

Nahoana no be dia be ny resaka momba ny serivisy?

Ny fisorohana: Amin'ity fizarana ity dia ampiasaiko ireo karazana fiheverana, tombantombana, famoronana ary fampahalalana anatiny.

Manaova fikarohana momba ny "service mesh" dia hahita votoaty ambany kalôria be dia be, tetikasa hafahafa ary kaleidoscope misy fanodinkodinana mendrika ny efitrano ako. Ny teknolojia vaovao rehetra dia manao izany, fa amin'ny trangan'ny serivisy serivisy dia tena mafy tokoa ny olana. Nahoana?

Eny, ny ampahany amin'izany dia fahadisoako. Niasa mafy aho mba hampiroboroboana ny Linkerd sy ny serivisy amin'ny fotoana rehetra azoko amin'ny alàlan'ny lahatsoratra bilaogy sy lahatsoratra tsy tambo isaina toa ity. Saingy tsy dia mahery loatra aho. Mba hamaliana marina io fanontaniana io dia mila miresaka kely momba ny toe-javatra ankapobeny isika. Ary tsy azo atao ny miresaka momba izany raha tsy manonona tetikasa iray: Istio dia harato serivisy loharano misokatra novolavolain'ny Google, IBM ary Lyft.

(Manana andraikitra tena samy hafa ireo orinasa telo ireo: Ny fandraisan'anjaran'i Lyft dia toa amin'ny anarana ihany; izy ireo no mpanoratra ny Envoy, saingy tsy mampiasa na mandray anjara amin'ny fampandrosoana an'i Istio. IBM dia mandray anjara ary mampiasa ny fivoaran'i Istio. Google dia mandray anjara mavitrika amin'ny Istio's fampandrosoana , fa tsy tena mampiasa azy araka ny lazaiko.)

Ny tetikasa Istio dia miavaka amin'ny zavatra roa. Voalohany, misy ny ezaka ara-barotra goavana ataon'i Google, indrindra indrindra, amin'ny fampiroboroboana azy. Manombatombana aho fa ny ankamaroan'ny olona mahafantatra ny foto-kevitry ny serivisy mesh ankehitriny dia nianatra momba izany tamin'ny alàlan'ny Istio. Ny faharoa dia ny faharatsian'ny nahazo an'i Istio. Amin'ity raharaha ity dia mazava ho azy fa antoko liana aho, saingy miezaka mijanona ho tanjona araka izay azo atao, dia mbola tsy afaka ny tsy hijanona manamarika tena ratsy toe-tsaina, tsy tena miavaka (na dia tsy miavaka aza: systemd tonga ao an-tsaina, fampitahana natao efa imbetsaka...) ho an'ny tetikasa Open Source.

(Raha ny fampiharana, Istio dia toa manana olana tsy amin'ny fahasarotana sy ny UX ihany, fa amin'ny fampisehoana ihany koa. Ohatra, mandritra ny Linkerd naoty fampisehoanaTao amin'ny fanadihadiana nataon'ny antoko fahatelo, ny mpikaroka dia nahita toe-javatra izay nitombo avo 100 heny noho ny an'i Linkerd ny halavan'ny rambon'i Istio, ary koa ireo toe-javatra mosary izay nanohy niasa tamim-pahombiazana i Linkerd raha nijanona tsy niasa tanteraka i Istio.)

Nandao ny foto-keviko momba ny antony nitrangan'izany aho, mino aho fa ny fientanentanana tafahoatra manodidina ny mesh serivisy dia hazavain'ny fandraisan'anjaran'i Google. Izany hoe, fitambaran'ny antony telo manaraka ireto:

  1. Ny fampiroboroboana an'i Google amin'ny Istio;
  2. toe-tsaina tsy mankasitraka, mitsikera mifanaraka amin'ilay tetikasa;
  3. ny fisondrotan'ny meteorika vao haingana teo amin'ny lazan'ny Kubernetes, izay mbola vaovao ny fahatsiarovana azy.

Ireo anton-javatra ireo dia mitambatra mba hamoronana tontolo manafintohina, tsy misy oksizenina izay mampihena ny fahafahan'ny fitsarana misaina, ary ny karazany hafahafa ihany no tavela. tulipe mania.

Amin'ny fomba fijerin'i Linkerd, ity no...izay holazaiko ho fitahiana mifangaro. Ny tiako holazaina dia mahafinaritra fa niditra tao amin'ny mainstream tamin'ny fomba tsy nitranga tamin'ny taona 2016 raha nanomboka voalohany ny Linkerd ary sarotra tokoa ny nisarika ny olona hijery ilay tetikasa. Ankehitriny tsy misy olana toy izany! Saingy ny vaovao ratsy dia ny tontolon'ny serivisy mesh dia misavoritaka ankehitriny ka saika tsy takatry ny saina hoe iza amin'ireo tetikasa no tena ao anatin'ny sokajy mesh serivisy (avelao hahatakatra hoe iza no mety indrindra amin'ny tranga fampiasana manokana). Azo antoka fa fifanarahana ho an'ny rehetra izany (ary misy tranga sasany izay i Istio na tetikasa hafa dia mety kokoa noho ny Linkerd, satria mbola tsy vahaolana manerantany ity farany).

Eo amin'ny lafiny Linkerd, ny paikadinay dia ny tsy miraharaha ny tabataba, manohy mifantoka amin'ny famahana ny tena olan'ny fiaraha-monina, ary amin'ny ankapobeny dia miandry ny hihena. Amin'ny farany, hihena ny fihoaram-pefy ary afaka manohy miasa amim-pahatoniana isika.

Mandra-pahatongan'izany dia tsy maintsy hanam-paharetana kely isika rehetra.

Hahasoa ahy ve ny mesh serivisy, injeniera rindrambaiko manetry tena?

Ity fanontaniana manaraka ity dia hanampy anao hamaly ity fanontaniana ity:

Moa ve ianao mandray anjara amin'ny fampiharana ny lojikan'ny fandraharahana? Amin'ity tranga ity, ny mesh serivisy dia tsy hahasoa anao. Mazava ho azy fa mety ho liana amin'izany ianao, fa ny tsara indrindra dia tsy tokony hisy fiantraikany mivantana amin'ny tontolo iainanao ny mesh serivisy. Tohizo hatrany ny asa karamainao.

Manohana ny sehatra amin'ny orinasa mampiasa Kubernetes ve ianao? Eny, amin'ity tranga ity dia mila mesh serivisy ianao (raha tsy hoe, mazava ho azy, mampiasa K8s fotsiny ianao mba hampandehanana monolith na fanodinana batch - fa avy eo dia te-hanontany aho hoe nahoana ianao no mila K8s). Azo inoana fa hahazo microservices nosoratan'ny olona samihafa ianao. Izy rehetra dia mifandray amin'ny tsirairay ary mifamatotra amin'ny fiankinan-doha amin'ny runtime, ary mila mitady fomba hiatrehana izany rehetra izany ianao. Ny fampiasana Kubernetes dia ahafahanao misafidy harato serivisy "ho anao". Mba hanaovana izany, fantaro ny fahaizany sy ny endri-javatra ary valio ny fanontaniana raha mety aminao ny tetikasa misy (manoro hevitra aho hanomboka ny fikarohanao amin'ny Linkerd).

Orinasa sehatra ve ianao amin'ny orinasa TSY mampiasa Kubernetes fa mampiasa microservices? Amin'ity tranga ity, ny mesh serivisy dia mahasoa anao, fa ny fampiasana azy dia tsy misy dikany. Mazava ho azy fa azonao atao TAHAFO asa amin'ny alàlan'ny fametrahana andiana proxy, fa ny tombony lehibe amin'ny Kubernetes dia ny maodely fametrahana: mitaky fotoana, ezaka ary fandaniana bebe kokoa ny fitazonana ireo proxy ireo.

Tompon'andraikitra amin'ny sehatra amin'ny orinasa iray miasa amin'ny monoliths ve ianao? Amin'ity tranga ity, mety tsy mila serivisy serivisy ianao. Raha miara-miasa amin'ny monoliths ianao (na fanangonana monoliths) izay voafaritra tsara ary zara raha miova ny lamin'ny fifandraisana, dia ho kely ny serivisy serivisy iray. Ka azonao atao tsinontsinoavina fotsiny izany ary manantena fa hanjavona toy ny nofy ratsy ...

famaranana

Angamba, mbola tsy tokony hantsoina hoe "teknolojia malaza indrindra eran-tany" ny serivisy serivisy - mety an'i Bitcoin na AI io voninahitra mampiahiahy io. Anisan’ny dimy voalohany angamba izy. Saingy raha manapaka ny soson'ny tabataba ianao, dia miharihary fa ny serivisy serivisy dia mitondra tombontsoa tena izy ho an'ireo izay manorina fampiharana amin'ny Kubernetes.

Tiako ny hanandrana ny Linkerd - fametrahana azy amin'ny cluster Kubernetes (na koa Minikube amin'ny solosaina finday) maka 60 segondra eo ho eo, ary hitanao ho anao ny zavatra resahiko.

FAQ

— Raha tsy miraharaha ny harato serivisy aho, hanjavona ve izany?
- Tsy maintsy mandiso fanantenana anao aho: efa ela ny serivisy mesh.

- Fa TSY TE hampiasa mesh serivisy aho!
- Eny, tsy ilaina izany! Vakio fotsiny ny fanontaniako etsy ambony mba hahatakaranao raha tokony ho zatra amin'ny fototra iorenany ianao farafaharatsiny.

— Moa ve tsy misy saosy vaovao ve ity ESB/middleware taloha tsara ity?
- Ny serivisy mesh dia mifandraika amin'ny lojika miasa fa tsy semantika. Izany no tena lesoka bus serivisy orinasa (IZY B). Ny fitazonana an'io fisarahana io dia manampy ny mesh serivisy hisorohana ny loza mitovy.

— Inona no maha samy hafa ny harato serivisy amin'ny vavahadin'ny API?
— Misy lahatsoratra an-tapitrisany momba io lohahevitra io. Google fotsiny.

- Ny iraka dia harato serivisy?
- Tsia, tsy mesh serivisy ny Envoy fa mpizara proxy. Azo ampiasaina izy io mba handaminana serivisy serivisy (sy ny maro hafa - proxy tanjona ankapobeny izany). Saingy amin'ny tenany ihany dia tsy serivisy serivisy izany.

- Network Service Mesh dia mesh serivisy?
- Tsia. Na dia eo aza ny anarana, ity dia tsy serivisy serivisy (ahoana no tianao ny fahagagana ara-barotra?).

— Hanampy amin'ny rafitra asynchronous reactive mifototra amin'ny filaharana hafatra ve ny mesh serivisy?
- Tsia, tsy hanampy anao ny mesh serivisy.

— Inona no harato serivisy tokony hampiasaiko?
- Linkerd, tsy misy atidoha.

- Mampalahelo ilay lahatsoratra! / Tonga soa ny mpanoratra!
— Mba zarao amin'ny namanao rehetra ny rohy mankany aminy mba ho hitan'izy ireo!

fankatelemana

Araka ny efa noeritreretinao avy amin'ny lohateny, ity lahatsoratra ity dia nahazo aingam-panahy avy amin'ny lahatsoratra mahafinaritra nataon'i Jay Kreps "Ny Log: Inona no tokony ho fantatry ny injeniera rindrambaiko rehetra momba ny abstraction mampiray ny angona tena izy" Nihaona tamin'i Jay aho folo taona lasa izay rehefa nitafatafa taminy tao amin'ny Linked In ary izy dia nanentana ahy hatramin'izay.

Na dia tiako aza ny miantso ny tenako ho "developer Linkerd", ny zava-misy dia izaho dia mpitahiry ny rakitra README.md amin'ny tetikasa iray. Ny Linkerd dia miasa anio tena, tena, tena много olona, ​​ary tsy ho nitranga ity tetikasa ity raha tsy nisy ny fandraisan'anjaran'ny vondrom-piarahamonina mahafinaritra misy mpandray anjara sy mpampiasa.

Ary farany, fisaorana manokana ho an'ny mpamorona ny Linkerd, Oliver Gould (primus inter pares), izay niara-niasa tamiko taona maro lasa izay, dia niditra an-tsehatra tao anatin'izany korontana rehetra izany tamin'ny alàlan'ny serivisy serivisy.

PS avy amin'ny mpandika teny

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com