novērojamībamikropakalpojumimežizstrādeuzraudzībamākoņinfrastruktūraizkliedētās sistēmas
Novērojamība mikropakalpojumos salīdzinājumā ar monolītās sistēmas reģistrēšanu
Mikropakalpojumu novērojamība piedāvā izkliedētu izsekošanu, metriku un žurnālus neatkarīgos pakalpojumos, savukārt monolītā reģistrēšana koncentrējas uz centralizētiem ierakstiem no vienas lietojumprogrammas. Pareizā izvēle ir atkarīga no sistēmas sarežģītības, mēroga un tā, cik daudz ieskatu komandām ir nepieciešams pakalpojumu mijiedarbībā.
Iezīmes
Mikropakalpojumu novērojamība apstrādā pēdas, metrikas un žurnālus kā vienlīdzīgus signālus, savukārt monolītā reģistrēšana gandrīz pilnībā balstās uz teksta ierakstiem.
Izplatītā izsekošana ļauj komandām precīzi noteikt, kurš konkrētais pakalpojums izraisīja kļūmi, ar ko tradicionālajiem žurnāliem ir grūtības pārvarēt pakalpojumu robežas.
Monolītās mežizstrādes uzsākšanai ir nepieciešams daudz mazāk infrastruktūras un zināšanu, tāpēc tā ir pievilcīga mazākām vai mantotām sistēmām.
Novērojamība palielinās līdz ar sistēmas sarežģītību, savukārt monolīta reģistrēšana mēdz pasliktināties, pieaugot lietojumprogrammas lielumam un datplūsmai.
Kas ir Novērojamība mikropakalpojumos?
Daudzdimensionāla pieeja, kas apvieno izsekošanas datus, metrikas un žurnālus, lai izprastu uzvedību izkliedētos, neatkarīgi izvietotos pakalpojumos.
Balstīts uz trim pīlāriem: izkliedēta izsekošana, metrika un strukturēta reģistrēšana visos pakalpojumos
Izmanto korelācijas ID, lai sekotu vienam pieprasījumam, tam pārejot starp desmitiem vai simtiem pakalpojumu.
Datu vākšanai un vizualizācijai izmanto tādus rīkus kā OpenTelemetry, Jaeger, Prometheus un Grafana.
Izstrādāts īslaicīgas infrastruktūras apstrādei, kurā konteineri un pākstis pastāvīgi griežas augšup un lejup
Ļauj SRE komandām atklāt anomālijas, izmantojot pakalpojumu līmeņa mērķus un kļūdu budžetus
Kas ir Monolītās sistēmas reģistrēšana?
Tradicionāla pieeja, kurā viena lietojumprogramma raksta žurnāla ierakstus centralizētos failos vai vienā žurnālu krātuvē atkļūdošanai un auditēšanai.
Žurnāli tiek ģenerēti no vienas kodbāzes, kas darbojas kā viens process, tādējādi pieprasījumu ceļus ir viegli izsekot
Parasti izmanto uz failiem balstītu reģistrēšanu, sistēmas žurnālu (syslog) vai vienkāršus žurnālu apkopotājus, piemēram, Logback vai log4j.
Atkļūdošana parasti ietver žurnālfailu pārskatīšanu vai atsevišķas ELK steka instances vaicāšanu.
Veiktspējas izmaksas ir minimālas, jo reģistrēšana notiek vienā izpildlaika vidē
Vieglāk ieviest korelāciju, izmantojot pavedienu lokālo kontekstu vai vienkāršus sesijas ID
Salīdzinājuma tabula
Funkcija
Novērojamība mikropakalpojumos
Monolītās sistēmas reģistrēšana
Arhitektūra
Izplatīts daudzos pakalpojumos
Viena vienota lietojumprogramma
Primārie datu tipi
Izsekošana, metrika un žurnāli
Galvenokārt žurnāli, dažreiz metrikas
Pieprasījuma izsekošana
Izplatīta izsekošana ar aptverošo kontekstu
Pavedienu lokālā vai sesiju bāzes izsekošana
Instrumentu sarežģītība
Augsts — nepieciešama instrumentācija visos pakalpojumos
Zems — pietiek ar vienu žurnāla cauruļvadu
Mērogojamība
Horizontāli mērogojas ar pakalpojumu skaitu
Ierobežota ar vienas lietojumprogrammas caurlaidspēju
Neveiksmes diagnoze
Norāda, kurš pakalpojums izraisīja latentumu vai kļūdas
Vieglāk viena procesa ietvaros, grūtāk robežās
Uzglabāšanas prasības
Liela apjoma, bieži vien laika rindu datubāzes
Vidēji, parasti plakani faili vai viens indekss
Ieviešanas izmaksas
Ievērojamas sākotnējās investīcijas
Zemākas sākotnējās iestatīšanas izmaksas
Detalizēts salīdzinājums
Galvenā filozofija un pieeja
Mikropakalpojumu novērojamība pieņem, ka nav iespējams iepriekš paredzēt katru kļūmes režīmu, tāpēc tiek apkopoti pietiekami dažādi telemetrijas dati, lai pēc problēmu rašanās uzdotu jaunus jautājumus. Monolītā reģistrēšana izmanto vienkāršāku pieeju: tiek apkopoti pietiekami daudz teksta ierakstu, lai rekonstruētu notikušo pieprasījuma laikā. Pirmā pieeja žurnālus traktē kā vienu signālu starp daudziem, bet otrā pieeja žurnālus traktē kā primāro signālu sistēmas uzvedības izpratnei.
Kļūdu novēršana un cēloņu analīze
Kad mikropakalpojumu iestatījumos rodas problēmas, inženieri pāriet uz izkliedētajām trasēm, lai precīzi redzētu, kurš pakalpojums radīja latentumu vai atgrieza kļūdu. Monolītā izstrādātāji parasti atver žurnālfailu, meklē laika zīmogu vai lietotāja ID un izlasa secīgus ierakstus. Monolīta ceļš šķiet intuitīvāks, taču tas nedarbojas, kad sistēma kļūst pietiekami liela, ka viens žurnālfails kļūst apgrūtinošs.
Instrumenti un infrastruktūra
Novērojamības steki parasti apvieno instrumentācijas bibliotēku, piemēram, OpenTelemetry, izsekošanas aizmugursistēmu, piemēram, Jaeger vai Tempo, metriku krātuvi, piemēram, Prometheus, un informācijas paneļa slāni, piemēram, Grafana. Monolītai reģistrēšanai bieži vien ir nepieciešams daudz mazāk — reģistrēšanas ietvars, žurnālu nosūtītājs, piemēram, Filebeat, un varbūt ELK vai OpenSearch klasteris. Mikropakalpojumu rīku ķēdei ir nepieciešama lielāka operacionālā brieduma pakāpe, taču tā atmaksājas, kad sistēmas kļūst sarežģītas.
Veiktspēja un pieskaitāmās izmaksas
Izkliedētā izsekošana palielina tīkla lēcienus un serializācijas izmaksas, jo posmi tiek izplatīti pāri pakalpojumu robežām, lai gan izlases stratēģijas ļauj pārvaldīt papildu izmaksas. Monolītā reģistrēšana notiek tuvu lietojumprogrammas procesam, tāpēc veiktspējas kritums galvenokārt rodas diska ievades/izvades un žurnāla formatēšanas dēļ. Abas pieejas var pasliktināt veiktspēju, ja reģistrēšana ražošanas vidē tiek atstāta detalizētā līmenī, taču mikropakalpojumu vidēm parasti ir nepieciešama rūpīgāka pielāgošana.
Kad katram ir jēga
Novērojamība izceļas vidēs ar biežu izvietošanu, poliglotiem pakalpojumiem un komandām, kurām nepieciešama neatkarīga komponentu īpašniecība. Monolītā reģistrēšana joprojām ir piemērota mazākām lietojumprogrammām, mantotajām sistēmām vai scenārijiem, kuros atbilstība normatīvajiem aktiem prasa vienkāršas audita takas. Daudzas organizācijas faktiski izmanto abus — saglabā tradicionālos žurnālus atbilstības nodrošināšanai, vienlaikus pievienojot novērošanas rīkus inženiertehniskai ieskatu iegūšanai.
Priekšrocības un trūkumi
Novērojamība mikropakalpojumos
Iepriekšējumi
+Pilnīga pieprasījuma redzamība
+Daudzsignālu korelācija
+Mērogi ar sarežģītību
+Nodrošina SRE praksi
Ievietots
−Augstākas instrumentu izmaksas
−Stāvāka mācīšanās līkne
−Vairāk krātuves izmaksu
−Nepieciešama instrumentācijas disciplīna
Monolītās sistēmas reģistrēšana
Iepriekšējumi
+Vienkārši ieviest
+Zemākas ekspluatācijas izmaksas
+Pazīstams lielākajai daļai komandu
+Vienkārša audita taka
Ievietots
−Ierobežota ieskatu starppakalpojumu jomā
−Slikti pielāgojas izmēram
−Viena kļūmes punkta
−Grūtāk korelēt notikumus
Biežas maldības
Mīts
Ar žurnāliem vien pietiek, lai atkļūdotu jebkuru sistēmu.
Realitāte
Žurnāli labi darbojas monolītos, bet zaudē efektivitāti izkliedētās sistēmās, kur viens pieprasījums skar daudzus pakalpojumus. Metrika un izsekošanas dati aizpilda nepilnības, parādot modeļus un cēloņsakarības, ko žurnāli nevar viegli atklāt.
Mīts
Novērojamība ir tikai iedomāta reģistrēšana ar jaunu nosaukumu.
Realitāte
Novērojamība ir plašāka disciplīna, kas ietver žurnālus, bet pievieno arī metrikas un pēdas kā pirmās klases signālus. Mērķis mainās no ierakstu meklēšanas uz patvaļīgu jautājumu uzdošanu par sistēmas darbību, neizplatot jaunu kodu.
Mīts
Monolītām sistēmām nav nepieciešama novērojamība.
Realitāte
Pat atsevišķas lietojumprogrammas gūst labumu no metrikas, izsekošanas datiem un strukturētiem žurnāliem, kad tie sasniedz jēgpilnu mērogu. Novērojamība ir saistīta ar sistēmas stāvokļa izpratni, kas attiecas neatkarīgi no arhitektūras.
Mīts
Izplatītā izsekošana ir pārāk dārga lietošanai ražošanā.
Realitāte
Mūsdienu izsekošanas sistēmas izmanto uz lietotāju galviņu vai asti balstītu izlasi, lai iegūtu reprezentatīvu pieprasījumu apakškopu. Tas samazina papildu slodzi, vienlaikus nodrošinot pietiekami daudz datu, lai diagnosticētu lielāko daļu problēmu.
Mīts
Pāreja uz mikropakalpojumiem automātiski uzlabo novērojamību.
Realitāte
Mikropakalpojumi apgrūtina novērojamību, nevis atvieglo to, jo tagad ir jāuzrauga vairāk kustīgu daļu. Bez atbilstošas instrumentācijas un rīkiem redzamība faktiski samazinās, salīdzinot ar labi instrumentētu monolītu.
Bieži uzdotie jautājumi
Kāda ir atšķirība starp novērojamību un reģistrēšanu?
Reģistrēšana ir viens no telemetrijas datu veidiem — diskrēti notikumi, ko reģistrē lietojumprogramma. Novērojamība ir sistēmas īpašība, kas apraksta, cik labi jūs varat izprast tās iekšējo stāvokli no ārējām izvades datiem. Novērojamība izmanto žurnālus, metrikas un izsekošanas datus kopā, savukārt reģistrēšana koncentrējas tikai uz teksta ierakstiem.
Kāpēc mikropakalpojumiem ir nepieciešama izkliedēta izsekošana?
Viena lietotāja pieprasījums mikropakalpojumu arhitektūrā var tikt izpildīts, izmantojot piecus, desmit vai vairāk pakalpojumus. Izplatītā izsekošana seko šim pieprasījumam pāri pakalpojumu robežām, izmantojot korelācijas ID un posmus, ļaujot redzēt, kur tika patērēts laiks un kur radās kļūmes.
Vai mikropakalpojumu vidē var izmantot tradicionālo reģistrēšanu?
Jā, bet bez koplietotiem identifikatoriem žurnālu korelācija starp pakalpojumiem kļūst sarežģītāka. Lielākā daļa komandu pievieno strukturētu reģistrēšanu ar korelācijas ID, pēc tam virsū slāņu izsekošanu un metriku, lai iegūtu pilnīgu priekšstatu par sistēmas darbību.
Kādi ir trīs novērojamības pīlāri?
Trīs pīlāri ir žurnāli, metrika un izsekošanas dati. Žurnāli fiksē atsevišķus notikumus, metrika laika gaitā reģistrē skaitliskus datus, un izsekošanas dati parāda pieprasījuma ceļu izkliedētās sistēmās. Kopā tie ļauj komandām atbildēt uz jautājumiem par veiktspēju, kļūdām un lietotāja pieredzi.
Vai OpenTelemetry ir novērojamības standarts?
OpenTelemetry ir kļuvis par faktisko instrumentācijas standartu lielākajā daļā valodu un platformu. Tas apvienoja OpenTracing un OpenCensus projektus, un tagad to atbalsta Cloud Native Computing Foundation ar plašu pārdevēju un atvērtā pirmkoda rīku atbalstu.
Cik maksā novērojamība salīdzinājumā ar reģistrēšanu?
Novērojamība parasti izmaksā vairāk papildu krātuves, instrumentu licenču un instrumentācijas izstrādes laika dēļ. Tomēr tā bieži vien samazina vidējo problēmu risināšanas laiku un novērš dārgus darbības pārtraukumus, kas var atsvērt sākotnējos ieguldījumus organizācijām, kuras pārvalda sarežģītas sistēmas.
Vai monolītiem ir noderīgi novērojamības rīki?
Pilnīgi noteikti. Pat atsevišķas lietojumprogrammas gūst vērtību no izkliedētas izsekošanas savā procesā, no metrikas, kas atklāj veiktspējas tendences, un no strukturētiem žurnāliem, kurus ir vieglāk vaicāt. Novērojamības rīki nav paredzēti tikai mikropakalpojumiem.
Kas ir laidums izkliedētajā izsekošanā?
Laipnums apzīmē vienu darba vienību izsekošanas datos, piemēram, datubāzes vaicājumu vai HTTP izsaukumu starp pakalpojumiem. Laipnumiem ir nosaukums, sākuma laiks, ilgums un metadati, un tie ir saistīti kopā, izmantojot vecāku un bērnu attiecības, veidojot pilnīgu izsekošanas datējumu.
Kā jūs korelējat žurnālus dažādos mikropakalpojumos?
Komandas parasti ievada korelācijas ID sistēmas malā un izplata to, izmantojot HTTP galvenes, ziņojumu metadatus vai pavediena kontekstu. Katrs pakalpojums iekļauj šo ID savos žurnāla ierakstos, tāpēc viena meklēšana visos pakalpojumos atgriež pilnu pieprasījuma ceļu.
Vai jaunuzņēmumiem vajadzētu izmantot novērojamību vai pieturēties pie reģistrēšanas?
Agrīnās stadijas jaunuzņēmumi parasti sāk ar strukturētu reģistrēšanu un pamata metriku izmantošanu, jo tie tiek piegādāti ātrāk un maksā mazāk. Sistēmai augot un komandām palielinoties, izsekošanas un vienotas novērošanas platformas pievienošana kļūst vērtīga, lai saglabātu izstrādes ātrumu.
Spriedums
Izvēlieties mikropakalpojumu novērojamību, ja jūsu sistēma aptver daudzus neatkarīgus pakalpojumus un jums ir jāsaprot starppakalpojumu mijiedarbība reāllaikā. Vienkāršākām lietojumprogrammām, kur centralizēti ieraksti nodrošina pietiekamu redzamību un darbības izmaksas ir svarīgākas par detalizētu ieskatu, izvēlieties monolītu reģistrēšanu. Praksē nobriedušas sistēmas bieži vien apvieno abas pieejas, nevis pilnībā apņemas izmantot vienu.