Distribuerte systemer: definisjon, funksjoner og grunnleggende prinsipper

Innholdsfortegnelse:

Distribuerte systemer: definisjon, funksjoner og grunnleggende prinsipper
Distribuerte systemer: definisjon, funksjoner og grunnleggende prinsipper
Anonim

Et distribuert system i sin enkleste definisjon er en gruppe datamaskiner som arbeider sammen som fremstår som én for sluttbrukeren. Maskiner deler en felles tilstand, kjører samtidig og kan operere uavhengig uten å påvirke oppetiden til hele systemet. Sannheten er at administrasjon av slike systemer er et komplekst tema fylt med fallgruver.

Oversikt over systemet

Distribuerte systemer
Distribuerte systemer

Det distribuerte systemet tillater deling av ressurser (inkludert programvare) koblet til nettverket samtidig.

Eksempler på systemdistribusjon:

  1. Tradisjonell stabel. Disse databasene er lagret på filsystemet til én maskin. Når brukeren ønsker å motta informasjon, kommuniserer han direkte med denne maskinen. For å distribuere dette databasesystemet må du kjøre det på flere PC-er samtidig.
  2. Distribuert arkitektur.

Distribuert systemlar deg skalere horisont alt og vertik alt. For eksempel vil den eneste måten å håndtere mer trafikk på være å oppgradere maskinvaren som kjører databasen. Dette kalles vertikal skalering. Vertikal skalering er bra opp til en viss grense, hvoretter selv det beste utstyret ikke kan takle den nødvendige trafikken.

Skalering horisont alt betyr å legge til flere datamaskiner, ikke å oppgradere maskinvaren på én. Vertikal skalering øker ytelsen til de nyeste maskinvarefunksjonene i distribuerte systemer. Disse mulighetene er ikke nok for teknologibedrifter med moderat til stor arbeidsbelastning. Det beste med horisontal skalering er at det ikke er noen størrelsesgrenser. Når ytelsen forringes, legges det ganske enkelt til en annen maskin, som i prinsippet kan gjøres på ubestemt tid.

På bedriftsnivå innebærer et distribuert kontrollsystem ofte ulike trinn. I forretningsprosesser på de mest effektive stedene i bedriftens datanettverk. For eksempel, i en typisk distribusjon som bruker en trelags distribuert systemmodell, gjøres databehandling på en PC på brukerens plassering, forretningsbehandling gjøres på en ekstern datamaskin, og databasetilgang og databehandling gjøres på en helt annen datamaskin som gir sentralisert tilgang for mange virksomheter. Vanligvis denne typen distribuert databehandlingbruker klient-tjener-interaksjonsmodellen.

Hovedoppgaver

Hovedoppgaver
Hovedoppgaver

Hovedoppgavene til et distribuert kontrollsystem inkluderer:

  1. Transparency – Oppnå ett enkelt systembilde uten å skjule plassering, tilgang, migrering, samtidighet, failover, flytting, utholdenhet og ressursdetaljer til brukerne.
  2. Åpenhet – forenkler nettverksoppsett og endringer.
  3. Pålitelighet – Sammenlignet med et enkelt kontrollsystem skal det være pålitelig, konsistent og ha høy sannsynlighet for maskeringsfeil.
  4. Ytelse – Sammenlignet med andre modeller gir distribuerte modeller et ytelsesløft.
  5. Skalerbare – Disse distribuerte kontrollsystemene må være skalerbare når det gjelder territorium, administrasjon eller størrelse.

Opgavene til distribusjonssystem inkluderer:

  1. Sikkerhet er et stort problem i et distribuert miljø, spesielt når du bruker offentlige nettverk.
  2. Feiltoleranse - kan være tøft når modellen er bygget med upålitelige komponenter.
  3. Koordinering og distribusjon av ressurser – kan være vanskelig hvis det ikke finnes ordentlige protokoller eller nødvendige retningslinjer.

Distribuert datamiljø

Distribuert datamiljø
Distribuert datamiljø

(DCE) er en mye brukt industristandard som støtter slik distribuert databehandling. På Internett tilbyr tredjepartsleverandører noen generiske tjenester,som passer inn i denne modellen.

Grid computing er en databehandlingsmodell med en distribuert arkitektur av et stort antall datamaskiner knyttet til å løse et komplekst problem. I grid computing-modellen utfører servere eller personlige datamaskiner uavhengige oppgaver og er løst koblet til hverandre via Internett eller lavhastighetsnettverk.

Det største grid-databehandlingsprosjektet er SETI@home, der individuelle datamaskineiere melder seg frivillig til å utføre noen av multitasking-behandlingssyklusene sine ved å bruke datamaskinen til Search for Extraterrestrial Intelligence (SETI)-prosjektet. Dette datamaskinproblemet bruker tusenvis av datamaskiner til å laste ned og søke i radioteleskopdata.

En av de første bruken av grid-databehandling var å bryte kryptografisk kode av en gruppe som nå er kjent som distributed.net. Denne gruppen beskriver også modellen deres som distribuert databehandling.

Databaseskalering

Databaseskalering
Databaseskalering

Spredning av ny informasjon fra master til slave skjer ikke umiddelbart. Faktisk er det et tidsvindu der du kan få utdatert informasjon. Hvis dette ikke var tilfelle, ville skriveytelsen lide, ettersom distribuerte systemer måtte vente synkront på at data skal forplante seg. De kommer med noen kompromisser.

Ved å bruke en slavedatabasetilnærming er det mulig å skalere ut lesetrafikk til en viss grad. Det er mange alternativer her. Men du trenger bare å dele skrivetrafikken i flereservere fordi den ikke kan håndtere det. En måte er å bruke en multi-master replikeringsstrategi. Der, i stedet for slaver, er det flere hovednoder som støtter lesing og skriving.

En annen metode kalles sharding. Med den er serveren delt opp i flere mindre servere, k alt shards. Disse skårene har forskjellige oppføringer, det lages regler om hvilke oppføringer som går inn i hvilke shard. Det er veldig viktig å lage en slik regel at dataene fordeles jevnt. En mulig tilnærming til dette er å definere områder i henhold til noe postinformasjon.

Denne shard-nøkkelen bør velges veldig nøye, siden belastningen ikke alltid er lik basen til vilkårlige kolonner. Den eneste sharden som får flere forespørsler enn de andre kalles et hotspot, og de prøver å forhindre at det dannes. Når de er delt, blir rekalibreringsdata utrolig dyre og kan resultere i betydelig nedetid.

Databasekonsensusalgoritmer

Databasekonsensusalgoritmer
Databasekonsensusalgoritmer

DB-er er vanskelige å implementere i distribuerte sikkerhetssystemer fordi de krever at hver node forhandler seg frem til den riktige avbrudds- eller forpliktelseshandlingen. Denne kvaliteten er kjent som konsensus og er et grunnleggende problem i å bygge et distribusjonssystem. Å oppnå den typen avtale som trengs for "commit"-problemet er enkelt hvis prosessene som er involvert og nettverket er fullstendig pålitelige. Imidlertid er reelle systemer underlagt en rekkemulige feil i nettverksprosesser, tapte, ødelagte eller dupliserte meldinger.

Dette utgjør et problem, og det er ikke mulig å garantere at riktig konsensus oppnås innen en begrenset tidsperiode på et upålitelig nettverk. I praksis er det algoritmer som oppnår konsensus ganske raskt i et upålitelig nettverk. Cassandra gir faktisk lette transaksjoner gjennom bruk av Paxos-algoritmen for distribuert konsensus.

Distribuert databehandling er nøkkelen til tilstrømningen av stordatabehandling som har blitt brukt de siste årene. Det er en metode for å bryte ned en enorm oppgave, for eksempel en kumulativ 100 milliarder poster, hvorav ingen enkelt datamaskin er i stand til å gjøre praktisk t alt hva som helst på egen hånd, til mange mindre oppgaver som kan passe inn i en enkelt maskin. Utvikleren deler opp sin enorme oppgave i mange mindre, utfører dem på mange maskiner parallelt, samler inn data på riktig måte, så vil det opprinnelige problemet være løst.

Denne tilnærmingen lar deg skalere horisont alt - når det er en stor oppgave, er det bare å legge til flere noder i beregningen. Disse oppgavene har blitt utført i mange år av MapReduce-programmeringsmodellen knyttet til implementering for parallell prosessering og generering av store datasett ved bruk av en distribuert algoritme på en klynge.

Foreløpig er MapReduce noe utdatert og byr på noen problemer. Andre arkitekturer har dukket opp som adresserer disse problemene. Nemlig Lambda Architecture for distribuertflytbehandlingssystemer. Fremskritt på dette området har brakt nye verktøy: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Fillagrings- og replikeringssystemer

Fillagring og replikeringssystemer
Fillagring og replikeringssystemer

Distribuerte filsystemer kan betraktes som distribuerte datalagre. Dette er det samme som konseptet - lagring og tilgang til en stor mengde data på tvers av en klynge av maskiner som er en enkelt enhet. De går vanligvis hånd i hånd med distribuert databehandling.

Yahoo har for eksempel vært kjent for å kjøre HDFS på over 42 000 noder for å lagre 600 petabyte med data siden 2011. Wikipedia definerer forskjellen ved at distribuerte filsystemer tillater filtilgang ved å bruke samme grensesnitt og semantikk som lokale filer, i stedet for gjennom et tilpasset API som Cassandra Query Language (CQL).

Hadoop Distributed File System (HDFS) er et system som brukes for databehandling over Hadoop-infrastrukturen. Det er utbredt og brukes til å lagre og replikere store filer (GB eller TB størrelse) på mange maskiner. Arkitekturen består hovedsakelig av NameNodes og DataNodes.

NameNodes er ansvarlig for å lagre metadata om klyngen, for eksempel hvilken node som inneholder filblokker. De fungerer som nettverkskoordinatorer, og finner ut hvor det er best å lagre og kopiere filer, og holder styr på systemets helse. DataNodes lagrer ganske enkelt filer og utfører kommandoer som filreplikering, ny skriving ogandre.

Ikke overraskende er HDFS best brukt med Hadoop for databehandling, siden det gir bevissthet om oppgaveinformasjon. De angitte jobbene kjøres deretter på nodene som lagrer dataene. Dette lar deg bruke plasseringen av dataene - optimaliserer beregninger og reduserer mengden trafikk over nettverket.

The Interplanetary File System (IPFS) er en spennende ny peer-to-peer-protokoll/nettverk for distribuert filsystem. Ved å bruke blokkjedeteknologi kan den skryte av en fullstendig desentralisert arkitektur uten en enkelt eier eller feil.

IPFS tilbyr et navnesystem (ligner på DNS) k alt IPNS og lar brukere enkelt hente informasjon. Den lagrer filen gjennom historisk versjonering, omtrent som Git gjør. Dette gir tilgang til alle tidligere tilstander i filen. Den er fortsatt i kraftig utvikling (v0.4 i skrivende stund), men har allerede sett prosjekter som er interessert i å bygge den (FileCoin).

Meldingssystem

meldingssystem
meldingssystem

Meldingssystemer gir en sentral plassering for lagring og distribusjon av meldinger i et felles system. De lar deg skille applikasjonslogikk fra direkte kommunikasjon med andre systemer.

Kjent skala - LinkedIns Kafka-klynge behandlet 1 billion meldinger per dag med topper på 4,5 millioner meldinger per sekund.

I enkle ord fungerer meldingsplattformen slik:

  1. Meldingsendt fra applikasjonen som potensielt oppretter den, k alt en produsent, går inn i plattformen og leses fra flere applikasjoner, k alt forbrukere.
  2. Hvis du trenger å lagre en bestemt hendelse på flere steder, for eksempel opprette en bruker for en database, lagring, e-posttjeneste, så er meldingsplattformen den reneste måten å distribuere den meldingen på.

Det finnes flere populære, førsteklasses meldingsplattformer.

RabbitMQ er en meldingsmegler som lar deg finjustere kontrollen av banene deres ved å bruke rutingregler og andre lett konfigurerbare parametere. Den kan kalles en "smart" megler fordi den har mye logikk og følger nøye med på meldingene som passerer gjennom den. Gir alternativer for AP-er og CP-er fra CAP.

Kafka er en meldingsmegler som er litt mindre funksjonell da den ikke holder styr på hvilke meldinger som er lest og ikke tillater kompleks rutinglogikk. Det bidrar til å oppnå fantastisk ytelse og representerer det største løftet i dette området med aktiv utvikling av distribuerte systemer av åpen kildekode-fellesskapet og støtte fra Confluent-teamet. Kafka er mest populær blant høyteknologiske selskaper.

Machine Interaction Applications

Dette distribusjonssystemet er en gruppe datamaskiner som jobber sammen for å fremstå som en separat datamaskin for sluttbrukeren. Disse maskinene er i generell stand og fungerersamtidig og kan jobbe selvstendig uten å påvirke oppetiden til hele systemet.

Hvis du anser databasen som distribuert, bare hvis nodene samhandler med hverandre for å koordinere handlingene deres. Det er i dette tilfellet noe som en applikasjon som kjører sin interne kode på et peer-to-peer-nettverk og er klassifisert som en distribuert applikasjon.

Kjent skala - BitTorrent
Kjent skala - BitTorrent

Eksempler på slike applikasjoner:

  1. Kjent skala – BitTorrent svermer 193 000 noder for Game of Thrones-episoden.
  2. Grunnleggende registerteknologi for distribuerte blokkjedesystemer.

Distribuerte reskontro kan ses på som en uforanderlig database som bare er applikasjoner som replikeres, synkroniseres og deles på tvers av alle noder i distribusjonsnettverket.

Den velkjente skalaen - Ethereum-nettverket - hadde 4,3 millioner transaksjoner per dag 4. januar 2018. De bruker Event Sourcing-mønsteret, som lar deg gjenopprette statusen til databasen når som helst.

Blockchain er den nåværende underliggende teknologien som brukes for distribuerte hovedbøker og markerte faktisk begynnelsen. Denne nyeste og største innovasjonen i det distribuerte området skapte den første virkelig distribuerte betalingsprotokollen, bitcoin.

Blockchain er en distribuert hovedbok med en ordnet liste over alle transaksjoner som noen gang har funnet sted på nettverket. Tilbud er gruppert og lagret i blokker. Hele blokkjeden er i hovedsak en koblet liste over blokker. Spesifiserte blokkerer dyre å lage og er tett koblet til hverandre gjennom kryptografi. Enkelt sagt inneholder hver blokk en spesiell hash (som starter med X antall nuller) av innholdet i gjeldende blokk (i form av et Merkle-tre) pluss hash til forrige blokk. Denne hashen krever mye CPU-kraft.

Eksempler på distribuerte operativsystemer

Eksempler på distribuerte operativsystemer
Eksempler på distribuerte operativsystemer

Systemtyper vises for brukeren fordi de er enkeltbrukersystemer. De deler minne, disk, og brukeren har ingen problemer med å navigere gjennom dataene. Brukeren lagrer noe på PC-en sin og filen lagres på flere steder, dvs. tilkoblede datamaskiner slik at tapte data enkelt kan gjenopprettes.

Eksempler på distribuerte operativsystemer:

  1. Windows Server 2003;
  2. Windows Server 2008;
  3. Windows Server 2012;
  4. UbuntuLinux (Apache-server).

Hvis en datamaskin starter høyere, det vil si hvis mange forespørsler utveksles mellom individuelle PC-er, er det slik lastbalansering skjer. I dette tilfellet spres forespørslene til nabo-PCen. Hvis nettverket blir mer belastet, kan det utvides ved å legge til flere systemer i nettverket. Nettverksfilen og mappene er synkronisert og navnekonvensjoner brukes slik at det ikke oppstår feil når data hentes.

Caching brukes også ved manipulering av data. Alle datamaskiner bruker samme navneområde for å navngi filer. Menfilsystemet er gyldig for hver datamaskin. Hvis det er oppdateringer til filen, skrives den til én datamaskin og endringene overføres til alle datamaskiner, slik at filen ser lik ut.

Filer er låst under lese-/skriveprosessen, så det er ingen vranglås mellom forskjellige datamaskiner. Økter forekommer også, som å lese, skrive filer i en økt og lukke økten, og så kan en annen bruker gjøre det samme og så videre.

Fordeler ved å bruke

Et operativsystem utviklet for å gjøre folks hverdag enklere. For brukerfordeler og behov kan operativsystemet være enkeltbruker eller distribuert. I et distribuert ressurssystem er mange datamaskiner koblet til hverandre og deler ressursene sine.

Fordeler ved å gjøre dette:

  1. Hvis én PC i et slikt system er defekt eller skadet, vil en annen node eller datamaskin ta seg av det.
  2. Flere ressurser kan enkelt legges til.
  3. Ressurser som skrivere kan betjene flere datamaskiner.

Dette er en kort om distribusjonssystemet, hvorfor det brukes. Noen viktige ting å huske: de er komplekse og er valgt for skala og pris og er vanskeligere å jobbe med. Disse systemene er fordelt i flere lagringskategorier: databehandling, fil- og meldingssystemer, registre, applikasjoner. Og alt dette er bare veldig overfladisk om et komplekst informasjonssystem.

Anbefalt: