Bidh sinn a’ cleachdadh ailtireachd microservice anns na pròiseactan againn. Nuair a thig cnapan-starra dèanadais, thèid tòrr ùine a chaitheamh a’ cumail sùil air agus a’ parsadh chlàran. Nuair a bhios tu a’ clàradh amannan gnìomhachd fa leth gu faidhle log, mar as trice tha e duilich a thuigsinn dè a lean gu bhith a’ toirt a-steach na h-obraichean sin, sùil a chumail air sreath nan gnìomhan no gluasad ùine aon obrachaidh an coimeas ri fear eile ann an diofar sheirbheisean.
Gus saothair làimhe a lughdachadh, chuir sinn romhainn aon de na h-innealan lorg a chleachdadh. Mu ciamar agus carson a chleachdas tu lorg agus mar a rinn sinn e, agus thèid a dheasbad san artaigil seo.
Dè na duilgheadasan a dh'fhaodar fhuasgladh le lorg
Lorg cnapan-starra coileanaidh an dà chuid taobh a-staigh aon sheirbheis agus anns a’ chraobh cur gu bàs gu lèir eadar na seirbheisean a tha a’ gabhail pàirt. Mar eisimpleir:
Mòran fiosan goirid leantainneach eadar seirbheisean, mar eisimpleir, gu geocoding no gu stòr-dàta.
Bidh I/O fada a’ feitheamh, leithid gluasadan lìonra no leughaidhean diosc.
Parsadh dàta fada.
Obraichean fada a dh 'fheumas cpu.
Earrannan de chòd nach eil a dhìth gus an toradh deireannach fhaighinn agus faodar a thoirt air falbh no dàil a chuir air.
Tuig gu soilleir dè an t-sreath a chanar ris agus dè thachras nuair a thèid an obair a dhèanamh.
Chithear, mar eisimpleir, gun tàinig an t-iarrtas gu seirbheis WS -> chuir an t-seirbheis WS dàta ris tron t-seirbheis R -> an uairsin chuir e iarrtas chun t-seirbheis V -> chuir an t-seirbheis V tòrr dàta bhon R seirbheis -> chaidh e gu seirbheis P -> chaidh an t-seirbheis P a-rithist gu seirbheis R -> cha tug seirbheis V an aire don toradh agus chaidh e gu seirbheis J -> agus is ann dìreach an uairsin a thill am freagairt gu seirbheis WS, fhad ‘s a bha iad a’ leantainn air adhart ag obrachadh a-mach rudeigin eile san t-seirbheis cùl-raon.
Às aonais a leithid de lorg no sgrìobhainnean mionaideach airson a’ phròiseas gu lèir, tha e gu math duilich a thuigsinn dè tha a’ tachairt nuair a choimheadas tu air a’ chòd airson a’ chiad uair, agus tha an còd sgapte air feadh diofar sheirbheisean agus falaichte air cùl dòrlach de bhionaichean agus eadar-aghaidh.
Cruinneachadh fiosrachaidh mun chraobh cur gu bàs airson mion-sgrùdadh a chaidh a chuir dheth às deidh sin. Aig gach ìre de choileanadh, faodaidh tu fiosrachadh a chur ris an lorg a tha ri fhaighinn aig an ìre seo agus an uairsin faighinn a-mach dè an dàta a chuir a-steach a dh’ adhbhraich suidheachadh coltach ris. Mar eisimpleir:
ID cleachdaiche
Còraichean
Seòrsa dòigh-obrach taghte
Log no mearachd cur an gnìomh
A’ tionndadh lorgan gu fo-sheata de mheatrics agus tuilleadh mion-sgrùdadh mar-thà ann an cruth meatrach.
Dè an lorg as urrainn logadh a-steach. span
Ann a bhith a’ lorg tha bun-bheachd rèis ann, is e seo analogue de aon log, chun consol. Tha:
Ainm, mar as trice ainm a 'mhodh a chaidh a chur gu bàs
Ainm na seirbheis anns an deach an rèis a chruthachadh
An ID sònraichte agad fhèin
Seòrsa de dh'fhiosrachadh meta ann an cruth iuchair / luach a chaidh a logadh a-steach ann. Mar eisimpleir, thàinig crìochan modh no an dòigh gu crìch le mearachd no nach robh
Amannan tòiseachaidh is crìochnachaidh airson an rèis seo
ID span pàrant
Thèid gach rèis a chuir chun neach-cruinneachaidh rèis airson a stòradh san stòr-dàta airson ath-sgrùdadh nas fhaide air adhart cho luath ‘s a bhios e deiseil. San àm ri teachd, faodaidh tu craobh de gach rèis a thogail le bhith a’ ceangal le ID phàrant. Nuair a nì thu mion-sgrùdadh, gheibh thu, mar eisimpleir, a h-uile rèis ann an cuid de sheirbheis a thug barrachd air beagan ùine. Nas fhaide, le bhith a 'dol gu rèis shònraichte, faic a' chraobh gu lèir os cionn agus fon rèis seo.
Opentrace, Jagger agus mar a chuir sinn an gnìomh e airson ar pròiseactan
Tha inbhe coitcheann ann slighe fosgailte, a tha a’ mìneachadh ciamar agus dè a bu chòir a chruinneachadh, gun a bhith ceangailte le bhith a’ lorg buileachadh sònraichte ann an cànan sam bith. Mar eisimpleir, ann an Java, thèid a h-uile obair le lorgan a dhèanamh tron API Opentrace cumanta, agus fon sin, mar eisimpleir, Jaeger no gnìomh bunaiteach falamh nach dèan dad a bhith falaichte.
Tha sinn a 'cleachdadh Sealgair mar chur an gnìomh Opentrace. Tha e air a dhèanamh suas de ghrunn phàirtean:
Tha Jaeger-agent na àidseant ionadail a bhios mar as trice air a chuir a-steach air gach inneal agus tha seirbheisean air an logadh a-steach air a’ phort bunaiteach ionadail. Mura h-eil àidseant ann, mar as trice bidh lorgan de sheirbheisean air an inneal seo ciorramach
Jaeger-collector - bidh a h-uile riochdaire a ’cur lorgan cruinnichte thuige, agus bidh e gan cur anns an stòr-dàta taghte
Is e an stòr-dàta an cassandra as fheàrr leotha, ach bidh sinn a’ cleachdadh elasticsearch, tha buileachadh ann airson stòr-dàta no dhà eile agus buileachadh cuimhne nach sàbhail dad air diosc.
Is e seirbheis a th’ ann an Jaeger-query a thèid chun stòr-dàta agus a thilleas lorgan a chaidh a chruinneachadh mar-thà airson mion-sgrùdadh
Is e eadar-aghaidh lìn a th’ ann an Jaeger-ui airson lorg agus coimhead air lorgan, bidh e a’ dol gu jaeger-query
Faodar co-phàirt air leth ainmeachadh mar buileachadh opentrace jaeger airson cànanan sònraichte, tro bheil rèisean air an cur gu jaeger-agent. A 'ceangal Jagger ann an Java a ’tighinn sìos gu bhith a’ cur an gnìomh an eadar-aghaidh io.opentracing.Tracer, às deidh sin bidh a h-uile lorg troimhe ag itealaich chun fhìor àidseant.
Cuideachd airson pàirt an earraich, faodaidh tu ceangal a dhèanamh opentracing-spring-cloud-tòiseachaidh agus buileachadh bho Jaeger opentracing-spring-jaeger-cloud-starter a rèiticheas gu fèin-ghluasadach lorg airson a h-uile càil a thèid tro na co-phàirtean sin, mar eisimpleir http iarrtasan gu luchd-riaghlaidh, iarrtasan chun stòr-dàta tro jdbc, msaa.
Lorgar logadh a-steach ann an Java
An àiteigin aig an ìre as àirde, feumar a’ chiad Span a chruthachadh, faodar seo a dhèanamh gu fèin-ghluasadach, mar eisimpleir, le rianadair an earraich nuair a gheibhear iarrtas, no le làimh mura h-eil gin ann. Tha e an uairsin air a ghluasad tron Scope gu h-ìosal. Ma tha dòigh sam bith gu h-ìosal airson Span a chuir ris, bheir e an Span gnìomhach gnàthach bhon Farsaing, cruthaichidh e raon ùr agus bidh e ag ràdh gur e a phàrant an Span gnìomhach a thig às, agus bidh e a’ dèanamh an Span ùr gnìomhach. Nuair a bhios iad a’ gairm seirbheisean taobh a-muigh, thèid an rèis ghnìomhach a th’ ann an-dràsta a chuir thuca, agus bidh na seirbheisean sin a’ cruthachadh raointean ùra a thaobh an rèis seo.
Bidh a h-uile obair a’ dol tro eisimpleir Tracer, gheibh thu e tron inneal DI, no GlobalTracer.get () mar chaochladair cruinne mura h-eil an uidheamachd DI ag obair. Gu gnàthach, mura deach tracer a thòiseachadh, tillidh NoopTracer nach dèan dad.
A bharrachd air an sin, gheibhear an raon gnàthach bhon rianadair tron ScopeManager, tha raon ùr air a chruthachadh bhon fhear a th’ ann an-dràsta le ceangal den rèis ùr, agus an uairsin tha an Farsaingeachd cruthaichte dùinte, a dhùineas an raon cruthaichte agus a thilleas an raon a bh’ ann roimhe gu an staid gnìomhach. Tha farsaingeachd ceangailte ri snàithlean, agus mar sin nuair a bhios prògramadh ioma-snàthainn agad, cha bu chòir dhut dìochuimhneachadh an raon gnìomhach a ghluasad gu snàithlean eile, airson tuilleadh gnìomhachd a dhèanamh air Farsaingeachd snàithlean eile a thaobh an rèis seo.
Airson prògramadh ioma-snàthainn, tha TracedExecutorService ann cuideachd agus pasganan coltach ris a chuireas air adhart an rèis gnàthach chun t-snàthainn gu fèin-ghluasadach nuair a thèid gnìomhan asyncronach a chuir air bhog:
private ExecutorService executor = new TracedExecutorService(
Executors.newFixedThreadPool(10), GlobalTracer.get()
);
HttpClient httpClient = new TracingHttpClientBuilder().build();
Trioblaidean a bha romhainn
Cha bhith beans agus DI an-còmhnaidh ag obair mura tèid an lorgaire a chleachdadh ann an seirbheis no pàirt, mar sin Autowired Is dòcha nach obraich Tracer agus feumaidh tu GlobalTracer.get().
Chan obraich notaichean mura h-eil e na phàirt no seirbheis, no ma tha an dòigh air a ghairm bho dhòigh nàbaidh den aon chlas. Feumaidh tu a bhith faiceallach sùil a thoirt air na tha ag obair agus cruthachadh lorg làimhe a chleachdadh mura h-obraich @Traced. Faodaidh tu cuideachd inneal-cruinneachaidh a bharrachd a cheangal airson notaichean java, an uairsin bu chòir dhaibh obrachadh anns a h-uile àite.
Feuch le goireasan chan eil e ag obair ann an groovy, feumaidh tu feuchainn mu dheireadh a chleachdadh.
Feumaidh ainm spring.application.name fhèin a bhith aig gach seirbheis fon tèid lorgan a chlàradh. Dè a nì ainm air leth airson an reic agus an deuchainn, gus nach cuir iad bacadh orra còmhla.
Ma chleachdas tu GlobalTracer agus tomcat, tha aon GlobalTracer aig a h-uile seirbheis a tha a’ ruith san tomcat seo, agus mar sin bidh an aon ainm seirbheis aca uile.
Nuair a chuireas tu comharran ri dòigh, feumaidh tu a bhith cinnteach nach eil e air a ghairm iomadh uair ann an lùb. Feumar aon lorg cumanta a chuir ris airson a h-uile gairm, a tha a ’gealltainn an ùine obrach iomlan. Rud eile, thèid cus luchd a chruthachadh.
Aon uair ann an jaeger-ui, chaidh iarrtasan ro mhòr a dhèanamh airson àireamh mhòr de lorgan, agus leis nach robh iad a ’feitheamh ri freagairt, rinn iad a-rithist e. Mar thoradh air an sin, thòisich ceist jaeger ag ithe mòran cuimhne agus a 'slaodadh sìos elastic. Air a chuideachadh le bhith ag ath-thòiseachadh jaeger-query
Const a chuireas agus a shàbhaileas a h-uile lorg.
Probabilistic a bhios a’ sìoladh lorgan le coltachd air choireigin.
Ratelimiting a tha a 'cuingealachadh an àireamh de lorgan gach diog. Faodaidh tu na roghainnean sin a rèiteachadh air an neach-dèiligidh, an dàrna cuid air an jaeger-agent no air an neach-cruinneachaidh. A-nis bidh sinn a’ cleachdadh const 1 anns a’ chruach luachair, leis nach eil mòran iarrtasan ann, ach bheir iad ùine mhòr. Anns an àm ri teachd, ma bheir seo cus luchd air an t-siostam, faodaidh tu a chuingealachadh.
Ma chleachdas tu cassandra, mar as trice cha bhith e a’ stòradh ach lorgan airson dà latha. Tha sinn a 'cleachdadh lorg elastaig agus tha lorgan air an stòradh fad na h-ùine agus chan eil iad air an toirt às. Tha clàr-amais air leth air a chruthachadh airson gach latha, mar eisimpleir jaeger-service-2019-03-04. Anns an àm ri teachd, feumaidh tu glanadh fèin-ghluasadach de sheann lorgan a rèiteachadh.
Gus na comharran fhaicinn feumaidh tu:
Tagh an t-seirbheis leis a bheil thu airson lorgan a shìoladh, mar eisimpleir, tomcat7-default airson seirbheis a tha a’ ruith san tomcat agus aig nach eil ainm fhèin.
An uairsin tagh an obrachadh, an ùine agus an ùine obrachaidh as ìsle, mar eisimpleir bho 10 diogan, gus dìreach cuir gu bàs fada a ghabhail.
Rach gu aon de na lorgan agus faic dè bha a 'slaodadh sìos an sin.
Cuideachd, ma tha fios air cuid de dh’ id iarrtais, gheibh thu lorg air an id seo tro sgrùdadh taga, ma tha an id seo air a logadh a-steach don raon lorg.
www.youtube.com/watch?v=qg0ENOdP1Lo Mar a chleachd sinn Jaeger agus Prometheus gus Ceistean Luchd-cleachdaidh Lightning-Fast a lìbhrigeadh - Bryan Boreham