In-memory arkitektur för webbservrar: teknologi och principer

In-Memory — en uppsĂ€ttning koncept för datalagring dĂ€r informationen sparas i applikationens minne och disken anvĂ€nds för backup. I klassiska metoder lagras data pĂ„ disken och minnet anvĂ€nds som cache. Till exempel, en webbapplikation med backend för databehandling begĂ€r data frĂ„n lagringen: den hĂ€mtar, transformerar och överför stora datamĂ€ngder via nĂ€tverket. Med In-Memory skickas berĂ€kningarna till data — till lagringen, dĂ€r de behandlas och nĂ€tverket belastas mindre.

Spela video
Tack vare sin arkitektur Àr In-Memory flera gÄnger, och ibland Àven ordentligt, snabbare nÀr det gÀller datatillgÄng. Till exempel, bankanalytiker vill se en rapport över beviljade lÄn i ett analytiskt program, dynamiskt dag för dag, förra Äret. Denna process tar minuter pÄ en klassisk databas, medan det med In-Memory kommer nÀstan omedelbart. Allt för att metoden möjliggör att cacha mycket mer information som hÄlls i arbetsminnet "till hands". Applikationen behöver inte begÀra data frÄn hÄrddisken, vars tillgÀnglighet Àr begrÀnsad av nÀtverkets och diskens hastighet.

Vilka ytterligare möjligheter som erbjuds med In-Memory och vad denna metod innebĂ€r, kommer att diskuteras av Vladimir Pligin — ingenjör pĂ„ GridGain. Detta översiktsmaterial kommer vara anvĂ€ndbart för backendutvecklare av webbapplikationer som inte har arbetat med In-Memory och vill prova, eller som Ă€r intresserade av moderna utvecklingstrender och arkitekturprojekt.

AnmÀrkning. Artikeln Àr baserad pÄ en avskrift av Vladimirs föredrag vid konferensen #GetIT Conf. Fram till införandet av sjÀlvisolering höll vi regelbundet meetups och konferenser för utvecklare i Moskva och Sankt Petersburg: vi diskuterade trender, aktuella frÄgor inom utveckling, problem och deras lösningar. Nu kan vi inte hÄlla konferenser, men det Àr en utmÀrkt tid att dela vÀrdefullt material frÄn det förflutna.

Vem och hur anvÀnder In-Memory

In-Memory anvÀnds oftast dÀr det krÀvs snabb interaktion med anvÀndaren eller behandling av stora datamÀngder.

  • Banker anvĂ€nder In-Memory, till exempel för att minska fördröjningar nĂ€r kunder anvĂ€nder applikationer eller för att analysera kunder före utlĂ„ning.
  • Fintech anvĂ€nder In-Memory för att förbĂ€ttra prestandan av tjĂ€nster och applikationer för banker som outsourcar bearbetning och analys av data. 
  • FörsĂ€kringsbolag: för riskbedömning, till exempel genom att analysera kunddata under flera Ă„r.
  • Logistikföretag. De hanterar stora mĂ€ngder data, till exempel för att rĂ€kna ut optimala rutter för gods- och passagerartransport med tusentals parametrar, samt spĂ„ra status pĂ„ leveranser.
  • Detaljhandeln. In-Memory lösningar hjĂ€lper till att snabbare betjĂ€na kunder och hantera stora volymer information: leveranser, fakturor, transaktioner, tillgĂ€nglighet av tusentals varor pĂ„ lagren och skapa analytiska rapporter.
  • I IoT In-Memory ersĂ€tter traditionella databaser.
  • Pharmaceutical företag anvĂ€nder In-Memory, till exempel för att pröva kombinationer av lĂ€kemedelsingredienser. 

Jag kommer att ge nÄgra exempel pÄ hur vÄra kunder anvÀnder In-Memory lösningar och hur ni kan implementera dem sjÀlva.

In-Memory som primÀr lagring

En av vĂ„ra kunder Ă€r en stor leverantör av medicinsk forskningsutrustning frĂ„n USA. De anvĂ€nder en In-Memory lösning som primĂ€r datalagring. Alla data lagras pĂ„ disk, medan en delmĂ€ngd av de aktivt anvĂ€nda data hĂ„lls i RAM. Åtkomstmetoderna till lagringen Ă€r standard — GDBC (Generic Database Connector) och SQL-sprĂ„k.

In-memory arkitektur för webbservrar: teknologi och principer

Tillsammans kallas detta In-Memory Database (IMDB) eller Memory-Centric Storage. Denna typ av lösningar har mÄnga namn, och det Àr inte de enda. 

Funktioner hos IMDB:

  • Data som lagras i In-Memory och Ă€r tillgĂ€ngliga via SQL Ă€r desamma som i andra tillvĂ€gagĂ„ngssĂ€tt. De Ă€r synkroniserade, endast sĂ€ttet att representera och hur man kommer Ă„t dem skiljer sig. Det finns transaktionalitet mellan data.

  • IMDB Ă€r snabbare Ă€n relationella databaser, eftersom det Ă€r snabbare att hĂ€mta information frĂ„n RAM Ă€n frĂ„n disk. 
  • Interna optimeringsalgoritmer har fĂ€rre instruktioner.
  • IMDB Ă€r lĂ€mpliga för att hantera data, hĂ€ndelser och transaktioner i applikationer.

IMDB stöder delvis ACID: atomicitet, konsistens och isolering. Men de stöder inte 'haltbarhet' — vid strömavbrott försvinner all data. För att lösa problemet kan man anvĂ€nda snapshots – en 'bild' av databasen, analog med databackup pĂ„ en hĂ„rddisk, eller registrera transaktioner (loggar) för att Ă„terstĂ€lla data efter omstart.

För att skapa robusta applikationer

Vi presenterar en klassisk arkitektur för ett felresilient webbapplikation. Den fungerar sÄ hÀr: alla förfrÄgningar fördelas av en webbbalanserare mellan servrarna. Detta system Àr motstÄndskraftigt eftersom servrarna duplicerar varandra och skyddar vid incidenter.

In-memory arkitektur för webbservrar: teknologi och principer

Balanseraren dirigerar alla förfrÄgningar frÄn en session strikt till en server. Detta Àr ett mekanism för sticky sessions: varje session knyts till servern, dÀr den lagras och bearbetas lokalt. 

Vad hÀnder nÀr en av servrar?

In-memory arkitektur för webbservrar: teknologi och principer

servrarna fallerar? TjÀnsten pÄverkas inte, eftersom arkitekturen Àr duplicerad. Men vi kommer att förlora en del av sessionerna frÄn den avlidna servern. Dessutom förlorar vi anvÀndare som Àr kopplade till dessa sessioner. Till exempel, om en kund gör en bestÀllning och plötsligt blir utloggad. Han kommer att bli missnöjd nÀr han mÄste logga in igen och upptÀcker att han mÄste göra om hela bestÀllningen.

Det krÀvs att webbapplikationen ska stödja ett stort antal anvÀndare och inte "segna ner" för att ge dem en bekvÀm arbetsmiljö. Men vid ett fel, med varje följande förfrÄgan kommer tiden för kommunikation med sessionens lagring att öka. Detta ökar den genomsnittliga latensen för de övriga anvÀndarna. Men de vill inte vÀnta lÀngre Àn de Àr vana vid.

Detta problem kan lösas, som vĂ„rt andra klient — en stor PASS-leverantör frĂ„n USA. De anvĂ€nder In-Memory för att klustra webb-sessioner. För detta lagrar de dem inte lokalt, utan centralt — i en In-Memory kluster. I det hĂ€r fallet Ă€r sessionerna mycket snabbare tillgĂ€ngliga, eftersom de redan finns i RAM.

In-memory arkitektur för webbservrar: teknologi och principer

NÀr en server faller, skickar balanceraren förfrÄgningar frÄn den nedlagda servern till andra servrar, precis som i den klassiska arkitekturen. Men det finns en viktig skillnad: sessionerna lagras i In-Memory klustret och servrarna har tillgÄng till sessionerna frÄn den nedlagda servern.

Denna arkitektur ökar hela systemets felresistens. Dessutom Àr det möjligt att helt överge mekanismen för sticky sessions.

Hybrid transaktions-analytisk bearbetning (HTAP)

Vanligtvis hĂ„lls transaktions- och analytiska system Ă„tskilda. NĂ€r de delas upp belastas den primĂ€ra databasen. För analytisk bearbetning kopieras data till en replika, sĂ„ att den analytiska bearbetningen inte stör transaktionsprocesserna. Men kopieringen sker med fördröjning — utan fördröjning Ă€r replikering omöjlig. Om vi gör detta synkront kommer det ocksĂ„ att sakta ner den primĂ€ra databasen, och vi fĂ„r inga vinster.

I HTAP fungerar allt annorlunda — samma datalager anvĂ€nds för transaktionsbelastning frĂ„n applikationer och för analytiska frĂ„gor, som kan ta lĂ„ng tid att utföra. NĂ€r data ligger i RAM-minnet utförs de analytiska frĂ„gorna snabbare, och databasservern belastas mindre (i genomsnitt).

In-memory arkitektur för webbservrar: teknologi och principer

Den hybrida metoden "bryter vÀggen" mellan transaktionsbearbetning och analys. Om vi gör analys pÄ samma datalager, kommer de analytiska frÄgorna att köras pÄ data frÄn RAM-minnet. De Àr mycket mer precisa, mer tolkbara och adekvata.

Integrering av In-Memory-lösningar

Ett enkelt (relativt) sĂ€tt — att utveckla allt frĂ„n grunden. Vi hĂ„ller data pĂ„ disken, medan heta data lagras i minnet. Det hjĂ€lper oss att överleva serveromstarter eller strömavbrott.

HĂ€r fungerar tvĂ„ huvudscenarier nĂ€r data lagras pĂ„ disken. I det första vill vi överleva krascher eller planerade omstarter av klustret eller delar dĂ€rav — vi vill anvĂ€nda det som en vanlig databas. I det andra scenariot, nĂ€r det finns för mycket data, Ă€r en del av den i minnet.

Om det inte Àr möjligt att bygga allt frÄn grunden kan vi integrera In-Memory i redan existerande arkitektur. Men inte alla In-Memory-lösningar Àr lÀmpliga för detta. Det finns tre obligatoriska villkor. In-Memory-lösningen mÄste stödja:

  • ett standardiserat sĂ€tt att ansluta till databasen som kommer att vara under den (till exempel MySQL);
  • ett standardiserat frĂ„gesprĂ„k för att inte behöva omskriva och Ă€ndra logiken för interaktionen med lagret;
  • transaktionshantering — för att bevara semantiken i interaktionen.

Om alla tre villkor Àr uppfyllda Àr integration möjlig. Vi placerar In-Memory Data Grid mellan applikationen och databasen. Nu kommer skrivfrÄgor att delegeras till den underliggande databasen, medan lÀsförfrÄgningar gÄr till databasen om data inte finns i cachen.

In-memory arkitektur för webbservrar: teknologi och principer

Om snabb Ă„tkomst till data och dess bearbetning Ă€r viktigt för dig, till exempel för affĂ€rsanalys – kan man övervĂ€ga att implementera In-Memory. För genomförandet kan du anvĂ€nda bĂ„da metoderna nĂ€r du designar en ny arkitektur.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster