Waxaan mashruucyadayada ku isticmaalnaa qaab-dhismeedka microservice. Marka caqabadaha waxqabadku dhacaan, waqti badan ayaa lagu bixiyaa la socodka iyo falanqaynta diiwaannada. Marka la galiyo wakhtiyada hawlgallada shaqsiga ah galka log, inta badan way adagtahay in la fahmo waxa keenay u yeedhida hawlgaladan, si loola socdo isku xigxiga ficilada ama wakhtiga wareejinta hal hawlgal marka loo eego adeegyada kala duwan.
Si loo yareeyo shaqada gacanta, waxaan go'aansanay inaan isticmaalno mid ka mid ah qalabka raadinta. Ku saabsan sida iyo sababta aad u isticmaali karto raadinta iyo sida aan u sameynay, waxaana lagu falanqeyn doonaa maqaalkan.
Waa maxay dhibaatooyinka lagu xallin karo raadinta
Ka hel caqabadaha wax qabad ee hal adeeg gudaheed iyo dhammaan geedka fulinta inta u dhaxaysa dhammaan adeegyada ka qaybqaadashada. Tusaale ahaan:
Wicitaano badan oo gaagaaban oo xiriir ah ayaa udhaxeeya adeegyada, tusaale ahaan, xaga juqraafiga ama xogta xogta.
I/O dheer ayaa sugaya, sida wareejinta shabakada ama akhrinta saxanka.
Qiimaynta xogta dheer
Hawlgallada dheer ee u baahan CPU.
Qaybaha koodka ee aan loo baahnayn si loo helo natiijada kama dambaysta ah oo laga saari karo ama dib loo dhigi karo.
Si cad u fahan sida ay isugu xigto waxa loo yaqaan iyo waxa dhacaya marka qaliinka la sameeyo.
Waxaa la arki karaa, tusaale ahaan, Codsiga wuxuu ku yimid adeegga WS -> adeegga WS wuxuu ku kabay xogta iyada oo loo marayo adeegga R -> ka dibna codsi u diray adeegga V -> adeegga V ayaa ka soo buuxiyay xog badan Adeegga R -> wuxuu aaday adeegga P -> adeegga P wuxuu mar kale u aaday adeegga R -> adeegga V ayaa iska indhatiray natiijadii oo aaday adeegga J -> oo kaliya ka dibna ku soo celiyay jawaabta adeegga WS, iyadoo la sii wado xisaabinta wax kale asalka.
Iyadoo aan la helin raad raac ama dukumeenti faahfaahsan oo ku saabsan geeddi-socodka oo dhan, aad bay u adag tahay in la fahmo waxa dhacaya marka la eego koodhka markii ugu horeysay, iyo koodka ayaa ku kala firirsan adeegyo kala duwan oo lagu qariyo gadaasha qashinka iyo is-dhexgalka.
Uruurinta macluumaadka ku saabsan geedka fulinta ee falanqaynta dib loo dhigay. Marxalad kasta oo fulin ah, waxaad ku dari kartaa macluumaadka raadraaca la heli karo marxaladan ka dibna waxaad ogaan kartaa xogta la galiyay ee keentay dhacdo la mid ah. Tusaale ahaan:
Aqoonsiga isticmaale
Xuquuqda
Nooca habka la doortay
Gelida ama qaladka fulinta
U rogida raadadka qayb-hoosaadyo cabbiro iyo falanqayn dheeraad ah oo horeba u ahaa qaab cabbir.
Waa maxay raad geli kara Baaxadda
Raadinta waxaa jira fikradda taako, kani waa analooga hal log, oo ku socda console-ka. HBS waxay leedahay:
Magaca, badanaa magaca habka la fuliyay
Magaca adeegga kaas oo taako la soo saaray
Aqoonsi gaar ah oo u gaar ah
Nooc ka mid ah macluumaadka meta oo ah qaab fure/qiimo ah oo la geliyey. Tusaale ahaan, habka cabbiraadda ama habka ayaa ku dhammaaday khalad iyo in kale
Bilawga iyo dhamaadka wakhtiyadan
Aqoonsiga muddada waalidka
Taako kasta waxa loo diraa taako ururiyaha si loogu kaydiyo kaydka xogta si dib loogu eego isla marka uu dhameeyo fulintiisa. Mustaqbalka, waxaad dhisi kartaa geed dhan walba ah adiga oo ku xiraya aqoonsiga waalidka. Marka la falanqeynayo, waxaad heli kartaa, tusaale ahaan, dhammaan taako ka mid ah adeegyada qaarkood oo qaatay wax ka badan wakhti. Dheeraad ah, adoo aadaya taako gaar ah, arag geedka dhan ee korka iyo hoostiisa taaggan.
Opentrace, Jagger iyo sida aan ugu fulinay mashaariicdayada
Waxaa jira halbeeg guud daah furnaan, kaas oo qeexaya sida iyo waxa la ururinayo, iyada oo aan lagu xidhin raadraaca hirgelinta gaar ah ee luqad kasta. Tusaale ahaan, Java, dhammaan shaqada raadraaca waxaa lagu fuliyaa iyada oo loo marayo Opentrace API-ga caadiga ah, iyo hoostiisa, tusaale ahaan, Jaeger ama hirgelin faaruq ah oo faaruq ah oo aan waxba qaban karin lama qarin karo.
Waxaan isticmaaleynaa Jaeger sida hirgelinta Opentrace. Waxay ka kooban tahay dhawr qaybood:
Jaeger-agent waa wakiil maxalli ah oo inta badan lagu rakibo mishiin kasta oo adeegyadu waxa ay galaan dekedda caadiga ah ee deegaanka. Haddii aysan jirin wakiil, markaas raadadka dhammaan adeegyada mashiinkaan badanaa waa naafo
Jaeger-Collector - dhammaan wakiillada waxay u soo diraan raad ururin, waxayna ku dhejiyaan xogta la doortay.
Kaydka kaydku waa cassandra ay door bidaan, laakiin waxaanu isticmaalnaa elasticsearch, waxa jira hirgelinyo dhawr kayd oo kale ah iyo hirgelinta xusuusta aan waxba ku kaydin diskka
Jaeger-query waa adeeg taga kaydka xogta oo soo celisa raadadkii hore loo soo ururiyay si loo baaro
Qayb gaar ah ayaa lagu magacaabi karaa hirgelinta jaeger-ka furan ee luuqadaha gaarka ah, kaas oo taako loo diro wakiilka jaeger-ka. Isku xirka Jagger ee Java waxay hoos ugu dhacdaa hirgelinta io.opentracing.Tracer interface, ka dib dhammaan raadadka iyada oo loo duuli doono wakiilka dhabta ah.
Sidoo kale qaybta guga, waxaad ku xidhi kartaa furitaanka-guga-daruur-bilowga iyo fulinta ka Jaeger furitaanka-guga-jaeger-daruur-bilaabaha kaas oo si toos ah u habayn doona raadinta wax kasta oo soo mara qaybahan, tusaale ahaan codsiyada http ee kontaroolayaasha, codsiyada database-ka iyada oo loo marayo jdbc, iwm.
Raad gasha Java
Meel heerka sare ah, Baabka ugu horreeya waa in la abuuraa, tan si toos ah ayaa loo samayn karaa, tusaale ahaan, kantaroolaha guga marka codsiga la helo, ama gacanta haddii aanu midna jirin. Ka dib waxaa lagu kala qaadaa iyadoo loo marayo Baaxadda hoose. Haddi habka hoose uu rabo in lagu daro Span, waxa ay ka qaadanaysaa Baaxadda firfircoon ee hadda jirta, waxa ay abuurtaa taako cusub oo sheegta in waalidku yahay natiijadii Span-ka firfircoon, oo waxa uu ka dhigayaa Span-ka cusub mid firfircoon. Markaad wacdo adeegyada dibadda, wakhtiga firfircoon ee hadda jira ayaa loo gudbiyaa iyaga, adeegyadaasna waxay abuuraan taako cusub iyada oo la tixraacayo muddadan.
Dhammaan shaqadu waxay martaa tusaale ahaan Tracer, waxaad ka heli kartaa habka DI, ama GlobalTracer.get () sida doorsoome caalami ah haddii habka DI uusan shaqayn. Sida caadiga ah, haddii raadiyaha aan la bilaabin, NoopTracer ayaa soo laaban doona kaas oo aan waxba qaban.
Intaa waxaa dheer, baaxadda hadda jirta waxaa laga helayaa raadiyaha iyada oo loo marayo ScopeManager, baaxad cusub ayaa laga abuurayaa kan hadda jira oo leh xiritaan dhererka cusub, ka dibna Baaxadda la abuuray waa la xirayaa, taas oo xireysa taako la abuuray oo soo celisa Baaxaddii hore gobolka firfircoon. Baaxadda waxay ku xidhan tahay dun, marka marka la samaynayo barnaamijyo badan oo taxane ah, waa inaadan iloobin inaad u wareejiso taako firfircooni dun kale, si aad u sii hawlgeliso Baaxadda dun kale iyada oo la tixraacayo taako kale.
Barnaamijyada xadhkaha badan leh, waxa kale oo jira TracedExecutorService iyo duubo la mid ah kuwaas oo si toos ah ugu sii gudbiya taako hadda dunta marka hawlo isku mid ah la bilaabo:
private ExecutorService executor = new TracedExecutorService(
Executors.newFixedThreadPool(10), GlobalTracer.get()
);
HttpClient httpClient = new TracingHttpClientBuilder().build();
Dhibaatooyin aan la kulanay
Digirta iyo DI had iyo jeer ma shaqeeyaan haddii raadiyaha aan loo isticmaalin adeeg ama qayb, markaa Si toos ah Raadiyaha waxaa laga yaabaa inuusan shaqeynin waana inaad isticmaashaa GlobalTracer.get().
Qoraaladu ma shaqeeyaan haddii aysan ahayn qayb ama adeeg, ama haddii habka loogu yeero habka deriska ah ee isku fasalka ah. Waa inaad ka taxadirtaa si aad u hubiso waxa shaqaynaya oo aad isticmaasho raad abuurka gacanta haddii @Traced shaqayn waayo. Waxa kale oo aad ku lifaaqi kartaa iskudubarid dheeraad ah oo loogu talagalay sharraxaadda Java, ka dibna waa inay meel kasta ka shaqeeyaan.
Isku day kheyraadku kuma shaqeynayo groovy, waa inaad isticmaashaa isku day ugu dambeyntii.
Adeeg kastaa waa inuu lahaadaa spring.application.magac u gaar ah oo raadadka lagu qori doono. Maxaa magac gaar ah u leh iibka iyo imtixaanka, si aan loo faragelin iyaga si wadajir ah.
Markaad ku darto raadadka habka, waxaad u baahan tahay inaad hubiso inaan marar badan loogu yeerin wareeg. Waa lagama maarmaan in lagu daro hal raad caadi ah dhammaan wicitaanada, taas oo dammaanad qaadaysa wadarta wakhtiga shaqada. Haddii kale, culeys xad dhaaf ah ayaa la abuuri doonaa.
Mar ay Jaeger-ui, codsiyo aad u weyn u soo jeediyeen tiro badan oo raadad ah, iyo mar haddii ay jawaabi waayeen, ayay haddana sameeyeen. Natiijo ahaan, jaeger-query wuxuu bilaabay inuu cuno xusuus badan oo uu hoos u dhigo laastikada. Waxa caawiyay dib u bilaabay jaeger-question
Const kaas oo soo dira oo kaydiya dhammaan raadadka
Probabilistic kaas oo shaandheynaya raadadka iyada oo ay jirto suurtogalnimo la siiyay.
Qiimaynta taas oo xaddidaysa tirada raadadka ilbiriqsikii. Waxaad u habayn kartaa goobahan macmiilka, ha ahaato wakiilka jaeger ama ururiyaha. Hadda waxaan isticmaalnaa const 1 ee xirmooyinka qiimeeyaasha, maadaama aysan jirin codsiyo aad u badan, laakiin waxay qaataan waqti dheer. Mustaqbalka, haddii tani ay culeys xad dhaaf ah ku soo rogi doonto nidaamka, waad xaddidi kartaa.
Haddii aad isticmaasho cassandra, ka dib asal ahaan waxay kaydisaa raadadka laba maalmood oo keliya. Waxaan isticmaaleynaa laascaanood raadadkana waa la kaydiyaa wakhti kasta lamana tirtiro. Tusi gooni ah ayaa loo sameeyay maalin kasta, tusaale ahaan adeeg-jaeger-2019-03-04. Mustaqbalka, waxaad u baahan tahay inaad habayso nadiifinta tooska ah ee raadadkii hore.
Si aad u aragto raadadka waxaad u baahan tahay:
Dooro adeegga aad rabto inaad ku shaandhayso raadadka, tusaale ahaan, tomcat7-default adeeg ka dhex socda tomcat oo aan yeelan karin magaciisa.
Ka dib dooro hawlgalka, inta u dhaxaysa wakhtiga iyo wakhtiga ugu yar ee hawlgalka, tusaale ahaan 10 ilbiriqsi, si aad u qaadato xukun dil ah oo dheer.
Tag mid ka mid ah raadadka oo arag waxa halkaa ka gaabinaya.
Sidoo kale, haddii qaar ka mid ah id codsi la yaqaan, markaas waxaad ka heli kartaa raad by id this iyada oo la isticmaalayo tag search ah, haddii id this waxaa la galay taako raad.
www.youtube.com/watch?v=qg0ENOdP1Lo Sida aan u isticmaalnay Jaeger iyo Prometheus si aan u gaarsiino Weydiimaha Isticmaalaha-Dhaqso-lahaa - Bryan Boreham