Ett distribuerat system i sin enklaste definition är en grupp datorer som arbetar tillsammans som framstår som en för slutanvändaren. Maskiner delar ett gemensamt tillstånd, körs samtidigt och kan fungera oberoende utan att påverka upptiden för hela systemet. Sanningen är att hantering av sådana system är ett komplext ämne fyllt med fallgropar.
Översikt över systemet
Det distribuerade systemet tillåter delning av resurser (inklusive programvara) anslutna till nätverket samtidigt.
Exempel på systemdistribution:
- Traditionell stack. Dessa databaser lagras i filsystemet på en maskin. Närhelst användaren vill ta emot information kommunicerar han direkt med denna maskin. För att distribuera detta databassystem måste du köra det på flera datorer samtidigt.
- Distribuerad arkitektur.
Distribuerat systemlåter dig skala horisontellt och vertik alt. Till exempel skulle det enda sättet att hantera mer trafik vara att uppgradera hårdvaran som kör databasen. Detta kallas vertikal skalning. Vertikal skalning är bra upp till en viss gräns, varefter inte ens den bästa utrustningen klarar av att tillhandahålla den trafik som krävs.
Att skala horisontellt innebär att lägga till fler datorer, inte att uppgradera hårdvaran på en. Vertikal skalning ökar prestandan till de senaste maskinvarufunktionerna i distribuerade system. Dessa möjligheter räcker inte för teknikföretag med måttlig till stor arbetsbelastning. Det bästa med horisontell skalning är att det inte finns några storleksbegränsningar. När prestandan försämras läggs en annan maskin helt enkelt till, vilket i princip kan göras på obestämd tid.
På företagsnivå innefattar ett distribuerat kontrollsystem ofta olika steg. I affärsprocesser på de mest effektiva platserna i företagets datornätverk. Till exempel, i en typisk distribution som använder en distribuerad systemmodell i tre nivåer, sker databehandling på en PC där användaren befinner sig, affärsbearbetning sker på en fjärrdator och databasåtkomst och databehandling sker på en helt annan dator som ger centraliserad åtkomst för många företag. Vanligtvis denna typ av distribuerad datoranvändninganvänder klient-server-interaktionsmodellen.
Huvuduppgifter
De huvudsakliga uppgifterna för ett distribuerat kontrollsystem inkluderar:
- Transparency – Uppnå en enda systembild utan att dölja plats, åtkomst, migrering, samtidighet, failover, omlokalisering, beständighet och resursdetaljer för användarna.
- Öppenhet – förenklar nätverkskonfiguration och ändringar.
- Tillförlitlighet – Jämfört med ett enda styrsystem bör det vara tillförlitligt, konsekvent och ha hög sannolikhet för maskeringsfel.
- Prestanda – Jämfört med andra modeller ger distribuerade modeller en prestandahöjning.
- Skalbar – Dessa distribuerade kontrollsystem måste vara skalbara i termer av territorium, administration eller storlek.
Distributionssystemens uppgifter inkluderar:
- Säkerhet är ett stort problem i en distribuerad miljö, särskilt när man använder offentliga nätverk.
- Feltolerans - kan vara tufft när modellen är byggd med opålitliga komponenter.
- Samordning och distribution av resurser – kan vara svårt om det inte finns några ordentliga protokoll eller nödvändiga policyer.
Distribuerad datormiljö
(DCE) är en allmänt använd industristandard som stöder sådan distribuerad datoranvändning. På Internet erbjuder tredjepartsleverantörer vissa generiska tjänster,som passar in i den här modellen.
Grid computing är en datormodell med en distribuerad arkitektur av ett stort antal datorer förknippade med att lösa ett komplext problem. I grid-beräkningsmodellen utför servrar eller persondatorer oberoende uppgifter och är löst anslutna till varandra via Internet eller låghastighetsnätverk.
Det största grid-beräkningsprojektet är SETI@home, där enskilda datorägare frivilligt vill utföra några av sina multitasking-bearbetningscykler med sin dator för projektet Search for Extraterrestrial Intelligence (SETI). Detta datorproblem använder tusentals datorer för att ladda ner och söka radioteleskopdata.
En av de första användningarna av gridberäkning var att bryta kryptografisk kod av en grupp som nu kallas distributed.net. Den här gruppen beskriver också sin modell som distribuerad datoranvändning.
Databasskalning
Att sprida ny information från master till slav sker inte omedelbart. Faktum är att det finns ett tidsfönster där du kan få föråldrad information. Om så inte var fallet skulle skrivprestandan bli lidande, eftersom distribuerade system skulle behöva vänta synkront på att data ska spridas. De kommer med några kompromisser.
Med hjälp av en slavdatabas är det möjligt att skala ut lästrafik till viss del. Det finns många alternativ här. Men du behöver bara dela upp skrivtrafiken i fleraservrar eftersom den inte kan hantera det. Ett sätt är att använda en multi-master replikeringsstrategi. Där, istället för slavar, finns det flera huvudnoder som stödjer läsning och skrivning.
En annan metod kallas sharding. Med den delas servern upp i flera mindre servrar, så kallade shards. Dessa shards har olika poster, regler skapas om vilka poster som går in i vilken shard. Det är mycket viktigt att skapa en sådan regel att uppgifterna fördelas jämnt. Ett möjligt tillvägagångssätt för detta är att definiera intervall enligt viss postinformation.
Denna skärvnyckel bör väljas mycket noggrant, eftersom belastningen inte alltid är lika med basen för godtyckliga kolumner. Den enda skärpan som får fler förfrågningar än de andra kallas en hotspot, och de försöker förhindra att den bildas. När omkalibreringsdata väl delas upp blir det otroligt dyrt och kan resultera i betydande driftstopp.
Databaskonsensusalgoritmer
DB:er är svåra att implementera i distribuerade säkerhetssystem eftersom de kräver att varje nod förhandlar fram rätt avbrotts- eller commit-åtgärd. Denna kvalitet är känd som konsensus och är ett grundläggande problem i att bygga ett distributionssystem. Att uppnå den typ av överenskommelse som behövs för "commit"-problemet är enkelt om de involverade processerna och nätverket är helt tillförlitliga. Men verkliga system är föremål för ett antalmöjliga fel i nätverksprocesser, förlorade, skadade eller duplicerade meddelanden.
Detta utgör ett problem och det är inte möjligt att garantera att rätt konsensus uppnås inom en begränsad tidsperiod på ett opålitligt nätverk. I praktiken finns det algoritmer som når konsensus ganska snabbt i ett opålitligt nätverk. Cassandra tillhandahåller faktiskt lätta transaktioner genom att använda Paxos-algoritmen för distribuerad konsensus.
Distribuerad datoranvändning är nyckeln till inflödet av big data-behandling som har använts de senaste åren. Det är en metod för att bryta ner en enorm uppgift, som en kumulativ 100 miljarder poster, av vilka ingen enskild dator kan göra praktiskt taget vad som helst på egen hand, till många mindre uppgifter som kan passa in i en enda maskin. Utvecklaren delar upp sin enorma uppgift i många mindre, utför dem på många maskiner parallellt, samlar in data på lämpligt sätt, sedan kommer det ursprungliga problemet att lösas.
Det här tillvägagångssättet låter dig skala horisontellt - när det finns en stor uppgift, lägg bara till fler noder i beräkningen. Dessa uppgifter har utförts i många år av MapReduce-programmeringsmodellen i samband med implementeringen för parallell bearbetning och generering av stora datamängder med hjälp av en distribuerad algoritm i ett kluster.
För närvarande är MapReduce något föråldrat och medför vissa problem. Andra arkitekturer har dykt upp som tar itu med dessa problem. Nämligen Lambda Architecture för distribueradflödesbearbetningssystem. Framsteg på detta område har medfört nya verktyg: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Fillagring och replikeringssystem
Distribuerade filsystem kan ses som distribuerade datalager. Detta är samma som konceptet - att lagra och komma åt en stor mängd data över ett kluster av maskiner som är en enda enhet. De går vanligtvis hand i hand med Distributed Computing.
Yahoo har till exempel varit känt för att köra HDFS på över 42 000 noder för att lagra 600 petabyte data sedan 2011. Wikipedia definierar skillnaden i att distribuerade filsystem tillåter filåtkomst med samma gränssnitt och semantik som lokala filer, snarare än genom ett anpassat API som Cassandra Query Language (CQL).
Hadoop Distributed File System (HDFS) är ett system som används för beräkning över Hadoop-infrastrukturen. Det är utbrett och används för att lagra och replikera stora filer (storlek GB eller TB) på många maskiner. Dess arkitektur består huvudsakligen av NameNodes och DataNodes.
NameNodes ansvarar för att lagra metadata om klustret, till exempel vilken nod som innehåller filblock. De fungerar som nätverkskoordinatorer och tar reda på var det är bäst att lagra och kopiera filer och håller reda på systemets hälsa. DataNodes lagrar helt enkelt filer och utför kommandon som filreplikering, nyskrivning ochandra.
Föga överraskande är HDFS bäst att använda med Hadoop för datoranvändning, eftersom det ger uppgiftsinformation. De angivna jobben körs sedan på noderna som lagrar data. Detta gör att du kan använda platsen för data - optimerar beräkningar och minskar mängden trafik över nätverket.
The Interplanetary File System (IPFS) är ett spännande nytt peer-to-peer-protokoll/nätverk för distribuerade filsystem. Genom att använda Blockchain-teknik har den en helt decentraliserad arkitektur utan en enda ägare eller felpunkt.
IPFS erbjuder ett namnsystem (liknande DNS) som kallas IPNS och tillåter användare att enkelt hämta information. Den lagrar filen genom historisk versionshantering, ungefär som Git gör. Detta ger tillgång till alla tidigare tillstånd i filen. Det går fortfarande igenom tung utveckling (v0.4 i skrivande stund) men har redan sett projekt som är intresserade av att bygga det (FileCoin).
Meddelandesystem
Meddelandesystem tillhandahåller en central plats för lagring och distribution av meddelanden inom ett gemensamt system. De låter dig skilja applikationslogik från direkt kommunikation med andra system.
Känd skala - LinkedIns Kafka-kluster behandlade 1 biljon meddelanden per dag med toppar på 4,5 miljoner meddelanden per sekund.
I enkla termer fungerar meddelandeplattformen så här:
- Meddelandeskickas från applikationen som potentiellt skapar den, kallad producent, går in i plattformen och läses från flera applikationer, som kallas konsumenter.
- Om du behöver lagra en viss händelse på flera ställen, som att skapa en användare för en databas, lagring, e-postsändningstjänst, så är meddelandeplattformen det renaste sättet att distribuera meddelandet.
Det finns flera populära förstklassiga meddelandeplattformar.
RabbitMQ är en meddelandemäklare som låter dig finjustera kontrollen av deras banor med hjälp av routingregler och andra lätt konfigurerbara parametrar. Den kan kallas en "smart" mäklare eftersom den har mycket logik och noggrant övervakar de meddelanden som passerar genom den. Ger alternativ för AP:er och CP:er från CAP.
Kafka är en meddelandeförmedlare som är lite mindre funktionell eftersom den inte håller reda på vilka meddelanden som har lästs och inte tillåter komplex routinglogik. Det hjälper till att uppnå fantastiska prestanda och representerar det största löftet i det här utrymmet med aktiv utveckling av distribuerade system av open source-gemenskapen och stöd från Confluent-teamet. Kafka är mest populär bland högteknologiska företag.
Machine Interaction Applications
Det här distributionssystemet är en grupp datorer som arbetar tillsammans för att framstå som en separat dator för slutanvändaren. Dessa maskiner är i allmänt skick och fungerarsamtidigt och kan arbeta självständigt utan att påverka drifttiden för hela systemet.
Om du betraktar databasen som distribuerad, endast om noderna interagerar med varandra för att koordinera sina åtgärder. Det är i det här fallet något som en applikation som kör sin interna kod på ett peer-to-peer-nätverk och klassificeras som en distribuerad applikation.
Exempel på sådana applikationer:
- Känt skala – BitTorrent svärmar 193 000 noder för Game of Thrones-avsnittet.
- Grundläggande registerteknik för distribuerade blockkedjesystem.
Distribuerade reskontra kan ses som en oföränderlig databas som endast är tillgänglig för applikationer som replikeras, synkroniseras och delas över alla noder i distributionsnätverket.
Den välkända skalan - Ethereum-nätverket - hade 4,3 miljoner transaktioner per dag den 4 januari 2018. De använder mönstret Event Sourcing, vilket gör att du kan återställa databasens tillstånd när som helst.
Blockchain är den nuvarande underliggande teknologin som används för distribuerade reskontra och markerade faktiskt deras början. Denna nyaste och största innovation i det distribuerade utrymmet skapade det första verkligt distribuerade betalningsprotokollet, bitcoin.
Blockchain är en distribuerad reskontra med en ordnad lista över alla transaktioner som någonsin har ägt rum i dess nätverk. Affärer grupperas och lagras i block. Hela blockkedjan är i huvudsak en länkad lista med block. Angivna blockär dyra att skapa och är tätt kopplade till varandra genom kryptografi. Enkelt uttryckt innehåller varje block en speciell hash (som börjar med X antal nollor) av innehållet i det aktuella blocket (i form av ett Merkle-träd) plus hash för föregående block. Denna hash kräver mycket CPU-kraft.
Exempel på distribuerade operativsystem
Systemtyper visas för användaren eftersom de är enanvändarsystem. De delar sitt minne, disk och användaren har inga problem med att navigera genom datan. Användaren lagrar något i sin PC och filen lagras på flera platser, dvs anslutna datorer så att förlorad data enkelt kan återställas.
Exempel på distribuerade operativsystem:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (Apache-server).
Om någon dator startar högre, det vill säga om många förfrågningar utbyts mellan enskilda datorer, är det så här lastbalansering sker. I detta fall sprids förfrågningarna till den angränsande PC:n. Om nätverket blir mer belastat kan det utökas genom att lägga till fler system i nätverket. Nätverksfilen och mapparna synkroniseras och namnkonventioner används så att inga fel uppstår när data hämtas.
Caching används också vid manipulering av data. Alla datorer använder samma namnområde för att namnge filer. Menfilsystemet är giltigt för alla datorer. Om det finns uppdateringar av filen skrivs den till en dator och ändringarna sprids till alla datorer, så filen ser likadan ut.
Filer är låsta under läs-/skrivprocessen, så det finns inget dödläge mellan olika datorer. Sessioner förekommer också, som att läsa, skriva filer i en session och stänga sessionen, och sedan kan en annan användare göra detsamma och så vidare.
Fördelar med att använda
Ett operativsystem utformat för att göra människors vardag enklare. För användarens fördelar och behov kan operativsystemet vara en användare eller distribuerat. I ett distribuerat resurssystem är många datorer anslutna till varandra och delar sina resurser.
Fördelar med att göra detta:
- Om en dator i ett sådant system är felaktig eller skadad, kommer en annan nod eller dator att ta hand om det.
- Fler resurser kan enkelt läggas till.
- Resurser som skrivare kan betjäna flera datorer.
Detta är ett kort om distributionssystemet, varför det används. Några viktiga saker att komma ihåg: de är komplexa och väljs för skala och pris och är svårare att arbeta med. Dessa system är fördelade i flera lagringskategorier: datorer, fil- och meddelandesystem, register, applikationer. Och allt detta är bara väldigt ytligt om ett komplext informationssystem.