Hauv tsab xov xwm no, kuv yuav sim ua qhov ntawd: muab kev ncaj ncees, qhov tob, tus kws tshaj lij qhia kev taw qhia rau kev pabcuam mesh. Kuv yuav teb ntau dua cov lus nug: "Nws yog dab tsi?", - tab sis kuj "Vim li cas?"Thiab "Vim li cas tam sim no?". Thaum kawg, kuv yuav sim piav qhia vim li cas (hauv kuv lub tswv yim) cov cuab yeej tshwj xeeb no tau ua rau muaj kev vwm hype, uas nyob rau hauv nws tus kheej yog ib zaj dab neeg nthuav.
Kuv yog leej twg?
Nyob zoo sawv daws! Kuv lub npe yog William Morgan. Kuv yog ib tug ntawm cov creators Linkerd - thawj qhov kev pabcuam mesh qhov project thiab qhov project uas yog los liam rau qhov tshwm sim ntawm lub sijhawm kev pabcuam mesh zoo li no ( thov txim nawb!). (Nco transl.: Los ntawm txoj kev, thaum kaj ntug ntawm qhov tshwm sim ntawm lo lus no, ntau tshaj 2,5 xyoo dhau los, peb twb tau txhais cov ntaub ntawv thaum ntxov ntawm tib tus sau hu ua "Dab tsi yog qhov kev pabcuam mesh thiab vim li cas kuv thiaj xav tau [rau daim ntawv thov huab nrog microservices]?".) kuv kuj coj Npauj yog ib qho pib uas tsim cov kev pabcuam txias mesh yam xws li Linkerd thiab Dhau dej.
Tej zaum koj yuav twv tau tias kuv muaj kev xav tsis zoo thiab kev xav txog qhov teeb meem no. Txawm li cas los xij, kuv yuav sim ua kom tsis ncaj ncees rau qhov tsawg kawg nkaus (nrog rau kev zam ntawm ib ntu: "Vim li cas thiaj muaj ntau tham txog kev pabcuam mesh?", - nyob rau hauv uas kuv yuav txawm li cas los qhia kuv lub tswv yim preconceived). Kuv kuj yuav ua qhov zoo tshaj plaws los ua cov lus qhia no raws li lub hom phiaj ua tau. Hauv cov piv txwv tshwj xeeb, kuv tsuas yog tso siab rau qhov kev paub dhau los ntawm Linkerd, thaum taw qhia qhov sib txawv (yog tias muaj) uas kuv paub hauv kev siv lwm hom kev pabcuam mesh.
Txawm tias tag nrho cov hype, cov kev pab cuam mesh yog structurally heev yooj yim. Nws tsuas yog ib pawg ntawm userspace proxies nyob "nrog rau" cov kev pabcuam (peb yuav tham me ntsis txog "ze" tom qab), ntxiv rau cov txheej txheem tswj. Cov neeg sawv cev raug hu ua ke cov ntaub ntawv dav hlau, thiab cov txheej txheem tswj tau hu ua tswj lub dav hlau. Cov ntaub ntawv dav hlau cuam tshuam hu xov tooj ntawm cov kev pabcuam thiab ua "txhua yam txawv" nrog lawv; lub dav hlau tswj, ntsig txog, tswj tus cwj pwm ntawm tus neeg sawv cev thiab muab kev nkag rau koj, i.e. tus neeg teb xov tooj, mus rau API, tso cai rau lub network los tswj thiab ntsuas tag nrho.
Lub npe no yog dab tsi? Qhov no yog TCP npe ntawm "Txheej Txheem 7-paub" qeb (piv txwv li "siv rau hauv tus account" 7th txheej ntawm OSI qauv) zoo li HAProxy thiab NGINX. Koj tuaj yeem xaiv lub npe rau koj nyiam; Linkerd siv lub npe Rust, tsis muaj npe linkerd-proxy. Peb tau muab tso ua ke tshwj xeeb rau kev pabcuam mesh. Lwm cov meshes nyiam lwm tus neeg sawv cev (Envoy yog ib qho kev xaiv ntau). Txawm li cas los xij, xaiv tus neeg sawv cev tsuas yog qhov teeb meem ntawm kev siv.
Cov proxy servers ua dab tsi? Obviously, lawv npe hu mus rau thiab los ntawm cov kev pab cuam (hais nruj me ntsis, lawv ua raws li proxies thiab thim rov qab proxies, tuav ob qho tib si nkag thiab tawm). Thiab lawv siv cov txheej txheem tshwj xeeb uas tsom rau kev hu ntawm lub kev pabcuam. Qhov no tsom rau kev khiav tsheb ntawm cov kev pabcuam yog qhov txawv ntawm qhov kev pabcuam mesh npe los ntawm, hais, API gateways lossis ingress proxies (tom kawg tsom rau kev hu tuaj rau hauv pawg los ntawm lub ntiaj teb sab nraud). (Nco tseg. txhais.: Rau kev sib piv ntawm Kubernetes Ingress controllers uas twb muaj lawm, ntau yam uas siv tus Envoy hais lawm, saib qhov no tsab xov xwm.)
Yog li, peb xam tawm cov ntaub ntawv dav hlau. Lub dav hlau tswj tau yooj yim dua: nws yog ib txheej ntawm cov khoom siv uas muab tag nrho cov tshuab uas cov ntaub ntawv dav hlau yuav tsum tau ua haujlwm hauv kev sib koom tes, suav nrog kev pabcuam nrhiav pom, TLS daim ntawv pov thawj, metrics aggregation, thiab lwm yam. Cov ntaub ntawv dav hlau qhia txog lub dav hlau tswj. nws tus cwj pwm; nyob rau hauv lem, lub dav hlau tswj muab ib qho API uas tso cai rau koj hloov thiab taug qab tus cwj pwm ntawm cov ntaub ntawv dav hlau tag nrho.
Hauv qab no yog daim duab ntawm lub dav hlau tswj thiab cov ntaub ntawv dav hlau hauv Linkerd. Raws li koj tuaj yeem pom, lub dav hlau tswj hwm suav nrog ntau yam sib txawv, suav nrog Prometheus piv txwv uas sau cov ntsuas ntsuas los ntawm cov servers npe, nrog rau lwm yam khoom xws li destination (Kev tshawb nrhiav kev pabcuam), identity (Certificate Authority, CA) thiab public-api (cov ntsiab lus kawg rau lub vev xaib thiab CLI). Hauv qhov sib piv, cov ntaub ntawv dav hlau yog qhov yooj yim linkerd-proxy ib sab ntawm daim ntawv thov piv txwv. Qhov no tsuas yog daim duab logic xwb; nyob rau hauv lub ntiaj teb tiag tiag xa mus, koj yuav muaj peb replicas ntawm txhua tus tswj lub dav hlau tivthaiv thiab pua pua los yog txhiab tus proxies nyob rau hauv cov ntaub ntawv dav hlau.
(Lub thawv xiav nyob rau hauv daim duab no sawv cev rau ciam teb ntawm Kubernetes pods. Koj tuaj yeem pom tias cov thawv nrog cov linkerd-proxy nyob rau hauv tib lub pods raws li daim ntawv thov ntim. Cov tswv yim no hu ua sidecar thawv.)
Kev pabcuam mesh architecture muaj ntau qhov cuam tshuam tseem ceeb. Ua ntej, txij li txoj haujlwm ntawm tus neeg sawv cev yog txhawm rau cuam tshuam kev hu xov tooj ntawm cov kev pabcuam, kev pabcuam mesh tsuas yog ua rau kev txiav txim siab yog tias koj daim ntawv thov raug tsim rau cov kev pabcuam. mesh tau siv nrog monoliths, tab sis qhov no yog kom meej meej redundant rau lub hom phiaj ntawm ib tug proxy, thiab nws functionality yog tsis zoo li xav tau.
Lwm qhov txiaj ntsig tseem ceeb yog qhov kev pabcuam mesh xav tau loj heev tus naj npawb ntawm cov neeg sawv cev. Qhov tseeb, Linkerd chains linkerd-proxy rau txhua qhov piv txwv ntawm txhua qhov kev pabcuam (lwm qhov kev siv ntxiv ib lub npe rau txhua qhov node / host / VM. Qhov ntawd yog qhov ntau heev). Xws li kev siv lub npe ntawm nws tus kheej muaj ntau yam teeb meem ntxiv:
Proxies nyob rau hauv cov ntaub ntawv dav hlau yuav tsum ceev, vim hais tias rau txhua qhov kev hu muaj ob peb hu rau lub npe: ib qho ntawm cov neeg siv khoom, ib qho ntawm cov neeg rau zaub mov.
Tsis tas li, tus neeg sawv cev yuav tsum yog me me ΠΈ lub teeb. Txhua tus yuav haus lub cim xeeb thiab CPU cov peev txheej, thiab qhov kev siv no yuav loj hlob raws li daim ntawv thov.
Koj yuav xav tau ib lub tshuab los siv thiab hloov kho ntau tus neeg sawv cev. Ua nws manually tsis yog ib qho kev xaiv.
Feem ntau, cov kev pabcuam mesh zoo li qhov no (tsawg kawg los ntawm tus noog lub qhov muag pom): koj siv ib pawg ntawm cov neeg siv khoom siv uas "ua ib yam dab tsi" nrog rau sab hauv, kev pabcuam kev pabcuam, thiab siv lub dav hlau tswj xyuas thiab tswj lawv.
Nws yog lub sijhawm rau lo lus nug "Vim li cas?"
Qhov kev pabcuam mesh yog dab tsi?
Rau cov neeg uas xub ntsib lub tswv yim ntawm kev pab cuam mesh, nws yog zam txim rau ib tug me ntsis nyob rau hauv awe. Qhov kev pabcuam mesh tsim txhais tau hais tias tsis yog nws yuav ua rau daim ntawv thov latency, tab sis nws tseem yuav haus cov peev txheej thiab yuav ntxiv ib pawg ntawm cov tshiab mechanisms nyob rau hauv lub infrastructure. Ua ntej koj teeb tsa qhov kev pabcuam mesh, thiab tom qab ntawd koj mam li pom koj tus kheej xav tau kev pabcuam ntau pua (yog tias tsis yog txhiab) ntawm tus neeg sawv cev. Lo lus nug yog, leej twg yuav tuaj yeem pab dawb rau qhov no?
Lo lus teb rau lo lus nug no muaj ob ntu. Ua ntej, cov nqi pauv uas cuam tshuam nrog kev xa cov neeg tuaj yeem tuaj yeem txo qis vim qee qhov kev hloov pauv tshwm sim hauv ecosystem (ntxiv rau qhov no tom qab).
Secondly, xws li ib tug ntaus ntawv yog ib tug zoo txoj kev los qhia ntxiv logic rau hauv lub system. Thiab tsis tsuas yog vim muaj ntau yam tshiab tuaj yeem ntxiv siv cov kev pabcuam mesh, tab sis kuj vim tias nws tuaj yeem ua tiav yam tsis muaj kev cuam tshuam nrog ecosystem. Nyob rau hauv qhov tseeb, tag nrho cov kev pab cuam mesh qauv yog raws li nram no postulate: nyob rau hauv ib tug multiservice system, tsis muaj teeb meem dab tsi ua cov kev pabcuam tus kheej, kev khiav tsheb nruab nrab ntawm lawv yog qhov zoo tshaj plaws taw tes rau ntxiv functionality.
* Los ntawm Linkerd qhov kev xav, gRPC xyaum tsis txawv ntawm HTTP / 2: nws tsuas yog siv protobuf hauv kev them nyiaj. Los ntawm tus tsim tawm txoj kev xav, ob yam no, ntawm chav kawm, txawv.
Ntau yam ntawm cov txheej txheem no ua haujlwm ntawm qib thov (li no "L7 npe"). Piv txwv li, yog tias kev pabcuam Foo ua rau HTTP hu rau kev pabcuam Bar, qhov linkerd-proxy ntawm Foo sab tuaj yeem ntse thauj khoom-sib npaug thiab kev hu xov tooj los ntawm Foo mus rau Bar piv txwv raws li pom latency; nws tuaj yeem rov hais dua yog tias tsim nyog (thiab yog tias nws tsis muaj peev xwm); nws tuaj yeem sau cov lej teb thiab sijhawm sijhawm, thiab lwm yam. Ib yam li ntawd, tus linkerd-proxy ntawm Bar sab tuaj yeem tsis lees txais qhov kev thov yog tias nws tsis raug tso cai lossis yog tias qhov kev thov txwv dhau lawm; tuaj yeem kho qhov ncua ntawm nws qhov, thiab lwm yam.
Proxies tuaj yeem "ua ib yam dab tsi" ntawm qib kev sib txuas thiab. Piv txwv li, tus linkerd-proxy ntawm Foo sab tuaj yeem pib qhov kev sib txuas TLS, thiab tus linkerd-proxy ntawm Bar sab tuaj yeem txiav nws, thiab ob tog tuaj yeem txheeb xyuas ib leeg daim ntawv pov thawj TLS *. Qhov no tsis yog tsuas yog encryption ntawm cov kev pabcuam, tab sis kuj yog ib txoj hauv kev ruaj ntseg los txheeb xyuas cov kev pabcuam: Foo thiab Bar tuaj yeem "ua pov thawj" tias lawv yog leej twg lawv hais tias lawv yog.
* "Tus phooj ywg ntawm tus phooj ywg" txhais tau hais tias tus neeg siv khoom daim ntawv pov thawj kuj tau txheeb xyuas (kev sib tw TLS). Nyob rau hauv "classic" TLS, piv txwv li, nruab nrab ntawm ib tug browser thiab ib tug neeg rau zaub mov, daim ntawv pov thawj ntawm tsuas yog ib sab (tus neeg rau zaub mov) feem ntau yog txheeb xyuas.
Txawm hais tias lawv ua haujlwm ntawm qhov kev thov lossis kev sib txuas, nws yog ib qho tseem ceeb uas yuav tsum tau hais meej tias txhua qhov kev pabcuam mesh nta kev ua haujlwm tus cwj pwm. Linkerd tsis tuaj yeem hloov pauv cov semantics ntawm payload, xws li ntxiv cov teb rau JSON fragment lossis hloov pauv rau protobuf. Peb yuav tham txog qhov tseem ceeb no tom qab thaum peb tham txog ESB thiab nruab nrab.
Qhov no yog cov txheej txheem uas cov kev pabcuam mesh muaj. Cov lus nug tshwm sim: vim li cas ho tsis coj ncaj qha rau hauv daim ntawv thov? Thiab yog vim li cas mess nrog ib tug proxy txhua?
Vim li cas ib qho kev pabcuam mesh yog ib lub tswv yim zoo
Thaum lub peev xwm ntawm cov kev pabcuam mesh yog qhov ntxim nyiam, nws tus nqi tseem ceeb tsis yog dag hauv cov yam ntxwv. Thaum kawg peb Tau siv lawv ncaj qha rau hauv daim ntawv thov (tom qab peb yuav pom tias qhov no yog lub hauv paus ntawm kev pabcuam mesh). Txhawm rau muab tso rau hauv ib kab lus, tus nqi ntawm kev pabcuam mesh yog: nws muab kev ua haujlwm tseem ceeb rau kev khiav haujlwm niaj hnub server software hauv qhov sib xws, pawg-wide, daim ntawv thov-code-agnostic yam.
Cia peb tsom xam qhov kev thov no.
Β«Kev ua haujlwm tseem ceeb rau kev ua haujlwm niaj hnub Server Software". Yog tias koj tab tom tsim ib daim ntawv thov kev lag luam server txuas nrog rau pej xeem hauv internet uas lees txais kev thov los ntawm lub ntiaj teb sab nraud thiab teb rau lawv hauv lub sijhawm luv luv - piv txwv li, daim ntawv thov web, API server, thiab feem ntau ntawm lwm cov ntawv thov niaj hnub no - thiab Yog hais tias koj siv nws raws li ib tug txheej ntawm cov kev pab cuam uas interact synchronously nrog ib leeg, thiab yog hais tias koj nyob twj ywm upgrading no software, ntxiv tshiab nta, thiab yog hais tias koj raug yuam kom ua kom lub kaw lus no nyob rau hauv kev ua hauj lwm mob thaum lub sij hawm hloov kho - nyob rau hauv cov ntaub ntawv no, zoo siab nrog rau , koj tab tom tsim software server niaj hnub. Thiab tag nrho cov yam ntxwv zoo uas tau teev tseg saum toj no tau dhau los ua qhov tseem ceeb rau koj. Daim ntawv thov yuav tsum txhim khu kev qha, ruaj ntseg, thiab koj yuav tsum tuaj yeem pom tias nws ua dab tsi. Nws yog cov lus nug no uas cov kev pabcuam mesh pab daws tau.
(Okay, kuv txoj kev ntseeg tias txoj hauv kev no yog txoj hauv kev niaj hnub los tsim cov software server tau nkag mus rau hauv kab lus dhau los. Lwm tus nyiam tsim monoliths, "reactive microservices" thiab lwm yam uas tsis poob rau hauv lub ntsiab lus saum toj no. Cov neeg no tej zaum muaj kev xav. uas txawv ntawm kuv, thiab nyob rau hauv lem, kuv ntseeg hais tias lawv yog "tsis ncaj ncees lawm" - txawm nyob rau hauv txhua rooj plaub, cov kev pab cuam mesh tsis heev pab tau rau lawv).
Β«Uniform rau tag nrho pawg". Cov yam ntxwv muab los ntawm kev pabcuam mesh tsis yog qhov tseem ceeb xwb. Lawv siv rau txhua qhov kev pabcuam hauv daim ntawv thov, tsis hais hom lus twg lawv tau sau rau hauv, lub hauv paus twg lawv siv, leej twg sau lawv, lawv siv li cas, thiab tag nrho lwm cov subtleties ntawm lawv txoj kev loj hlob thiab siv.
Β«Daim ntawv thov code ywj siab". Thaum kawg, cov kev pabcuam mesh tsis tsuas yog muab kev ua haujlwm zoo ib yam thoob plaws tag nrho pawg, nws ua li ntawd hauv txoj hauv kev uas tsis tas yuav hloov kho daim ntawv thov. Lub hauv paus tseem ceeb ntawm kev ua haujlwm ntawm kev pabcuam mesh, suav nrog cov haujlwm ntawm kev teeb tsa, hloov kho, kev khiav haujlwm, kev tswj hwm, thiab lwm yam, yog nyob ntawm theem platform thiab tsis muaj kev ywj pheej ntawm daim ntawv thov. Daim ntawv thov tuaj yeem hloov pauv yam tsis muaj kev cuam tshuam rau kev pabcuam mesh. Nyob rau hauv lem, cov kev pabcuam mesh tuaj yeem hloov pauv yam tsis muaj kev cuam tshuam rau daim ntawv thov.
Cov kev pabcuam mesh puas daws tau tag nrho kuv cov teebmeem?
Yog lawm. Kuv txhais tau tias, tsis muaj!
Saib ntawm peb chav kawm ntawm cov yam ntxwv uas tau teev tseg saum toj no - kev ntseeg siab, kev ruaj ntseg, thiab kev saib xyuas - nws tau pom tseeb tias qhov kev pabcuam mesh tsis yog ib qho kev daws teeb meem rau ib qho ntawm cov teeb meem no. Txawm hais tias Linkerd tuaj yeem xa rov qab thov dua (yog tias nws paub tias lawv tsis muaj peev xwm), nws tsis nyob hauv txoj haujlwm los txiav txim siab txog dab tsi yuav rov qab mus rau tus neeg siv yog tias qhov kev pabcuam thaum kawg poob qis - qhov kev txiav txim siab yuav tsum tau ua los ntawm daim ntawv thov. Linkerd tuaj yeem khaws cov txheeb cais ntawm kev thov ua tiav, tab sis nws tsis tuaj yeem saib rau hauv cov kev pabcuam thiab muab nws cov kev ntsuas sab hauv - daim ntawv thov yuav tsum muaj cov cuab yeej zoo li no. Thiab thaum Linkerd muaj peev xwm hosting mTLS, tag nrho-fledged kev ruaj ntseg daws xav tau ntau ntxiv.
Ib pawg ntawm cov yam ntxwv hauv cov cheeb tsam no muab los ntawm cov kev pabcuam mesh muaj feem xyuam nrog platform nta. Los ntawm qhov no kuv txhais tau tias ua haujlwm uas:
Kev ywj pheej ntawm kev lag luam logic. Txoj kev uas hu rau histograms yog tsim los ntawm Foo thiab Bar yog tsis muaj kev ywj pheej kiag li vim li cas Foo hu Bar.
Yooj yim rau siv kom raug. Hauv Linkerd, kev rov ua dua yog parameterized nrog txhua yam ntawm cov khoom zoo nkauj xws li rov sim dua pob nyiaj siv. (rov sim dua pob nyiaj siv), txij li qhov yooj yim-minded mus kom ze rau kev ua raws li tej yam no yuav muaj tseeb ua rau qhov tshwm sim ntawm qhov hu ua "avalanche ntawm kev thov" (retry cua daj cua dub) thiab lwm yam teeb meem tshwj xeeb rau kev faib tshuab.
Vim tias cov yam ntxwv no tau siv los ntawm cov txheej txheem npe (thiab tsis yog ntawm daim ntawv thov txheej), cov kev pabcuam mesh nthuav tawm lawv ntawm platform, tsis siv. Yog li, nws tsis muaj teeb meem dab tsi cov kev pabcuam raug sau rau hauv, lub hauv paus twg lawv siv, leej twg sau lawv thiab vim li cas. Proxies ua haujlwm dhau ntawm tag nrho cov ntsiab lus no, thiab lub hauv paus tseem ceeb ntawm kev ua haujlwm no, suav nrog cov dej num ntawm kev teeb tsa, hloov kho, kev khiav hauj lwm, kev tswj hwm, thiab lwm yam, tsuas yog nyob ntawm theem platform.
Vim li cas qhov kev pabcuam mesh tau nrov tam sim no?
Tej zaum koj yuav xav tsis thoob tam sim no: OK, yog tias qhov kev pabcuam mesh zoo heev, vim li cas peb tsis tau pib siv ntau lab tus neeg sawv cev ntawm pawg kaum xyoo dhau los?
Muaj lus teb banal rau lo lus nug no: kaum xyoo dhau los txhua leej txhua tus ua monoliths, thiab tsis muaj leej twg xav tau kev pab mesh. Qhov no muaj tseeb, tab sis hauv kuv lub tswv yim, cov lus teb no tsis nco qab lub ntsiab lus. Txawm tias kaum xyoo dhau los, lub tswv yim ntawm microservices yog txoj kev cog lus los tsim cov txheej txheem loj tau sib tham thiab siv hauv cov tuam txhab xws li Twitter, Facebook, Google thiab Netflix. Kev nkag siab dav dav - tsawg kawg hauv qhov chaw ntawm kev lag luam uas kuv tau ntsib nrog - yog tias microservices yog "txoj kev raug" los tsim cov tshuab loj, txawm tias nws nyuaj heev.
Tau kawg, txawm hais tias muaj cov tuam txhab siv microservices kaum xyoo dhau los, lawv tsis tau lo proxies nyob txhua qhov chaw lawv tuaj yeem tsim cov kev pabcuam mesh. Txawm li cas los xij, yog tias koj saib ze, lawv tau ua qee yam zoo sib xws: ntau lub tuam txhab tau yuam kom siv lub tsev qiv ntawv tshwj xeeb sab hauv rau kev sib txuas lus (qee zaum hu ua lub tsev qiv ntawv rog, fat client Library).
Netflix muaj Hysterix, Google muaj Stubby, Twitter muaj lub tsev qiv ntawv Finagle. Finagle, piv txwv li, yog qhov yuav tsum tau ua rau txhua qhov kev pabcuam tshiab hauv Twitter. Nws tuav ob tus neeg siv khoom thiab cov neeg rau zaub mov sab ntawm kev sib txuas, tso cai rau kev thov rov ua dua, txhawb kev thov routing, thauj khoom ntsuas, thiab ntsuas ntsuas. Nws muab cov txheej txheem zoo ib yam ntawm kev ntseeg siab thiab kev saib xyuas thoob plaws tag nrho Twitter pawg, txawm tias qhov kev pabcuam tau ua dab tsi. Tau kawg, nws tsuas yog ua haujlwm rau JVM cov lus thiab tau ua raws li tus qauv programming uas yuav tsum tau siv rau tag nrho daim ntawv thov. Txawm li cas los xij, nws cov haujlwm ua haujlwm yuav luag zoo ib yam li cov kev pabcuam mesh. (Qhov tseeb, thawj version ntawm Linkerd tsuas yog Finagle qhwv hauv daim ntawv tso cai.)
Yog li, kaum xyoo dhau los tsis yog tsuas yog microservices xwb, tab sis kuj tshwj xeeb proto-service-mesh cov tsev qiv ntawv uas daws cov teeb meem tib yam uas cov kev pabcuam mesh daws tau niaj hnub no. Txawm li cas los xij, kev pabcuam mesh nws tus kheej tsis muaj nyob thaum ntawd. Yuav tsum muaj kev hloov pauv ua ntej nws tshwm sim.
Thiab qhov no yog qhov uas cov lus teb tob dua, muab zais rau hauv lwm qhov kev hloov pauv uas tau tshwm sim hauv 10 xyoo dhau los: tau muaj qhov poob qis hauv tus nqi ntawm kev xa cov microservices. Cov tuam txhab hais saum toj no uas siv microservices ib xyoo caum dhau los - Twitter, Netflix, Facebook, Google - yog cov tuam txhab loj loj thiab cov peev txheej loj. Lawv tsis tsuas yog xav tau, tab sis kuj muaj peev xwm tsim, xa tawm, thiab ua haujlwm loj raws li microservices. Lub zog thiab kev siv zog uas Twitter engineers tau muab tso rau hauv kev txav los ntawm monolithic mus rau microservices mus kom ze yog amazing. (Honestly, raws li yog qhov tseeb tias nws ua haujlwm.) Hom kev tsim kho vaj tse zoo li no yog qhov ua tsis tau rau cov tuam txhab me.
Cia peb txav mus rau tam sim no. Niaj hnub no muaj cov startups uas qhov piv ntawm microservices rau developers yog 5: 1 (los yog txawm 10:1), thiab tsis tas li ntawd, lawv ua tiav nrog lawv! Yog tias qhov pib ntawm 5 tus neeg tuaj yeem ua haujlwm 50 microservices yam tsis muaj kev cuam tshuam, ces ib yam dab tsi kom meej meej txo tus nqi ntawm lawv cov kev siv.
1500 microservices hauv Monzo; txhua kab yog txoj cai network uas tso cai rau kev khiav tsheb
Kev txo qis hauv tus nqi ntawm kev khiav hauj lwm microservices yog qhov tshwm sim ntawm ib qho txheej txheem: kev loj hlob ntawm cov ntim khoom ΠΈ cov kws ntaus suab paj nruag. Qhov no yog qhov tseeb cov lus teb tob rau cov lus nug ntawm dab tsi tau pab rau qhov tshwm sim ntawm kev pabcuam mesh. Tib lub tshuab ua rau ob qho tib si kev pabcuam mesh thiab microservices txaus nyiam: Kubernetes thiab Docker.
Vim li cas? Zoo, Docker daws ib qho teeb meem loj - qhov teeb meem ntawm kev ntim khoom. Los ntawm ntim ib daim ntawv thov thiab nws (tsis yog network) lub sijhawm ua haujlwm nyob rau hauv lub thawv, Docker hloov daim ntawv thov mus rau hauv chav tsev fungible uas tuaj yeem tuav thiab khiav txhua qhov chaw. Nyob rau tib lub sijhawm, nws ua haujlwm yooj yim heev. ntau yam lus pawg: Txij li thaum lub thawv yog lub atomic unit ntawm kev tua, nws tsis muaj teeb meem dab tsi hauv, txawm tias nws yog JVM, Node, Go, Python, lossis Ruby daim ntawv thov, rau kev xa tawm thiab kev ua haujlwm. Koj tsuas yog khiav nws thiab qhov ntawd yog nws.
Kubernetes coj txhua yam mus rau qib tom ntej. Tam sim no hais tias muaj ib pawg ntawm "cov khoom siv tau" thiab ntau lub tshuab ua haujlwm rau lawv, muaj qhov xav tau rau cov cuab yeej uas tuaj yeem phim lawv rau ib leeg. Hauv kev txiav txim siab dav dav, koj muab Kubernetes ntau lub thawv thiab ntau lub tshuab, thiab nws phim lawv nrog ib leeg (ntawm chav kawm, qhov no yog cov txheej txheem dynamic thiab tas li hloov pauv: cov thawv tshiab txav mus los, cov tshuab pib thiab nres, thiab lwm yam. Txawm li cas los xij, Kubernetes siv tag nrho cov no rau hauv tus account).
Thaum Kubernetes tau teeb tsa, lub sijhawm nws yuav siv los siv thiab ua haujlwm ib qho kev pabcuam tsis txawv ntau ntawm tus nqi xa mus thiab ua haujlwm kaum kev pabcuam (qhov tseeb, nws yuav luag zoo ib yam rau 100 cov kev pabcuam). Ntxiv rau cov thawv no raws li lub tshuab ntim khoom uas txhawb nqa kev siv ntau yam lus, thiab koj muaj ib tuj ntawm cov ntawv thov tshiab siv los ua microservices sau ua ntau hom lus, tsuas yog hom ntawm ib puag ncig uas cov kev pabcuam mesh yog qhov haum rau.
Yog li ntawd, peb tuaj rau cov lus teb rau lo lus nug ntawm yog vim li cas lub tswv yim ntawm ib tug kev pab cuam mesh tau ua nrov tam sim no: lub uniformity uas Kubernetes muab rau cov kev pab cuam yog siv ncaj qha rau cov hauj lwm ua hauj lwm uas tig mus rau cov kev pab cuam mesh. Koj ntim cov neeg sawv cev rau hauv cov thawv ntim khoom, muab Kubernetes txoj haujlwm los tuav lawv txhua qhov chaw, thiab voila! Ntawm qhov tso zis, koj tau txais kev pabcuam mesh, thaum Kubernetes tswj tag nrho cov tshuab ntawm nws qhov kev xa tawm. (tsawg kawg los ntawm qhov pom noog qhov muag. Tau kawg, muaj ntau yam nuances rau cov txheej txheem no.)
Los xaus: vim li cas qhov kev pabcuam mesh tau nrov tam sim no thiab tsis yog kaum xyoo dhau los yog Kubernetes thiab Docker tsis tau nce ntxiv. xav tau nyob rau hauv nws, simplifying qhov kev siv ntawm daim ntaub ntawv raws li teev ntawm multilingual microservices, tab sis kuj ho txo. tus nqi rau nws txoj haujlwm los ntawm kev muab cov txheej txheem rau kev xa tawm thiab tswj cov chaw nres tsheb proxy chaw ua si.
Vim li cas thiaj muaj ntau tham txog kev pabcuam mesh?
Kev tshawb nrhiav "kev pabcuam mesh" yuav tig mus ua ib pawg ntawm cov khoom siv rov ua dua tshiab, cov ntsiab lus qis-calorie, khib cov haujlwm, thiab kaleidoscope ntawm kev cuam tshuam tsim nyog ntawm lub suab nrov. Txhua yam kev siv thev naus laus zis tshiab muaj qhov no, tab sis nyob rau hauv cov ntaub ntawv ntawm kev pabcuam mesh, qhov teeb meem tshwj xeeb yog mob. Vim li cas?
Zoo, nws yog ib feem ntawm kuv qhov txhaum. Kuv tau ua qhov zoo tshaj plaws los txhawb Linkerd thiab cov kev pabcuam mesh ntawm txhua lub sijhawm, los ntawm suav tsis txheeb blog posts thiab cov ntawv zoo li no. Tab sis kuv tsis muaj zog li ntawd. Txhawm rau teb cov lus nug no tiag tiag, peb yuav tsum tham me ntsis txog qhov xwm txheej dav dav. Thiab nws tsis tuaj yeem tham txog nws yam tsis tau hais txog ib qhov project: Istio yog qhov qhib qhov kev pabcuam mesh tsim los ntawm Google, IBM thiab Lyft.
(Cov peb lub tuam txhab muaj lub luag haujlwm sib txawv heev: Lyft txoj kev koom tes zoo li txwv rau lub npe ib leeg; lawv sau Envoy tab sis tsis siv lossis koom nrog kev txhim kho Istio. IBM koom nrog kev txhim kho Istio thiab siv nws. Google hnyav heev. koom nrog hauv kev txhim kho Istio, tab sis raws li kuv tuaj yeem qhia, tsis siv nws.)
Qhov project Istio yog qhov tseem ceeb rau ob yam. Ua ntej, nws yog qhov kev lag luam loj loj uas Google, tshwj xeeb, muab tso rau hauv nws qhov kev tshaj tawm. Kuv kwv yees tias tam sim no cov neeg feem coob paub txog cov kev pabcuam mesh lub tswv yim thawj zaug tau kawm txog nws ua tsaug rau Istio. Qhov thib ob feature yog qhov phem npaum li cas Istio tau txais. Hauv qhov teeb meem no, kuv, pom tseeb, yog ib tus neeg txaus siab, tab sis sim ua kom lub hom phiaj kom ua tau, kuv tseem pab tsis tau tab sis Markheevtsis zootus cwj pwm, tsis heev tshwj xeeb (txawm hais tias tsis tshwj xeeb: systemd los rau hauv siab, sib pivtau uatwbpheej...) rau qhov Open Source project.
(Hauv kev xyaum, Istio zoo li muaj teeb meem tsis yog nrog kev nyuaj thiab UX nkaus xwb, tab sis kuj nrog kev ua tau zoo. Piv txwv li, thaum lub sijhawm Linkerd kev ntsuas kev ua tau zooua los ntawm lwm tus neeg sab nrauv, cov kws tshaj lij pom cov xwm txheej uas Istio tus Tsov tus tw latency yog 100 npaug siab dua li ntawm Linkerd, nrog rau cov xwm txheej uas tsis muaj peev txheej, thaum Linkerd txuas ntxiv ua haujlwm tau zoo, thiab Istio tau nres ua haujlwm tag nrho.)
Tawm ntawm kuv qhov kev xav txog vim li cas qhov no tshwm sim, Kuv ntseeg tias qhov kev tawm tsam tawm ntawm qhov kev pabcuam mesh yog vim muaj kev koom tes ntawm Google. Namely, ua ke ntawm peb yam nram qab no: