Mabda'a aan la hubin ee Heisenberg wuxuu dhigayaa inaadan qiyaasi karin booska shay iyo xawaarihiisa isku mar. Haddii shay dhaqaaqo, markaas ma laha meel. Haddii ay jirto meel, waxay la macno tahay in aysan lahayn xawaare.

Xagga adeegaha-yaraha ee Koofiyadaha Cas OpenShift (iyo socodsiinta Kubernetes), iyada oo ay ugu wacan tahay software-ka isha furan ee ku habboon, waxay si isku mar ah uga warbixin karaan waxqabadkooda iyo caafimaadkooda labadaba. Tani, dabcan, ma burinayso Heisenberg jir, laakiin waxay tirtiraysaa hubin la'aanta markaad la shaqeyneyso codsiyada daruuraha. Istio waxay fududaynaysaa la socodka iyo la socodka arjiyadan si wax walba loo xakameeyo.
Qeexida ereybixinta
Under baafinta (Raadinta) waanu fahansanahay gaynta hawsha nidaamka. Tani waxay u egtahay mid guud, laakiin dhab ahaantii mid ka mid ah xeerarka aasaasiga ah ee halkan waa in lagu daadiyo xogta raadraaca kaydinta ku habboon iyada oo aan laga walwalin qaabeynta. Oo dhammaan shaqada raadinta iyo falanqaynta xogta waxay u taal macaamilka. Istio waxay isticmaashaa nidaamka raadraaca ee Jaeger, kaas oo fuliya qaabka xogta OpenTracing.
Dariiqyada (Raad-raac, iyo ereyga "raad" halkan ayaa loo isticmaalaa macnaha "raadkii", tusaale ahaan, baaritaanka ballistic) waxaan ugu yeeri doonaa xogta si buuxda u qeexaysa marinka codsiga ama cutubka shaqada, sida ay yiraahdaan. "laga bilaabo iyo ilaa." Tusaale ahaan, wax kasta oo dhacaya laga bilaabo marka isticmaaluhu uu taago badhanka bogga shabakadda ilaa xogta la soo celinayo, oo ay ku jiraan dhammaan adeegyada yaryar ee ku lug leh. Waxaan dhihi karnaa hal raad ayaa si buuxda u qeexaya (ama moodooyinka) safarka wareega ee codsiga. In interface-ka Jaeger, raadadku waxay u kala jajaban yihiin qaybo ka mid ah dhidibka wakhtiga, oo la mid ah sida silsiladda loo kala qaybin karo xiriiriyeyaasha shakhsi ahaaneed. Kaliya halkii isku xirka, dariiqu wuxuu ka kooban yahay waxa loogu yeero taako.
Span waa inta u dhaxaysa bilawga cutubka shaqada ilaa dhamaystirkeeda. Sii waditaanka isbarbardhigga, waxaan dhihi karnaa in taako kastaa ay ka dhigan tahay xiriiriye gaar ah oo silsiladda ah. Taako waxa laga yaabaa (ama ma yeelan karto) hal ama in ka badan oo taako ilmo ah. Natiijo ahaan, taagga ugu sarreeya (xididka xididka) wuxuu lahaan doonaa wadarta guud ee muddada raadadka ay leedahay.
Kormeerka - tani waa, runtii, fiirsashada nidaamkaaga - indhahaaga, iyada oo loo marayo UI ama qalabka otomaatiga ah. Kormeerku wuxuu ku salaysan yahay xogta raadraaca. Gudaha Istio, la socodka waxa lagu hirgeliyaa iyadoo la isticmaalayo Prometheus oo waxay leedahay UI habboon. Prometheus waxa ay taageertaa la socodka otomaatiga ah iyada oo la isticmaalayo Ogeysiisyada iyo Maareeyayaasha Feejignaanta.
Waxaan ka tagnay calaamado
Si baafintu u suurtogasho, codsigu waa inuu abuuraa ururin taako ah. Kadibna waxay u baahan yihiin in loo dhoofiyo Jaeger, si markaa ay u abuurto muuqaal muuqaal ah oo raadraaca. Waxyaalaha kale, dhererkaani waxay calaamad u yihiin magaca hawlgalka, iyo sidoo kale bilawga iyo dhamaadka wakhtiga. Gudbinta taako waxa lagu fuliyaa iyada oo u gudbinta madaxa codsiga HTTP-ga gaarka ah ee Jaeger laga bilaabo codsiyada soo socda ilaa codsiyada socda. Iyadoo ku xiran luuqadda barnaamijka ee la isticmaalo, tani waxay u baahan kartaa wax ka bedel yar oo lagu sameeyo koodhka isha codsiga. Hoos waxaa ku yaal koodka muunada ee Java (iyadoo la adeegsanayo qaabka Bootka Guga) kaas oo ku dara madaxyada B3 (Zipkin-style) codsigaaga fasalka qaabaynta gu'ga:

Hababka madaxa ee soo socda ayaa la isticmaalaa:

Haddii aad isticmaalayso Java, markaa waxaad ka tagi kartaa koodhka oo keliya oo kaliya ku dar dhowr sadar faylka Maven POM oo deji doorsoomayaasha deegaanka. Waa kuwan khadadka aad u baahan tahay inaad ku darto faylkaaga POM.XML si aad u hirgeliso Jaeger Tracer Resolver:

Iyo doorsoomayaasha deegaanka ee u dhigma ayaa lagu dejiyay Dockerfile:

Taasi waa, hadda wax walba waa la habeeyey oo adeegyadeenna yar-yar ayaa bilaabi doona soo saarista xogta raadraaca.
Aynu si guud u eegno
Istio waxaa ku jira guddi kontorool fudud oo ku salaysan Grafana. Marka wax walba la habeeyo oo ay ku shaqeeyaan koofiyadda Cas OpenShift PaaS (tusaale ahaan, Koofiyada Cas OpenShift iyo Kubernetes waxaa la geeyaa minishift), guddigan waxaa lagu bilaabay amarka soo socda:
open "$(minishift openshift service grafana -u)/d/1/istio-dashboard?refresh=5⩝Id=1"
Guddiga Grafana wuxuu kuu oggolaanayaa inaad si dhakhso leh u qiimeyso waxqabadka nidaamka. Qayb ka mid ah guddigan ayaa lagu muujiyay sawirka hoose:

Halkan waxa aad ku arki kartaa in macaamiishu microservice-ku ugu yeedho doorbidka v1 microservice, taas oo markaa u yeedha talada v1 iyo v2 microservices. Gudida Grafana waxay leedahay baloog saf ah oo loo yaqaan 'Dashboard Row' oo loogu talagalay cabbirada heerka sare ah, sida tirada guud ee codsiyada (Mugga Codsiga Caalamiga ah), heerarka guusha, 4xx khaladaad. Intaa waxaa dheer, waxaa jira aragtida Mesh Server-ka oo leh garaafyo adeeg kasta ah iyo xannibaadda safka adeegga si aad u aragto macluumaad faahfaahsan oo ku saabsan weel kasta oo adeeg kasta ah.
Hadda aynu sii qoto dheerayno
Raadinta si habboon loo habeeyey, Istio, sida ay yiraahdaan, isla markiiba sanduuqa ayaa kuu oggolaanaya inaad si qoto dheer u gasho falanqaynta waxqabadka nidaamka. Jaeger's UI, waxaad ku arki kartaa raadadka oo waxaad arki kartaa fogaanta iyo qoto dheer ee ay u socdaan, iyo sidoo kale muuqaal ahaan meelayn kara caqabadaha waxqabadka. Markaad isticmaalayso Koofiyada Cas OpenShift goobta minishift, ku bilow Jaeger UI amarka soo socda:
minishift openshift service jaeger-query --in-browser

Maxaad ka odhan kartaa baafinta shaashaddan:
- Waxa loo qaybiyaa 7 taako.
- Wadarta wakhtiga fulinta waa 6.99 ms.
- Talo-bixinta microservice, oo ah kan ugu dambeeya ee silsiladda, ayaa kharash gareeya 0.69 ms.
Jaantusyada noocan oo kale ah waxay kuu oggolaanayaan inaad si dhakhso ah u fahamto xaaladda marka, sababtoo ah hal adeeg oo aan shaqaynayn, waxqabadka nidaamka oo dhan wuu dhibaa.
Hadda aan adkayno hawsha oo aan bilowno laba tusaale oo talada ah:v2 microservice oo leh amarka oc scale —replicas=2 deployment/commendation-v2. Waa kuwan cawska aan yeelan doono tan ka dib:

Haddii aan hadda u soo laabano Jaeger oo aan ballaarinno baaxadda adeegga talada, waxaan arki karnaa sanduuqa codsiyada loo maro. Sidaa darteed, waxaan si fudud u dejin karnaa biriiga heerka boodhka gaar ah. Xaaladdan, waxaad u baahan tahay inaad eegto goobta node_id:

Halkee iyo sida wax walba u socdaan
Hadda waxaan aadnaa Prometheus interface-ka waxaana la filayaa inaan halkaas ku aragno codsiyada u dhexeeya noocyada labaad iyo kan koowaad ee adeegga talobixinta waxaa loo qaybiyaa saamiga 2: 1, si adag iyada oo loo eegayo tirada shaqooyinka shaqada. Waxaa intaa dheer, garaafkani si firfircoon ayuu isu bedeli doonaa marka ay boobyadu kor iyo hoos u korayaan, taas oo si gaar ah faa'iido u yeelan doonta Canary Deployment (waxaan si qoto dheer u eegi doonaa qorshahan geynta wakhtiga soo socda).

Kaliya waa bilow
Dhab ahaantii, maanta waxaan haysanaa, sida ay yiraahdaan, kaliya waxay xoqeen dusha sare ee hantida macluumaadka waxtarka leh ee ku saabsan Jaeger, Grafana iyo Prometheus. Guud ahaan, tani waxay ahayd yoolkeena - inaan kuu tilmaamno jihada saxda ah oo aan furno rajada Istio.
Xusuusnow, waxaas oo dhan waxay horey u dhisteen Istio. Markaad isticmaasho luqadaha barnaamijyada qaarkood (tusaale, Java) iyo qaab-dhismeedka (tusaale, Boot Spring), waxaas oo dhan waa la hirgelin karaa iyada oo aan la taaban koodka codsiga laftiisa gabi ahaanba. Haa, koodka waa in wax yar wax laga beddelo haddii aad isticmaasho luqado kale, ugu horrayn macneheedu waa Nodejs ama C #. Laakin maadaama baafinta (akhri: "raadinta") ay tahay mid ka mid ah shuruudaha abuurista nidaamyada daruuriga ah ee la isku halayn karo, waa inaad wax ka beddeshaa koodka si kastaba, haddii aad leedahay Istio iyo haddii kale. Haddaba maxaad u isticmaali weyday dadaalkaaga si aad si wanaagsan uga faa'iidaysato?
Ugu yaraan si aad mar walba uga jawaabto su'aalaha "xagee?" iyo "Intee in le'eg?" iyadoo 100% la hubo.
Injineernimada fowdada ee Istio: waa sida loogu talagalay
Awoodda wax lagu jebiyo waxay ka caawisaa inay ka hortagto inay jabaan.
Tijaabada softiweerku maaha kaliya mid adag, laakiin sidoo kale waa muhiim. Isla mar ahaantaana, tijaabinta saxnaanta (tusaale, haddii shaqadu ay soo celiso natiijada saxda ah) waa hal shay, laakiin tijaabinta shabakad aan la isku halleyn karin waa hawl gebi ahaanba ka duwan (waxaa badanaa loo maleynayaa in shabakadu had iyo jeer shaqeyso iyada oo aan guuldarro la kulmin, tanina waa mid aad u kala duwan. waa kan ugu horreeya siddeedda fikradood ee khaldan ee ku saabsan xisaabinta la qaybiyey). Mid ka mid ah dhibaatooyinka xallinta dhibaatadan waa sida loo ekaysiiyo guul-darrooyinka nidaamka ama loo baro si ula kac ah, iyada oo la fulinayo waxa loogu yeero cirbadeynta cilladda. Tan waxa lagu samayn karaa iyada oo wax laga beddelo koodhka isha ee codsiga laftiisa. Laakiin markaa ma sii tijaabin doontid summadaagii asalka ahaa, laakiin nooc ka mid ah oo si gaar ah u sawiraya guuldarrada. Natiijo ahaan, waxaad halis u tahay inaad ku dhacdo isku-duubnaanta dilaaga ah ee cirbadeynta khaladka ah oo aad la kulanto Heisenbugs - guuldarrooyinka kaa lumaya markaad isku daydo inaad ogaato.
Hadda waxaan ku tusi doonaa sida Istio uu kaaga caawiyo inaad hal gabal wax uga qabato dhibaatooyinkan.
Sidee wax walba u eg yihiin marka wax walba ay weyn yihiin?
Tixgeli dhacdada soo socota: waxaan u haynaa laba qaybood oo loogu talagalay talo-bixintayada microservice, kaas oo aan ka soo qaadannay casharradii Istio. Mid ka mid ah boodhka waxa lagu sumadeeyay v1 kan kalena waxa lagu calaamadiyay v2. Sida aad arki karto, wax walba si fiican ayay u shaqeeyaan ilaa hadda:

(Sidoo kale, lambarka midigta ku yaal waa kaliya miiska wicitaanka ee boodh kasta)
Laakiin taasi ma ahan waxa aan u baahanahay, sax? Waa hagaag, aan isku dayno inaan wax walba jebinno annagoo aan taaban koodhka isha gabi ahaanba.
Waxaan diyaarinaa hakad ku yimaada shaqada adeeg-yaraha
Hoos waxaa ku yaal faylka yaml ee xeerka marin-u-socodka Istio kaas oo ku guuldareysan doona (qalad) badhkii waqtiga. server 503):

Fadlan la soco in aan si cad u sheegno in qaladka 503 lagu soo celiyo kiisaska kala bar.
Oo waa kan sida uu u ekaan doono shaashadda amarka curlka ee ku dhex socda wareegga ka dib markii aan hawlgelinno xeerkan si aan uga dhigno guuldarrada. Sida aad arki karto, kala badh codsiyada waxay soo celiyaan qaladka 503, iyada oo aan loo eegin midkee - v1 ama v2 - waxay aadayaan:

Si loo soo celiyo hawlgalka caadiga ah, waa ku filan in la tirtiro qaanuunkan, xaaladdeena oo leh istioctl delete routerule recommendation-503 -n tutorial Command. Halkan, Tutorial waa magaca mashruuca Koofiyada Cas OpenShift ee maamula casharkayaga Istio.
Soo bandhigida daahitaanka macmalka ah
Khaladaadka been abuurka ah ee 503 waxay caawiyaan tijaabinta u adkeysiga nidaamka guuldarada, laakiin awooda saadaalinta iyo maaraynta dib u dhaca waa inay si aad ah kuugu soo jiidato. Dib u dhaca nolosha dhabta ahna waxa uu dhacaa in ka badan guuldarada. Adeegga yar yar oo gaabis ah waa sun saameeya nidaamka oo dhan. Istio, waxaad tijaabin kartaa koodka la xiriira daahitaanka adigoon sinaba u beddelin. Marka hore, waxaanu tusi doonaa sida tan loo sameeyo marka la eego dib u dhacyada shabakada si macmal ah loo soo geliyay.
Fadlan ogow in ka dib tijaabinta habkan, laga yaabo inaad u baahato (ama aad rabto) inaad beddesho koodka. Warka wanaagsani waa in kiiskan aad noqon doonto mid firfircoon halkii aad ka falcelin lahayd. Tani waa sida saxda ah ee wareegga korriinka loo habeeyey: kood-tijaabinta-celinta-coding-tijaabinta...
Tani waa sida sharcigu u eg yahay... In kastoo aad ogtahay waxa? Istio aad buu u fudud yahay oo faylkan yaml aad buu u cad yahay in wax kasta oo tusaalahan ku jira ay iyagu iska hadlaan, bal eeg:

Waqtiga kala bar waxaan la kulmi doonaa dib u dhac 7 ilbiriqsi ah. Tanina la mid maaha haddii aan gelinay amar hurdo koodka isha, maadaama Istio runtii dib u dhigay codsiga 7 ilbiriqsi. Maadaama Istio uu taageerayo raadinta Jaeger, daahitaankan ayaa lagu arki karaa Jaeger UI, sida ka muuqata sawirka hoose. U fiirso codsiga dheer ee ku yaal geeska sare ee midig ee jaantuska - mudada uu soconayo waa 7.02 ilbiriqsi:

Qoraalkani wuxuu kuu ogolaanayaa inaad tijaabiso koodkaaga xaaladaha daahitaanka shabakada. Way caddahay in marka meesha laga saaro qaanuunkan, waxaan ka saari doonaa dib u dhigista macmalka ah. Waanu ku celinaynaa, laakiin mar labaad waxaanu samaynay waxan oo dhan anagoo aan taaban koodhka isha sinaba.
Dib ha u guran hana is dhiibin
Muuqaal kale oo faa'iido leh oo Istio ah oo loogu talagalay injineernimada fowdada waa wicitaanno soo noqnoqda oo adeegga ah tiro cayiman. Ujeedada halkan waa in la sii wado isku dayga marka codsiga ugu horeeya uu ku dhamaado qaladka 503 - ka dibna laga yaabo in N-kow iyo tobnaad aan nasiib yeelan doono. Waxaa laga yaabaa in adeeggu kaliya hoos u dhacay hal sabab ama mid kale. Haa, sababtan waa in la qodo oo la tirtiraa. Laakiin taasi way iman doontaa mar dambe, laakiin hadda waxaan isku dayi doonaa inaan hubinno in nidaamku sii shaqeeyo.
Marka, waxaan rabnaa in adeeggu uu tuuro qalad 503 waqti ka waqti, ka dibna Istio wuxuu isku dayi doonaa inuu mar kale la xiriiro. Oo halkan waxaan si cad ugu baahanahay qaab aan ku dhalin karno qalad 503 adoon taaban koodhka laftiisa.
Jooji, sug! Kaliya waan sameynay.
Faylkan ayaa ka dhigi doona si adeegga talada-v2 uu soo saaro qalad 503 nuska wakhtiga:

Sida iska cad, codsiyada qaar way fashilmi doonaan:

Hadda aan isticmaalno shaqada Istio Retry:

Xeerkan wadista waxa uu soo noqnoqda saddex jeer laba ilbiriqsi gudahood waana in la dhimaa (oo laga saaraa radar) 503 khalad:

Si loo soo koobo: waxaan u sameynay si Istio, marka hore, uu dhaliyo qalad 503 nus ka mid ah codsiyada. Marka labaadna, isla Istio wuxuu sameeyaa seddex isku day ah inuu dib ula soo xiriiro adeegga marka qaladka 503. Natiijo ahaan, wax walbaa si fiican ayey u shaqeeyaan. Haddaba, annagoo adeegsanayna astaanta Dib-u-isku-dayga, waxaanu fulinay ballan-qaadkii ahaa inaanaan quusan oo aan quusan.
Oo haa, mar kale ayaanu samaynay anagoon taaban koodka gabi ahaanba. Waxa kaliya ee aan u baahanay waxay ahaayeen laba xeer oo jidka Istio:

Sida aan loo ogolaan isticmaaluhu ama todoba ha filanin mid
Hadda aan u rogno xaaladda gudaha oo aan tixgelinno xaalad ah halka waxa kaliya ee aad u baahan tahay inaad sameyso ay tahay inaadan dib u guran ama ka quusan waqti go'an. Kadibna waxaad u baahan tahay oo kaliya inaad joojiso inaad isku daydo inaad ka shaqeyso codsiga, si aadan ugu qasbin qof walba inuu sugo hal adeeg oo gaabis ah. Si kale haddii loo dhigo, ma difaaci doono boos lumay, laakiin waxaan dib ugu noqon doonnaa khadka kaydka si aan loo oggolaan isticmaalayaasha goobta oo aan ku qasbin inuu jaahilnimo ku daaho.
Gudaha Istio, waxaad dejin kartaa wakhtiga fulinta su'aasha. Haddii adeeggu dhaafo wakhtigan, khaladka 504 (Gateway Timeout) waa la soo celiyay - mar labaad, waxaas oo dhan waxaa lagu sameeyaa qaabeynta Istio. Laakiin waa in aan ku darnaa amarka hurdada ee koodhka isha adeegga (ka dibna, dabcan, dib-u-dhiska iyo dib-u-dejinta) si aan u ekayno hawlgalka gaabis ah ee adeegga. Hoogay, si kale uma shaqayn doonto.
Markaa, waxaan gelinay hurdo seddex-ilbiriqsi ah koodka adeegga v2, dib-u-dhiskii sawirka u dhigma oo dib u habeyn ku sameynay weelka, oo hadda waxaan ku dari doonaa waqti xaddidan annaga oo adeegsanayna xeerka soo socda ee Istio:

Sawirka kore waxaad arki kartaa inaan iska deyno inaan isku dayno inaan la xiriirno adeegga talada haddii aynaan ku helin jawaab hal ilbiriqsi gudahood, taas oo ah, ka hor intaysan dhicin qaladka 504. Ka dib markaad dalbato qaanuunka dariiqa (iyo inaad ku darayso hurdo saddex-ilbiriqsi ah ilaa xeerka adeega talo bixinta :v2), waxaanu helnaa tan:

Mar labaad ayaanu ku celinaa, laakiin wakhtigu waa la dejin karaa iyada oo aan la taaban koodhka isha sinaba. Gunnada halkan lagu daray ayaa ah in aad hadda wax ka beddeli karto koodhkaaga si aad uga jawaabto wakhtigu, oo si fudud u tijaabi wax ka beddelkan adigoo isticmaalaya Istio.
Haddana waa wada dhan
In yar oo fowdo ah lagu duro Istio waa hab fiican oo lagu tijaabiyo koodhkaaga iyo isku halaynta nidaamkaaga guud ahaan. Dib-u-dhac, madax weyn iyo qaababka wareegga wareegga, hababka abuurista guul-darrooyinka macmalka ah iyo dib-u-dhacyada, iyo sidoo kale isku-dayga wicitaannada iyo waqti-gooyada ayaa aad waxtar u yeelan doona marka la abuurayo nidaamyada cilladaha-dulqaadka daruuraha. Marka lagu daro Kubernetes iyo Koofiyada Cas OpenShift, qalabkani ayaa kaa caawin doona inaad si kalsooni leh u wajahdo mustaqbalka.
Source: www.habr.com
