Ka anyị na-esi na ngwa monolithic na-aga na ụlọ ọrụ microservices, anyị na-eche ihe ịma aka ọhụrụ ihu.
N'ime ngwa monolithic, ọ na-adịkarị mfe ịchọpụta akụkụ nke sistemụ ahụ njehie mere. O yikarịrị, nsogbu ahụ dị na koodu nke monolith n'onwe ya, ma ọ bụ na nchekwa data. Mana mgbe anyị malitere ịchọ nsogbu n'ime ụlọ ọrụ microservice, ihe niile adịkwaghị n'ụzọ doro anya. Anyị kwesịrị ịchọta ụzọ niile nke arịrịọ ahụ mere site na mmalite ruo n'isi wee họrọ ya na narị microservices. Ọzọkwa, ọtụtụ n'ime ha nwekwara ụlọ ọrụ nchekwa nke ha, nke nwekwara ike ịkpata njehie ezi uche dị na ya, yana nsogbu na arụmọrụ na ntachi obi.
Anọ m na-achọ ngwa ọrụ ogologo oge nke ga-enyere aka ịnagide nsogbu ndị dị otú ahụ (Edere m nke a na Habré:
Nchọgharị nkesa bụ ihe ngwọta na-emekarị maka nsogbu nke ịchọta njehie na sistemụ kesara. Ma gịnị ma ọ bụrụ na usoro a na-anakọta ozi gbasara mmekọrịta netwọk adịghị emejuputa na usoro ahụ, ma ọ bụ, nke ka njọ, na akụkụ nke usoro ahụ ọ na-arụ ọrụ nke ọma, ma n'akụkụ ya adịghị, ebe ọ bụ na etinyeghị ya na ọrụ ochie. ? Iji chọpụta kpọmkwem ihe kpatara nsogbu ahụ, ọ dị mkpa inwe nkọwa zuru ezu nke ihe na-eme na usoro ahụ. Ọ dị mkpa karịsịa ịghọta nke microservices na-etinye aka na isi ụzọ azụmahịa dị mkpa.
N'ebe a, usoro ntanetị ọrụ nwere ike ịbịara anyị aka, nke ga-emeso igwe niile maka ịnakọta ozi netwọk n'ogo dị ala karịa ọrụ n'onwe ha na-arụ ọrụ. Ụzọ a na-enye anyị ohere igbochi okporo ụzọ niile ma nyochaa ya na ofufe. Ọzọkwa, ngwa enweghịdị ịma ihe ọ bụla gbasara ya.
Ụzọ ntupu ọrụ
Echiche bụ isi nke usoro ntanetị ọrụ bụ ịgbakwunye ihe mkpuchi akụrụngwa ọzọ na netwọkụ, nke ga-enye anyị ohere ịme ihe ọ bụla na mmekọrịta ọrụ. Ọtụtụ mmejuputa atumatu na-arụ ọrụ dị ka ndị a: a na-agbakwunye akpa sidecar ọzọ nwere proxy transperent na microservice ọ bụla, nke a na-agafe okporo ụzọ na-abata na nke na-apụ apụ. Ma nke a bụ ebe anyị nwere ike ime mmezi nke ndị ahịa, tinye atumatu nchekwa, weta ihe mgbochi na ọnụ ọgụgụ nke arịrịọ ma nakọta ozi dị mkpa na mmekọrịta nke ọrụ na mmepụta.
Ngwọta
Enweelarị ọtụtụ mmejuputa iwu nke ụzọ a:
N'ihi ya, anyị lere anya kpọmkwem ike anyị chọrọ ugbu a, wee kpebie na isi ihe mere anyị ji malite imejuputa ihe ngwọta ndị dị otú ahụ bụ ikike ịnakọta ozi nchọta site na usoro dum n'ụzọ doro anya. Anyị chọkwara inwe njikwa na mmekọrịta nke ọrụ ma na-eme mgbanwe dị iche iche na nkụnye eji isi mee na-ebufe n'etiti ọrụ.
N'ihi ya, anyị bịara na mkpebi anyị:
Netramesh
Ebumnuche ndị bụ isi nke ngwọta ọhụrụ ahụ bụ obere ego n'elu ego na arụmọrụ dị elu. N'ime njirimara ndị bụ isi, anyị chọrọ ozugbo ka anyị nwee ike izipu ogologo oge n'ụzọ doro anya na sistemụ Jaeger anyị.
Taa, a na-emejuputa ihe ngwọta igwe ojii na Golang. Na, n'ezie, e nwere ihe kpatara nke a. Ide ngwa netwọkụ na Golang nke na-arụkọ ọrụ na I/O na nha nha n'ofe cores ka ọ dị mkpa na-adaba adaba ma dịkwa mfe. Na, ihe dịkwa oke mkpa, arụmọrụ zuru ezu iji dozie nsogbu a. Ọ bụ ya mere anyị ji họrọ Golang.
Ubu oke
Anyị etinyela mbọ anyị n'ịrụpụta nrụpụta kacha. Maka ngwọta nke etinyere n'akụkụ ihe atụ ọ bụla nke ọrụ ahụ, achọrọ obere oriri nke RAM na oge CPU. Na, n'ezie, nzaghachi nzaghachi kwesịrị ịdị ntakịrị.
Ka anyị hụ nsonaazụ anyị nwetara.
RAM
Netramesh na-eri ~ 10Mb na-enweghị okporo ụzọ yana 50Mb kacha na ibu ruru 10000 RPS kwa ọmụmaatụ.
Istio envoy proxy na-eri ~ 300Mb mgbe niile na ụyọkọ anyị na ọtụtụ puku ikpe. Nke a anaghị ekwe ka amụba ya na ụyọkọ dum.
Na Netramesh anyị nwetara mbelata ~ 10x na oriri ebe nchekwa.
CPU
Ojiji CPU hà nhata n'okpuru ibu. Ọ dabere na ọnụ ọgụgụ nke arịrịọ kwa nkeji oge na sidecar. Uru dị na arịrịọ 3000 kwa nkeji na ọnụ ọgụgụ kacha elu:
Enwere otu isi ihe dị mkpa: Netramesh - ngwọta na-enweghị ụgbọ elu njikwa na enweghị ibu anaghị eri oge CPU. Site na Istio, ụgbọ ala na-emelite ebe njedebe ọrụ mgbe niile. N'ihi ya, anyị nwere ike ịhụ foto a na-enweghị ibu:
Anyị na-eji HTTP/1 maka nkwukọrịta n'etiti ọrụ. Mmụba nke oge nzaghachi maka Istio mgbe proxy site na onye ozi ruru 5-10ms, nke bụ ọtụtụ maka ọrụ ndị dị njikere ịzaghachi na millisecond. Na Netramesh oge a agbadala na 0.5-2ms.
Ohere
Obere ego nke proxy ọ bụla na-eri na-eme ka o kwe omume idowe ya n'akụkụ ọrụ ọ bụla. Netramesh kpachaara anya kee ya na-enweghị akụrụngwa ụgbọ elu na-achịkwa iji mee ka ụgbọ ala ọ bụla dị fechaa. Ọtụtụ mgbe na ngwọta ntupu ọrụ, ụgbọ elu njikwa na-ekesa ozi nchọpụta ọrụ n'akụkụ ụgbọ ala ọ bụla. Tinyere ya na-abịa ozi gbasara nkwụsị oge yana nhazi nhazi. Ihe a niile na-enye gị ohere ịme ọtụtụ ihe bara uru, ma, ọ dị mwute ikwu, ọ na-agbapụ sidecars na nha.
Nchọpụta ọrụ
Netramesh anaghị agbakwunye usoro ọ bụla ọzọ maka nchọpụta ọrụ. A na-agbagharị okporo ụzọ niile n'ụzọ doro anya site na netra sidecar.
Netramesh na-akwado protocol ngwa HTTP/1. Iji kọwaa ya, a na-eji ndepụta ọdụ ụgbọ mmiri nwere ike ịhazi. Dịka, sistemụ nwere ọtụtụ ọdụ ụgbọ mmiri nke nkwukọrịta HTTP si eme. Dịka ọmụmaatụ, anyị na-eji 80, 8890, 8080 maka mmekọrịta n'etiti ọrụ na arịrịọ mpụga N'okwu a, enwere ike ịtọ ha site na iji mgbanwe gburugburu NETRA_HTTP_PORTS
.
Ọ bụrụ na ị na-eji Kubernetes dị ka onye na-agụ egwú na usoro ọrụ ya maka nkwurịta okwu intra-ụyọkọ n'etiti ọrụ, mgbe ahụ usoro ahụ ka dị otu. Nke mbụ, microservice na-enweta adreesị IP ọrụ site na iji kube-dns wee mepee njikọ ọhụrụ na ya. Ebu ụzọ guzobe njikọ a site na netra-sidecar mpaghara yana ngwugwu TCP niile na-abata na netra. Na-esote, netra-sidecar na-ewepụta njikọ na ebe mbụ. NAT na pod IP na ọnụ na-anọgide kpọmkwem otu ihe ahụ na-enweghị netra.
Nchọgharị ekesa na mbugharị okirikiri
Netramesh na-enye ọrụ achọrọ iji zipu oge nchọta gbasara mmekọrịta HTTP. Netra-sidecar na-atụgharị ụkpụrụ HTTP, tụọ arịrịọ igbu oge, wee wepụta ozi dị mkpa na isi HTTP. N'ikpeazụ, anyị na-enweta akara niile na otu usoro Jaeger. Maka nhazi nke ọma, ị nwekwara ike iji mgbanwe gburugburu ebe obibi nke ụlọ akwụkwọ gọọmentị nyere
Ma enwere nsogbu. Ruo mgbe ọrụ na-ewepụta ma zipụ nkụnye eji isi mee uber pụrụ iche, anyị agaghị ahụ ogologo nchụso ejikọrọ na sistemụ. Na nke a bụ ihe anyị chọrọ ngwa ngwa ịchọta ihe kpatara nsogbu. Ebe a ọzọ Netramesh nwere ngwọta. Proxies na-agụ nkụnye eji isi mee HTTP ma, ọ bụrụ na ha enweghị uber trace id, mepụta otu. Netramesh na-echekwa ozi gbasara arịrịọ mbata na ọpụpụ n'ime ụgbọ ala dị n'akụkụ wee dakọtara ha site na ime ka ha nwee nkụnye eji isi mee ihe ndị dị mkpa na-apụ apụ. Naanị ihe ị ga-eme na ọrụ bụ izipu naanị otu nkụnye eji isi mee X-Request-Id
, nke enwere ike ịhazi site na iji mgbanwe gburugburu ebe obibi NETRA_HTTP_REQUEST_ID_HEADER_NAME
. Iji chịkwaa nha ọnọdụ dị na Netramesh, ị nwere ike ịtọ mgbanwe gburugburu ebe a: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS
(oge a ga-echekwa ihe gbara ya gburugburu) na NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL
(ugboro nke mkpocha gburugburu).
Ọ dịkwa ike ijikọ ọtụtụ ụzọ na sistemụ gị site na iji akara nnọkọ pụrụ iche akara ha. Netra na-enye gị ohere ịwụnye HTTP_HEADER_TAG_MAP
ka ịgbanwee nkụnye eji isi mee HTTP ka ọ bụrụ mkpado oge nchụso kwekọrọ. Nke a nwere ike ịba uru karịsịa maka nnwale. Mgbe ịgafe ule arụ ọrụ, ị nwere ike ịhụ akụkụ nke sistemu ahụ emetụtara site na nzacha site na igodo nnọkọ kwekọrọ.
Na-ekpebi isi mmalite arịrịọ
Iji chọpụta ebe arịrịọ ahụ siri bịa, ịnwere ike iji ọrụ nke itinye isi okwu na-akpaghị aka na isi mmalite. Iji mgbanwe gburugburu ebe obibi NETRA_HTTP_X_SOURCE_HEADER_NAME
Ị nwere ike ezipụta aha nkụnye eji isi mee nke a ga-etinye na akpaghị aka. Site n'iji NETRA_HTTP_X_SOURCE_VALUE
ị nwere ike ịtọ uru nke a ga-edobe nkụnye eji isi mee X-Source maka arịrịọ ọpụpụ niile.
Nke a na-enye ohere ka ekesa nkesa nke nkụnye eji isi mee bara uru n'otu n'otu na netwọk niile. Mgbe ahụ ị nwere ike iji ya na ọrụ ma tinye ya na ndekọ na metrik.
Ntugharị okporo ụzọ na Netramesh internals
Netramesh nwere isi ihe abụọ. Nke mbụ, netra-init, na-edobe iwu netwọkụ iji gbochie okporo ụzọ. Ọ na-eji INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS
.
Ngwá ọrụ ahụ nwekwara ihe na-adọrọ mmasị - ntụgharị nke probabilistic. Ọ bụrụ na ị na-eji Netramesh naanị maka ịnakọta ogologo oge, mgbe ahụ na mpaghara mmepụta ị nwere ike ịchekwa akụrụngwa ma mee ka usoro ihe omume ahụ nwee ike iji mgbanwe. NETRA_INBOUND_PROBABILITY
и NETRA_OUTBOUND_PROBABILITY
(site na 0 ruo 1). Uru ndabara bụ 1 (a na-egbochi okporo ụzọ niile).
Mgbe nkwụsịtụ nke ọma gasịrị, netra sidecar na-anabata njikọ ọhụrụ ahụ wee jiri ya SO_ORIGINAL_DST
nhọrọ oghere iji nweta ebe mbụ. Netra mepee njikọ ọhụrụ na adreesị IP mbụ wee guzobe nkwurịta okwu TCP abụọ n'etiti ndị ọzọ, na-ege ntị na okporo ụzọ niile na-agafe. Ọ bụrụ na akọwara ọdụ ụgbọ mmiri dị ka HTTP, Netra na-anwa inyocha ma chọpụta ya. Ọ bụrụ na ntule HTTP ada ada, Netra ga-adaghachi na TCP ma na-ezochite ndị bytes n'ụzọ doro anya.
Ịmepụta eserese dabere
Mgbe m nwetasịrị nnukwu ọnụọgụ ọchụchọ na Jaeger, achọrọ m ịnweta eserese zuru oke nke mmekọrịta na sistemụ. Mana ọ bụrụ na sistemu gị juru eju na ọtụtụ ijeri nchọta na-agbakọ kwa ụbọchị, ịchịkọta ha abụghị ọrụ dị mfe. Enwere ụzọ isi mee nke a:
Ọ bụrụ na ị na-eji Elasticsearch na-echekwa oge nchọta, ị nwere ike iji
Otu esi eji Netramesh
Enwere ike itinye Netra n'ụzọ dị mfe na ọrụ ọ bụla na-agba ndị egwu egwu ọ bụla. Ị nwere ike ịhụ ihe atụ
N'oge a, Netra enweghị ikike imejuputa akụkụ akụkụ na ọrụ, mana enwere atụmatụ maka mmejuputa.
Ọdịnihu nke Netramesh
Ihe mgbaru ọsọ bụ isi
N'ọdịnihu, Netramesh ga-akwado usoro oyi akwa ngwa ndị ọzọ na-abụghị HTTP. Ụzọ ụzọ L7 ga-adị n'ọdịnihu dị nso.
Jiri Netramesh ma ọ bụrụ na ị nweta nsogbu ndị yiri ya wee degara anyị ajụjụ na aro.
isi: www.habr.com