Mar a ghluaiseas sinn bho thagradh monolithic gu ailtireachd microservices, tha dùbhlain ùra romhainn.
Ann an tagradh monolithic, mar as trice tha e gu math furasta faighinn a-mach dè am pàirt den t-siostam anns an do thachair a’ mhearachd. Nas coltaiche, tha an duilgheadas ann an còd an monolith fhèin, no san stòr-dàta. Ach nuair a thòisicheas sinn a 'coimhead airson duilgheadas ann an ailtireachd microservice, chan eil a h-uile dad cho follaiseach tuilleadh. Feumaidh sinn an t-slighe gu lèir a lorg a ghabh an t-iarrtas bho thoiseach gu deireadh agus a thaghadh bho na ceudan de mhicro-sheirbheisean. A bharrachd air an sin, tha na goireasan stòraidh aca fhèin aig mòran dhiubh, a dh’ fhaodadh mearachdan loidsigeach adhbhrachadh, a bharrachd air duilgheadasan le coileanadh agus fulangas sgàinidhean.
Tha mi air a bhith a’ coimhead airson ùine mhòr airson inneal a chuidicheadh le bhith a’ dèiligeadh ri duilgheadasan mar sin (sgrìobh mi mu dheidhinn seo air Habré:
Tha lorg sgaoilte mar fhuasgladh cumanta air an duilgheadas a thaobh lorg mhearachdan ann an siostaman sgaoilte. Ach dè mura h-eil an dòigh-obrach seo airson fiosrachadh a chruinneachadh mu eadar-obrachadh lìonra fhathast air a chuir an gnìomh san t-siostam, no, nas miosa, ann am pàirt den t-siostam tha e ag obair gu ceart mar-thà, ach ann am pàirt chan eil e, leis nach deach a chuir ri seann sheirbheisean ? Gus faighinn a-mach fìor adhbhar na duilgheadas, feumar dealbh iomlan a bhith agad de na tha a 'tachairt san t-siostam. Tha e gu sònraichte cudromach tuigsinn dè na meanbh-sheirbheisean a tha an sàs ann am prìomh shlighean a tha deatamach do ghnìomhachas.
An seo faodaidh an dòigh mogal seirbheis a thighinn gu ar taic, a dhèiligeas ris a h-uile inneal airson fiosrachadh lìonra a chruinneachadh aig ìre nas ìsle na na seirbheisean fhèin ag obrachadh. Leigidh an dòigh-obrach seo leinn stad a chuir air a h-uile trafaic agus a sgrùdadh air an itealan. A bharrachd air an sin, chan fheum eadhon fios a bhith aig tagraidhean mu dheidhinn.
Dòigh-obrach mogal seirbheis
Is e am prìomh bheachd air dòigh-obrach mogal seirbheis còmhdach bun-structair eile a chuir thairis air an lìonra, a leigeas leinn rud sam bith a dhèanamh le eadar-obrachadh eadar-sheirbheis. Bidh a’ mhòr-chuid de bhuileachadh ag obair mar a leanas: tha inneal càr-taobh a bharrachd le neach-ionaid follaiseach air a chur ri gach microservice, tro bheil a h-uile trafaic a-steach agus a-mach den t-seirbheis air a dhol seachad. Agus is e seo an dearbh àite far an urrainn dhuinn cothromachadh teachdaiche a dhèanamh, poileasaidhean tèarainteachd a chuir an sàs, casg a chuir air an àireamh de dh ’iarrtasan agus fiosrachadh cudromach a chruinneachadh mu eadar-obrachadh sheirbheisean ann an cinneasachadh.
Fuasglaidhean
Tha grunn dhòighean-obrach air an cur an gnìomh mar-thà:
Mar thoradh air an sin, choimhead sinn air dè dìreach na comasan a bha a dhìth oirnn an-dràsta, agus cho-dhùin sinn gur e am prìomh adhbhar gun do thòisich sinn a’ cur an gnìomh fuasglaidhean mar sin an comas fiosrachadh lorg bhon t-siostam gu lèir a chruinneachadh gu follaiseach. Bha sinn cuideachd airson smachd a bhith againn air eadar-obrachadh sheirbheisean agus diofar làimhseachadh a dhèanamh leis na cinn a thèid a ghluasad eadar seirbheisean.
Mar thoradh air an sin, thàinig sinn chun cho-dhùnadh againn:
netramesh
B’ e prìomh amasan an fhuasglaidh ùr goireasan ìosal os cionn agus àrd-choileanadh. Am measg nam prìomh fheartan, bha sinn sa bhad airson a bhith comasach air rèisean lorg a chuir chun t-siostam Jaeger againn gu follaiseach.
An-diugh, tha a’ mhòr-chuid de fhuasglaidhean sgòthan air an cur an gnìomh ann an Golang. Agus, gu dearbh, tha adhbharan airson seo. Tha e goireasach agus gu math sìmplidh a bhith a’ sgrìobhadh thagraidhean lìonraidh ann an Golang a bhios ag obair gu neo-chunbhalach le I/O agus a’ sgèile thairis air coraichean mar a dh’ fheumar. Agus, dè a tha cuideachd glè chudromach, tha an coileanadh gu leòr gus an duilgheadas seo fhuasgladh. Sin as coireach gun do thagh sinn Golang cuideachd.
Coileanadh
Tha sinn air ar n-oidhirpean a chuimseachadh air a’ chinneasachd as àirde a choileanadh. Airson fuasgladh a tha air a chleachdadh ri taobh gach eisimpleir den t-seirbheis, tha feum air beagan ùine de RAM agus CPU. Agus, gu dearbh, bu chòir an dàil freagairt a bhith beag cuideachd.
Chì sinn dè na toraidhean a fhuair sinn.
RAM
Bidh Netramesh ag ithe ~ 10Mb às aonais trafaic agus 50Mb aig a’ char as àirde le luchd suas ri 10000 RPS gach eisimpleir.
Bidh neach-ionaid tosgaire Istio an-còmhnaidh ag ithe ~300Mb anns na cruinneachaidhean againn le mìltean de chùisean. Chan eil seo a 'leigeil leis a bhith air a sgèileadh don bhuidheann gu lèir.
Le Netramesh fhuair sinn lùghdachadh ~ 10x ann an caitheamh cuimhne.
CPU
Tha cleachdadh CPU an ìre mhath co-ionann fo luchd. Tha e an urra ris an àireamh de dh'iarrtasan gach aonad ùine chun a 'chàr-taobh. Luachan aig 3000 iarrtas gach diog aig àirde:
Tha aon phuing nas cudromaiche ann: Netramesh - chan eil fuasgladh gun itealan smachd agus gun luchd ag ithe ùine CPU. Le Istio, bidh sidecars an-còmhnaidh ag ùrachadh puingean crìochnachaidh seirbheis. Mar thoradh air an sin, chì sinn an dealbh seo gun luchd:
Bidh sinn a’ cleachdadh HTTP/1 airson conaltradh eadar seirbheisean. Bha an àrdachadh san ùine freagairt airson Istio nuair a bha e a’ dol tro thosgaire suas ri 5-10ms, rud a tha gu math mòr airson seirbheisean a tha deiseil airson freagairt ann am millisecond. Le Netramesh tha an ùine seo air a dhol sìos gu 0.5-2ms.
Scalability
Leis an ìre bheag de ghoireasan a bhios gach neach-ionaid ag ithe tha e comasach a chuir ri taobh gach seirbheis. Chaidh Netramesh a chruthachadh a dh’aona ghnothach às aonais pàirt plèana smachd gus dìreach gach càr-taobh a chumail aotrom. Gu tric ann am fuasglaidhean mogal seirbheis, bidh am plèana smachd a’ sgaoileadh fiosrachadh lorg seirbheis gu gach càr-taobh. Còmhla ris thig fiosrachadh mu amannan-ama agus roghainnean cothromachaidh. Tha seo uile a 'toirt cothrom dhut tòrr rudan feumail a dhèanamh, ach, gu mì-fhortanach, bidh e a' blàthachadh chàraichean taobh ann am meud.
Lorg seirbheis
Cha bhith Netramesh a’ cur uidheamachd a bharrachd ris airson lorg seirbheis. Tha an trafaic gu lèir air a ghluasad gu follaiseach tro netra sidecar.
Tha Netramesh a’ toirt taic do phròtacal tagraidh HTTP/1. Gus a mhìneachadh, thèid liosta rèiteachaidh de phuirt a chleachdadh. Mar as trice, tha grunn phuirt aig an t-siostam tro bheil conaltradh HTTP a’ tachairt. Mar eisimpleir, bidh sinn a’ cleachdadh 80, 8890, 8080 airson eadar-obrachadh eadar seirbheisean agus iarrtasan bhon taobh a-muigh. Anns a’ chùis seo, faodar an suidheachadh a’ cleachdadh caochladair àrainneachd NETRA_HTTP_PORTS
.
Ma chleachdas tu Kubernetes mar orcastra agus an uidheamachd eintiteas Seirbheis aige airson conaltradh taobh a-staigh cruinneachadh eadar seirbheisean, tha an uidheamachd fhathast mar an ceudna. An toiseach, bidh am microservice a’ faighinn seòladh IP seirbheis a’ cleachdadh kube-dns agus a’ fosgladh ceangal ùr ris. Tha an ceangal seo air a stèidheachadh an toiseach leis an netra-sidecar ionadail agus bidh a h-uile pacaid TCP a’ ruighinn netra an toiseach. An ath rud, bidh netra-sidecar a’ stèidheachadh ceangal ris a’ cheann-uidhe thùsail. Tha NAT air pod IP air an nód fhathast an aon rud ri às aonais netra.
Sgaoileadh lorg agus cur air adhart co-theacsa
Tha Netramesh a’ toirt seachad an comas-gnìomh a dh’ fheumar gus rèisean lorg a chuir mu eadar-obrachaidhean HTTP. Bidh Netra-sidecar a’ parsadh a’ phròtacal HTTP, a’ tomhas dàil iarrtasan, agus a’ toirt a-mach am fiosrachadh riatanach bho chinn-cinn HTTP. Aig a’ cheann thall, gheibh sinn a h-uile lorg ann an aon shiostam Jaeger. Airson rèiteachadh grinn, faodaidh tu cuideachd na caochladairean àrainneachd a thug an leabharlann oifigeil seachad a chleachdadh
Ach tha duilgheadas ann. Gus am bi seirbheisean a’ gineadh agus a’ cur bann-cinn uber sònraichte, chan fhaic sinn raointean lorg ceangailte san t-siostam. Agus is e seo a dh'fheumas sinn gus adhbhar duilgheadasan a lorg gu luath. An seo a-rithist tha fuasgladh aig Netramesh. Bidh luchd-ionaid a’ leughadh cinn-cinn HTTP agus, mura h-eil an uber trace id annta, cruthaich fear. Bidh Netramesh cuideachd a’ stòradh fiosrachadh mu iarrtasan a tha a’ tighinn a-steach agus a-mach ann an càr-taobh agus gan maidseadh le bhith gan beairteachadh leis na cinn-cinn iarrtasan a-mach a tha riatanach. Chan eil agad ach a dhèanamh anns na seirbheisean dìreach aon bhann-cinn a chuir X-Request-Id
, a ghabhas a rèiteachadh a’ cleachdadh caochladair àrainneachd NETRA_HTTP_REQUEST_ID_HEADER_NAME
. Gus smachd a chumail air meud a’ cho-theacsa ann an Netramesh, faodaidh tu na caochladairean àrainneachd a leanas a shuidheachadh: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS
(an ùine airson an tèid an co-theacsa a stòradh) agus NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL
(tricead glanadh co-theacsa).
Tha e comasach cuideachd grunn shlighean a chur còmhla air an t-siostam agad le bhith gan comharrachadh le comharra seisean sònraichte. Leigidh Netra leat a stàladh HTTP_HEADER_TAG_MAP
gus bannan-cinn HTTP a thionndadh gu tagaichean rèis lorg co-fhreagarrach. Faodaidh seo a bhith gu sònraichte feumail airson deuchainn. Às deidh dhut a dhol seachad air an deuchainn gnìomh, chì thu dè am pàirt den t-siostam air an tug sìoladh leis an iuchair seisean co-fhreagarrach buaidh.
Co-dhùnadh an Stòr Iarrtais
Gus faighinn a-mach cò às a thàinig an t-iarrtas, faodaidh tu an comas-gnìomh a chleachdadh gus bann-cinn a chuir ris an stòr gu fèin-ghluasadach. A’ cleachdadh caochladair àrainneachd NETRA_HTTP_X_SOURCE_HEADER_NAME
Faodaidh tu ainm bann-cinn a shònrachadh a thèid a stàladh gu fèin-obrachail. Le bhith a 'cleachdadh NETRA_HTTP_X_SOURCE_VALUE
faodaidh tu an luach a shuidheachadh air an tèid bann-cinn X-Source a shuidheachadh airson gach iarrtas a-mach.
Leigidh seo le bhith a 'sgaoileadh a' chinn-cinn feumail seo gu co-ionnan air feadh an lìonra. An uairsin faodaidh tu a chleachdadh ann an seirbheisean agus a chuir ri logaichean agus meatrach.
Slighe trafaic agus taobh a-staigh Netramesh
Tha dà phrìomh phàirt aig Netramesh. Tha a’ chiad fhear, netra-init, a’ suidheachadh riaghailtean lìonra gus casg a chuir air trafaic. Bidh e a’ cleachdadh INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS
.
Tha feart inntinneach aig an inneal cuideachd - slighe probabilistic. Ma chleachdas tu Netramesh a-mhàin airson rèisean lorg a chruinneachadh, an uairsin ann an àrainneachd cinneasachaidh faodaidh tu goireasan a shàbhaladh agus slighe probabilistic a chomasachadh a’ cleachdadh caochladairean NETRA_INBOUND_PROBABILITY
и NETRA_OUTBOUND_PROBABILITY
(bho 0 gu 1). Is e an luach bunaiteach 1 (tha a h-uile trafaic air a ghlacadh).
Às deidh eadar-bheachd soirbheachail, bidh Netra sidecar a’ gabhail ris a’ cheangal agus na cleachdaidhean ùra SO_ORIGINAL_DST
roghainn socaid gus an ceann-uidhe tùsail fhaighinn. Bidh Netra an uairsin a ’fosgladh ceangal ùr ris an t-seòladh IP tùsail agus a’ stèidheachadh conaltradh TCP dà-shligheach eadar na pàrtaidhean, ag èisteachd ris a h-uile trafaic a ’dol troimhe. Ma tha am port air a mhìneachadh mar HTTP, bidh Netra a’ feuchainn ri a pharsadh agus a lorg. Ma dh’ fhailicheas parsadh HTTP, bidh Netra a’ tuiteam air ais gu TCP agus gu follaiseach a’ proxachadh nam bytes.
Togail graf eisimeileachd
Às deidh dhomh tòrr fiosrachaidh lorg fhaighinn ann an Jaeger, tha mi airson graf iomlan de eadar-obrachaidhean san t-siostam fhaighinn. Ach ma tha an siostam agad làn luchdaichte agus na billeanan de rèisean lorg a’ cruinneachadh gach latha, chan e obair cho furasta a bhith gan cruinneachadh. Tha dòigh oifigeil ann airson seo a dhèanamh:
Ma tha thu a’ cleachdadh Elasticsearch gus rèisean lorg a stòradh, faodaidh tu a chleachdadh
Mar a chleachdas tu Netramesh
Faodar Netra a chuir gu furasta ri seirbheis sam bith a tha a’ ruith orcastra sam bith. Chì thu eisimpleir
Aig an àm seo, chan eil comas aig Netra càraichean-taobh a chuir an gnìomh gu fèin-ghluasadach gu seirbheisean, ach tha planaichean ann airson a bhuileachadh.
San àm ri teachd Netramesh
prìomh amas
Anns an àm ri teachd, bheir Netramesh taic do phròtacalan còmhdach tagraidh eile a bharrachd air HTTP. Bidh slighe L7 ri fhaighinn a dh’ aithghearr.
Cleachd Netramesh ma thachras tu air duilgheadasan coltach ris agus sgrìobh thugainn le ceistean agus molaidhean.
Source: www.habr.com