Rehefa miala amin'ny fampiharana monolitika mankany amin'ny maritrano microservices isika dia miatrika fanamby vaovao.
Amin'ny fampiharana monolithic, matetika dia mora ny mamaritra hoe iza amin'ny rafitra misy ny hadisoana. Azo inoana fa ny olana dia ao amin'ny code of the monolith mihitsy, na ao amin'ny database. Saingy rehefa manomboka mitady olana amin'ny maritrano microservice isika dia tsy miharihary intsony ny zava-drehetra. Mila mitady ny lalana manontolo nalain'ny fangatahana hatramin'ny voalohany ka hatramin'ny farany isika ary misafidy izany amin'ny microservices an-jatony. Ankoatra izany, maro amin'izy ireo ihany koa no manana trano fitahirizana azy manokana, izay mety hiteraka hadisoana lojika, ary koa olana amin'ny fandeferana sy ny fandeferana.
Efa ela aho no nitady fitaovana hanampy amin'ny fiatrehana ny olana toy izany (Nanoratra momba an'io tao amin'ny HabrΓ© aho:
Ny tracing zaraina dia vahaolana mahazatra amin'ny olana amin'ny fitadiavana lesoka amin'ny rafitra mizara. Ahoana anefa raha mbola tsy nampiharina tao amin'ny rafitra io fomba fanangonana vaovao momba ny fifandraisana amin'ny tambajotra io, na, ratsy kokoa, amin'ny ampahany amin'ny rafitra dia efa mandeha tsara izy io, fa amin'ny ampahany dia tsy mandeha, satria tsy nampidirina tamin'ny serivisy taloha. ? Mba hamaritana ny tena fototry ny olana dia ilaina ny manana sary feno momba ny zava-mitranga ao amin'ny rafitra. Zava-dehibe indrindra ny mahatakatra hoe iza amin'ireo microservices no tafiditra amin'ny lalana manan-danja ara-barotra.
Eto dia afaka manampy antsika ny fomba fiasa amin'ny serivisy, izay hiatrika ny milina rehetra amin'ny fanangonana vaovao momba ny tambajotra amin'ny ambaratonga ambany noho ny fiasan'ny serivisy. Ity fomba fiasa ity dia ahafahantsika manakana ny fifamoivoizana rehetra ary mamakafaka izany amin'ny sidina. Ankoatra izany, ny fampiharana dia tsy mila mahafantatra na inona na inona momba izany.
Service mesh fomba
Ny hevi-dehibe amin'ny fomba fiasa mesh serivisy dia ny manampy sosona fotodrafitrasa hafa amin'ny tambajotra, izay ahafahantsika manao zavatra amin'ny fifandraisan'ny serivisy. Ny ankamaroan'ny fampiharana dia miasa toy izao manaraka izao: kaontenera sidecar fanampiny misy proxy mangarahara dia ampiana amin'ny microservice tsirairay, izay mandalo ny fifamoivoizana miditra sy mivoaka amin'ny serivisy. Ary io no toerana ahafahantsika manao ny fifandanjana amin'ny mpanjifa, mampihatra ny politikam-piarovana, mametraka fameperana ny isan'ny fangatahana ary manangona fampahalalana manan-danja momba ny fifandraisan'ny serivisy amin'ny famokarana.
vahaolana
Efa misy fampiharana maromaro amin'ity fomba fiasa ity:
Vokatr'izany, nijery tsara ny fahaiza-manao ilainay izahay amin'izao fotoana izao, ary nanapa-kevitra izahay fa ny tena antony nanombohanay nametraka vahaolana toy izany dia ny fahafahana manangona vaovao momba ny fanaraha-maso avy amin'ny rafitra manontolo amin'ny mangarahara. Te-hifehy ny fifandraisan'ny serivisy ihany koa izahay ary hanao fanodinkodinana isan-karazany amin'ny lohapejy afindra eo amin'ny serivisy.
Vokatr'izany dia tonga tamin'ny fanapahan-kevitray izahay:β
Netramesh
Ny tena tanjona amin'ny vahaolana vaovao dia ambany ny harena ambony sy ny fahombiazana ambony. Anisan'ireo endri-javatra lehibe indrindra, naniry avy hatrany izahay ny handefa mangarahara amin'ny rafitra Jaeger.
Ankehitriny, ny ankamaroan'ny vahaolana rahona dia ampiharina ao Golang. Ary mazava ho azy fa misy antony mahatonga izany. Ny fanoratana fampiharana amin'ny tambajotra amin'ny Golang izay miasa tsy mifanaraka amin'ny I/O sy ny mari-pandrefesana amin'ny cores raha ilaina dia mety ary tena tsotra. Ary, ny tena zava-dehibe koa, ny fampisehoana dia ampy hamahana ity olana ity. Izany no antony nisafidiananay an'i Golang.
vokatra
Nampifantoka ny ezakay izahay tamin'ny fahazoana vokatra ambony indrindra. Ho an'ny vahaolana apetraka eo akaikin'ny serivisy tsirairay dia ilaina ny fanjifana kely ny RAM sy ny fotoana CPU. Ary, mazava ho azy, tokony ho kely ihany koa ny fahataran'ny valiny.
Andeha hojerentsika izay vokatra azo.
ram
Ny Netramesh dia mandany ~ 10Mb tsy misy fifamoivoizana ary 50Mb ambony indrindra miaraka amin'ny entana hatramin'ny 10000 RPS isaky ny tranga.
Istio envoy proxy dia mandany ~ 300Mb foana ao amin'ny cluster misy antsika miaraka amin'ny tranga an'arivony. Izany dia tsy mamela azy hihena amin'ny cluster manontolo.
Miaraka amin'ny Netramesh dia nahazo ~10x fampihenana ny fanjifana fahatsiarovana.
UnitΓ© centrale
Ny fampiasana CPU dia mitovy amin'ny enta-mavesatra. Miankina amin'ny isan'ny fangatahana isaky ny adiny iray amin'ny sidecar izany. Sanda amin'ny fangatahana 3000 isan-tsegondra amin'ny faratampony:
Misy teboka iray manan-danja kokoa: Netramesh - vahaolana tsy misy fiaramanidina fanaraha-maso ary tsy misy entana dia tsy mandany fotoana CPU. Miaraka amin'i Istio, ny sidecars dia manavao foana ny teboka fiafaran'ny serivisy. Vokatr'izany dia afaka mahita ity sary tsy misy entana ity isika:
Mampiasa HTTP/1 izahay mba hifandraisana eo amin'ny serivisy. Ny fitomboan'ny fotoana famaliana ho an'i Istio rehefa manao proxy amin'ny alΓ lan'ny iraka dia hatramin'ny 5-10ms, izay be dia be ho an'ny serivisy vonona hamaly ao anatin'ny milisegondra. Miaraka amin'ny Netramesh tamin'ity indray mitoraka ity dia nihena ho 0.5-2ms.
Scalability
Ny habetsaky ny loharanon-karena lanin'ny proxy tsirairay dia ahafahana mametraka azy eo akaikin'ny serivisy tsirairay. Netramesh dia noforonina tsy misy singa fiaramanidina fanaraha-maso mba hitazonana fotsiny ny lanja tsirairay. Matetika amin'ny vahaolana amin'ny serivisy mesh, ny fiaramanidina fanaraha-maso dia mizara fampahalalana momba ny fitadiavana serivisy ho an'ny sidecar tsirairay. Miaraka amin'izany dia misy fampahalalana momba ny fotoana fiatoana sy ny fandanjana. Izany rehetra izany dia ahafahanao manao zavatra mahasoa maro, saingy, indrisy, bloats sidecars ny habeny.
Fahitana serivisy
Netramesh dia tsy manampy mekanika fanampiny amin'ny fitadiavana serivisy. Ny fifamoivoizana rehetra dia alefa mangarahara amin'ny alΓ lan'ny sidecar netra.
Ny Netramesh dia manohana ny protocol fampiharana HTTP/1. Mba hamaritana azy dia misy lisitry ny seranan-tsambo azo fehezina. Amin'ny ankapobeny, ny rafitra dia manana seranana maromaro izay ahafahan'ny fifandraisana HTTP. Ohatra, mampiasa 80, 8890, 8080 izahay ho an'ny fifandraisana eo amin'ny serivisy sy ny fangatahana ivelany NETRA_HTTP_PORTS
.
Raha mampiasa Kubernetes ianao ho mpandrindra sy ny rafitra sampan-draharahan'ny Serivisy ho an'ny fifandraisana an-tsokosoko eo amin'ny serivisy, dia tsy miova ny mekanika. Voalohany, ny microservice dia mahazo adiresy IP serivisy mampiasa kube-dns ary manokatra fifandraisana vaovao aminy. Ity fifandraisana ity dia napetraka voalohany amin'ny netra-sidecar eo an-toerana ary ny fonosana TCP rehetra dia tonga any amin'ny netra. Manaraka, ny netra-sidecar dia mametraka fifandraisana amin'ny toerana voalohany. Ny NAT amin'ny pod IP amin'ny node dia mitovy tanteraka amin'ny tsy misy netra.
Fizarana tracing sy contexte forwarding
Ny Netramesh dia manome ny fampiasa ilaina handefasana tsipika momba ny fifandraisana HTTP. Ny Netra-sidecar dia mamadika ny protocol HTTP, mandrefy ny fahatarana amin'ny fangatahana, ary maka ny fampahalalana ilaina amin'ny lohatenin'ny HTTP. Amin'ny farany, mahazo ny dian-tongotra rehetra ao anaty rafitra Jaeger tokana isika. Ho an'ny fanamafisam-peo tsara dia azonao atao koa ny mampiasa ny fari-piainan'ny tontolo iainana omen'ny tranomboky ofisialy
Saingy misy olana. Mandra-pamoaka sy mandefa lohatenin'ny uber manokana ny serivisy, dia tsy ho hitantsika ao amin'ny rafitra ny elanelana fanaraha-maso mifandray. Ary izany no ilaintsika mba hahitana haingana ny anton'ny olana. Eto indray dia manana vahaolana i Netramesh. Mamaky lohatenin'ny HTTP ny proxy ary, raha tsy misy ny id uber trace, dia mamorona iray. Ny Netramesh koa dia mitahiry vaovao momba ny fangatahana miditra sy mivoaka ao anaty sidecar ary mampifanaraka azy ireo amin'ny alΓ lan'ny fampitomboana azy ireo amin'ny lohatenin'ny fangatahana mivoaka ilaina. Ny hany tokony hataonao amin'ny serivisy dia ny mandefa lohapejy iray monja X-Request-Id
, izay azo amboarina amin'ny alΓ lan'ny fari-piainan'ny tontolo iainana NETRA_HTTP_REQUEST_ID_HEADER_NAME
. Mba hifehezana ny haben'ny contexte ao amin'ny Netramesh dia azonao atao ny mametraka ireto fari-piainana manaraka ireto: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS
(ny fotoana hitehirizana ny contexte) ary NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL
(fahatekan'ny fanadiovana ny contexte).
Azo atao ihany koa ny manambatra lalana maro ao amin'ny rafitrao amin'ny alalan'ny fanamarihana azy ireo amin'ny mari-pamantarana fivoriana manokana. Netra dia mamela anao hametraka HTTP_HEADER_TAG_MAP
hanova ny lohatenin'ny HTTP ho marika mifanandrify amin'ny halaviran-dalana. Ity dia mety ilaina indrindra amin'ny fitsapana. Rehefa avy nandalo ny fitsapana miasa ianao dia afaka mahita izay ampahany amin'ny rafitra no voakasika tamin'ny sivana tamin'ny fanalahidin'ny session mifandraika amin'izany.
Famaritana ny loharanon'ny fangatahana
Mba hamaritana hoe avy aiza ny fangatahana dia azonao atao ny mampiasa ny fampiasa amin'ny fampidirana ho azy lohapejy miaraka amin'ny loharano. Mampiasa fari-piainana manodidina NETRA_HTTP_X_SOURCE_HEADER_NAME
Azonao atao ny mamaritra anarana lohateny izay hapetraka ho azy. Amin'ny fampiasana NETRA_HTTP_X_SOURCE_VALUE
azonao atao ny mametraka ny sandan'ny lohatenin'ny X-Source ho an'ny fangatahana mivoaka rehetra.
Izany dia ahafahan'ny fizarana an'ity lohapejy mahasoa ity ho zaraina mitovy manerana ny tambajotra. Avy eo dia azonao ampiasaina amin'ny serivisy izany ary ampio amin'ny logs sy metrika.
Fifamoivoizana fifamoivoizana sy Netramesh anatiny
Ny Netramesh dia misy singa roa lehibe. Ny voalohany, netra-init, dia mametraka fitsipika momba ny tambajotra hanakanana ny fifamoivoizana. Mampiasa INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS
.
Ny fitaovana dia manana endri-javatra mahaliana ihany koa - ny lalana mety. Raha mampiasa Netramesh fotsiny ianao amin'ny fanangonana ny halaviran-dalana, dia ao anatin'ny tontolo famokarana dia afaka mitahiry loharano ianao ary mamela ny lalana mety amin'ny fampiasana variables. NETRA_INBOUND_PROBABILITY
ΠΈ NETRA_OUTBOUND_PROBABILITY
(avy amin'ny 0 ka hatramin'ny 1). Ny sandan'ny default dia 1 (voasakana ny fifamoivoizana rehetra).
Taorian'ny interception nahomby, netra sidecar dia manaiky ny fifandraisana sy ny fampiasana vaovao SO_ORIGINAL_DST
safidy faladia hahazoana ny toerana voalohany. Manokatra fifandraisana vaovao amin'ny adiresy IP tany am-boalohany i Netra avy eo ary mametraka fifandraisana TCP roa tonta eo amin'ireo antoko, mihaino ny fifamoivoizana rehetra mandalo. Raha faritana ho HTTP ny seranan-tsambo, Netra dia manandrana manara-maso sy manara-maso azy. Raha toa ka tsy mahomby ny fanaparitahana HTTP, dia miverina amin'ny TCP i Netra ary mamadika mangarahara ireo bytes.
Manangana tabilao fiankinan-doha
Taorian'ny nahazoako fampahalalana be dia be ao amin'ny Jaeger, te-hahazo grafika feno momba ny fifandraisana ao amin'ny rafitra aho. Saingy raha toa ka feno entana ny rafitrao ary miangona isan'andro ny halaviran-dalana an'arivony tapitrisa, dia tsy mora ny manambatra azy ireo. Misy fomba ofisialy hanaovana izany:
Raha mampiasa Elasticsearch ianao hitahiry ny halaviran-dalana dia azonao ampiasaina
Ahoana ny fampiasana Netramesh
Netra dia azo ampiana mora foana amin'ny serivisy rehetra mandeha amin'ny orkestra. Afaka mahita ohatra ianao
Amin'izao fotoana izao, ny Netra dia tsy manana fahafahana hampihatra ho azy ny sidecars amin'ny serivisy, fa misy drafitra ho an'ny fampiharana.
Ny hoavin'i Netramesh
Ny tanjona fototra
Amin'ny ho avy, ny Netramesh dia hanohana protocols sosona fampiharana hafa ankoatra ny HTTP. Ny zotra L7 dia ho hita ato ho ato.
Ampiasao ny Netramesh raha sendra olana mitovy amin'izany ianao ary manorata aminay misy fanontaniana sy soso-kevitra.
Source: www.habr.com