Vad är en servicenät? Varför har de betydelse?

0
151
Quanrong Huang/Shutterstock.com

Ett servicenät är ett infrastrukturlager som underlättar kommunikationen mellan applikationskomponenter. Nätverk ger funktionalitet inklusive serviceupptäckt, belastningsbalansering och observerbarhet.

Servicemaskor finns vanligtvis i distribuerade system som består av mikrotjänster. Nätet ger ett sätt för olika tjänster att utbyta data. Det hanterar endast intern trafik, överlämnas till en API-gateway eller kantnod för att tjäna till användare. Populära nät inkluderar Linkerd och Istio.

Vad är Inside The Mesh?

Grundkonceptet med ett servicenät är ganska enkel. Skiktet inkapslar nätverksproxyer som dirigerar trafik till enskilda tjänster. Ett kontrollskikt hanterar nätverkssamtal mellan tjänsterna och orkestrerar användningen av proxyn.

Nätets grundläggande syfte är att göra det lättare och mer pålitligt för tjänster att kommunicera. Låt oss ta ett enkelt par tjänster: ett API och ett separat autentiseringssystem. API: t kommer att behöva gränssnitt med autentiseringstjänsten när det tar emot förfrågningar.

Med ett servicenät får du pålitlig kommunikation mellan tjänster med kända identifierare. Ditt API kan skicka nätverkssamtal till autenttjänstens värdnamn och vara säker på att det fortfarande kommer att lösa korrekt, även om autentiseringstjänsten flyttas till en annan plats i datacentret. Servicenätverket fungerar för att transparent förmedla förfrågningar till lämplig tjänst.

Annonsering

Att använda ett servicenät gör det lättare att flytta tjänster. Hårdkodad nätverkskommunikationslogik kan snabbt bli begränsande. Ett nät ger dig mer flexibilitet att distribuera dina arbetsbelastningar i framtiden.

Hur implementeras servicenätverk?

De flesta moderna servicenätverk består av två komponenter: ett kontrollplan och ett dataplan. Kärnfunktionaliteten tillhör dataplanet, som berör sig data som flyter genom systemet.

Varje begäran till nätet kommer att behandlas av dataplanet. Det kommer att upptäcka rätt service att använda, utföra loggningsåtgärder och göra det möjligt för villkorligt beteende att filtrera och omdirigera trafik.

Tjänster är vanligtvis en del av din applikation så att de kan inkludera routningslogik. Dataplan inspekterar konfigurationsregler för att bestämma den slutliga slutpunkten baserat på HTTP-rubriker, förfrågningsparametrar och andra värden från begäran.

Medan dataplanet surrar med aktivitet är kontrollplanet relativt enklare. Den övervakar proxyn i dataplanet och tillhandahåller ett API så att du kan interagera med dem.

Detta diagram från Istio-projektet illustrerar hur komponenterna passar ihop. Varje tjänst får sin egen proxy. Intrångstrafik flyter genom proxyerna. De kan kommunicera med kontrollplanet för att upptäcka andra tjänster. Proxies kallas vanligtvis & # 8220; sidovagnar & # 8221; när de kör tillsammans med den tjänst de representerar.

Övriga funktioner i tjänstenät

Servicemaskor ger vanligtvis ytterligare funktionalitet utöver grundläggande serviceupptäckt. Du hittar vanligtvis belastningsbalansering, autentisering på begäranivå och stöd för datakryptering. Krypterad trafik kan passera genom nätet men överlämnas till dina tjänster i dekrypterad form.

Annonsering

Ditt nät erbjuder vanligtvis skydd mot övergående nätverksavbrott. Automatiska försök, failover och brytare gör kommunikationen mellan tjänster mer motståndskraftig. Slutanvändaren är mindre benägna att se ett allvarligt fel. Dessa viktiga funktioner skulle vara svåra och kostsamma att genomföra för hand.

På liknande sätt innehåller servicemaskar prestandaoptimeringar som hjälper till att minimera omkostnader. Nätet kan behålla anslutningar till tjänster för senare återanvändning, vilket minskar latensen vid nästa begäran.

Meshlager ger också säkerhetsskydd. Du kan implementera åtkomstkontrollpolicyer på nätnivå som avvisar trafik innan den når dina tjänster. Om du vill ha en global API-hastighetsbegränsare, om du gör den till en del av nätkonfigurationen, tillämpas den på alla dina tjänster & # 8211; nu och framtid.

Vad sägs om nackdelarna?

Den största utmaningen kring servicemaskor är den extra komplexitet som de medför. Medan de syftar till att förenkla mikrotjänstnätverk introducerar de också en egen inlärningskurva.

Utvecklare kommer att behöva bekanta sig med ett annat lager ovanpå sina befintliga tjänster. Mesh-terminologier, såsom proxyservrar och sidobilar, lägger till i den redan långa listan över Kubernetes-resurser som underhålls av driftsteam.

Annons

Även om nät tillför sina egna prestandaförbättringar, kan vissa distributioner märka en total minskning av nätverksgenomströmningen. Nätet lägger till ett nytt lager som begär måste passera genom, vilket påverkar den totala effektiviteten. Detta märks normalt mest om du lagrar ditt nät med många routningsregler.

När ska du använda ett servicenät?

Servicemaskor fungerar bäst när du är helt engagerad i behållare och mikrotjänster. De är utformade för att lösa utmaningarna med att driva storskaliga distribuerade system i produktionen. Mindre implementeringar kan fortfarande dra nytta av ett nät men kan också använda enklare nätverksmetoder, till exempel Kubernetes & # 8217; inbyggda nätverksresurser.

Nätverk är mest användbara när du ofta startar nya tjänster eller distribuerar dem över servrar. Ett nät gör det möjligt för utvecklare att fokusera på funktionalitet, i stället för tråkigheten att ansluta olika tjänster tillsammans. När du distribuerar en ständigt växande serviceflotta kommer du att spendera mer tid på att hantera service-till-service-kommunikation. Ett nät automatiserar det mesta av denna konfiguration så att du inte behöver tänka på serviceupptäckt och routing.

Metoden hjälper ditt system att bli mer observerbart också. Alla förfrågningar flödar genom nätet så att du kan implementera loggning och spårning på infrastrukturnivå. Detta ger en enklare väg till diagnos och lösning av routingproblem. Utan ett nät kan du ha dussintals tjänster som alla vidarebefordrar information direkt till varandra. Detta gör det svårt att hitta ursprunget till ett problem.

De populäraste servicemaskorna är enkla att installera. Istio och Linkerd har båda väldokumenterade startguider som hjälper dig att distribuera ett nät i ditt Kubernetes-kluster. Det är värt att experimentera även om du inte är säker på att ditt system är i maskskala än. Att hålla sig till direktkommunikation för länge kan begränsa din förmåga att lansera nya tjänster på ett tillförlitligt sätt.