'n Verspreide stelsel in sy eenvoudigste definisie is 'n groep rekenaars wat saamwerk wat as een vir die eindgebruiker voorkom. Masjiene deel 'n gemeenskaplike toestand, loop gelyktydig en kan onafhanklik werk sonder om die uptyd van die hele stelsel te beïnvloed. Die waarheid is dat die bestuur van sulke stelsels 'n komplekse onderwerp is vol slaggate.
Oorsig van die stelsel
Die verspreide stelsel laat die deel van hulpbronne (insluitend sagteware) wat terselfdertyd aan die netwerk gekoppel is, toe.
Voorbeelde van stelselverspreiding:
- Tradisionele stapel. Hierdie databasisse word op die lêerstelsel van een masjien gestoor. Wanneer die gebruiker inligting wil ontvang, kommunikeer hy direk met hierdie masjien. Om hierdie databasisstelsel te versprei, moet jy dit op verskeie rekenaars op dieselfde tyd laat loop.
- Verspreide argitektuur.
Verspreide stelsellaat jou toe om horisontaal en vertikaal te skaal. Byvoorbeeld, die enigste manier om meer verkeer te hanteer sal wees om die hardeware op te gradeer wat die databasis bestuur. Dit word vertikale skaal genoem. Vertikale skaal is goed tot op 'n sekere limiet, waarna selfs die beste toerusting nie die vereiste verkeer kan voorsien nie.
Om horisontaal te skaal beteken om meer rekenaars by te voeg, nie om die hardeware op een op te gradeer nie. Vertikale skaal verhoog werkverrigting tot die nuutste hardeware-vermoëns in verspreide stelsels. Hierdie geleenthede is nie genoeg vir tegnologiemaatskappye met matige tot swaar werkladings nie. Die beste ding van horisontale skaal is dat daar geen groottebeperkings is nie. Wanneer werkverrigting verswak, word 'n ander masjien eenvoudig bygevoeg, wat in beginsel onbepaald gedoen kan word.
Op korporatiewe vlak behels 'n verspreide beheerstelsel dikwels verskeie stappe. In besigheid prosesse in die mees doeltreffende plekke van die onderneming rekenaar netwerk. Byvoorbeeld, in 'n tipiese verspreiding wat 'n drievlak-verspreide stelselmodel gebruik, word dataverwerking op 'n rekenaar by die gebruiker se ligging gedoen, besigheidsverwerking word op 'n afgeleë rekenaar gedoen, en databasistoegang en dataverwerking word op 'n heeltemal ander rekenaar gedoen. wat gesentraliseerde toegang vir baie besighede verskaf. Tipies, hierdie tipe verspreide rekenaargebruik die kliënt-bediener-interaksiemodel.
Hooftake
Die hooftake van 'n verspreide beheerstelsel sluit in:
- Deursigtigheid - Bereik 'n enkele stelselbeeld sonder om ligging, toegang, migrasie, gelyktydigheid, failover, hervestiging, volharding en hulpbronbesonderhede aan gebruikers weg te steek.
- Openheid – vereenvoudig netwerkopstelling en veranderinge.
- Betroubaarheid - In vergelyking met 'n enkele beheerstelsel, behoort dit betroubaar, konsekwent te wees en 'n hoë waarskynlikheid van maskeringsfoute te hê.
- Performance - In vergelyking met ander modelle, bied verspreide modelle 'n prestasie-hupstoot.
- Skaalbaar - Hierdie verspreide beheerstelsels moet skaalbaar wees in terme van gebied, administrasie of grootte.
Die take van verspreidingstelsels sluit in:
- Sekuriteit is 'n groot probleem in 'n verspreide omgewing, veral wanneer publieke netwerke gebruik word.
- Fouttoleransie - kan moeilik wees wanneer die model met onbetroubare komponente gebou is.
- Koördinering en verspreiding van hulpbronne - kan moeilik wees as daar nie behoorlike protokolle of vereiste beleide is nie.
Verspreide rekenaaromgewing
(DCE) is 'n algemeen gebruikte industriestandaard wat sulke verspreide rekenaars ondersteun. Op die internet bied derdeparty-verskaffers sommige generiese dienste,wat by hierdie model pas.
Grid computing is 'n rekenaarmodel met 'n verspreide argitektuur van 'n groot aantal rekenaars wat geassosieer word met die oplossing van 'n komplekse probleem. In die roosterrekenaarmodel verrig bedieners of persoonlike rekenaars onafhanklike take en is losweg met mekaar verbind deur die internet of laespoednetwerke.
Die grootste roosterrekenaarprojek is SETI@home, waarin individuele rekenaareienaars vrywillig van hul multitasking-verwerkingsiklusse uit te voer met hul rekenaar vir die Search for Extraterrestrial Intelligence (SETI)-projek. Hierdie rekenaarprobleem gebruik duisende rekenaars om radioteleskoopdata af te laai en te deursoek.
Een van die eerste gebruike van roosterberekening was om kriptografiese kode te breek deur 'n groep wat nou bekend staan as distributed.net. Hierdie groep beskryf ook hul model as verspreide rekenaars.
Databasisskaal
Die verspreiding van nuwe inligting van meester na slaaf gebeur nie onmiddellik nie. Trouens, daar is 'n tydvenster waarin jy verouderde inligting kan kry. As dit nie die geval was nie, sou skryfwerkverrigting daaronder ly, aangesien verspreide stelsels sinchronies sou moes wag vir data om te versprei. Hulle kom met 'n paar kompromieë.
Deur 'n slawedatabasisbenadering te gebruik, is dit moontlik om leesverkeer tot 'n mate uit te skaal. Hier is baie opsies. Maar jy hoef net die skryfverkeer in verskeie te verdeelbedieners omdat dit dit nie kan hanteer nie. Een manier is om 'n multi-meester replikasie strategie te gebruik. Daar, in plaas van slawe, is daar verskeie hoofnodusse wat lees en skryf ondersteun.
'n Ander metode word sharding genoem. Daarmee word die bediener opgedeel in verskeie kleiner bedieners, genaamd skerwe. Hierdie skerwe het verskillende inskrywings, reëls word geskep oor watter inskrywings in watter skerf ingaan. Dit is baie belangrik om so 'n reël te skep dat die data eweredig versprei word. 'n Moontlike benadering hiervoor is om reekse volgens sommige rekordinligting te definieer.
Hierdie skerfsleutel moet baie versigtig gekies word, aangesien die las nie altyd gelyk is aan die basisse van arbitrêre kolomme nie. Die enigste skerf wat meer versoeke as die ander kry, word 'n hotspot genoem, en hulle probeer keer dat dit vorm. Sodra dit verdeel is, word herkalibrasiedata ongelooflik duur en kan dit aansienlike stilstand tot gevolg hê.
Databasis konsensusalgoritmes
DB's is moeilik om te implementeer in verspreide sekuriteitstelsels, want dit vereis dat elke nodus die korrekte onderbreking of handeling moet onderhandel. Hierdie kwaliteit staan bekend as konsensus en is 'n fundamentele probleem in die bou van 'n verspreidingstelsel. Die bereiking van die tipe ooreenkoms wat nodig is vir die "commit"-probleem is eenvoudig as die betrokke prosesse en die netwerk heeltemal betroubaar is. Egte stelsels is egter onderhewig aan 'n aantalmoontlike mislukkings van netwerkprosesse, verlore, korrupte of gedupliseerde boodskappe.
Dit stel 'n probleem en dit is nie moontlik om te waarborg dat die korrekte konsensus binne 'n beperkte tydperk op 'n onbetroubare netwerk bereik sal word nie. In die praktyk is daar algoritmes wat redelik vinnig konsensus bereik in 'n onbetroubare netwerk. Cassandra verskaf eintlik liggewigtransaksies deur die gebruik van die Paxos-algoritme vir verspreide konsensus.
Verspreide rekenaars is die sleutel tot die invloei van grootdataverwerking wat die afgelope jare gebruik is. Dit is 'n metode om 'n groot taak, soos 'n kumulatiewe 100 biljoen rekords, waarvan geen enkele rekenaar in staat is om feitlik enigiets op sy eie te doen, af te breek in baie kleiner take wat in 'n enkele masjien kan pas nie. Die ontwikkelaar verdeel sy groot taak in baie kleiner take, voer dit op baie masjiene parallel uit, versamel die data toepaslik, dan sal die oorspronklike probleem opgelos word.
Hierdie benadering laat jou toe om horisontaal te skaal - wanneer daar 'n groot taak is, voeg net meer nodusse by die berekening. Hierdie take word vir baie jare uitgevoer deur die MapReduce-programmeringsmodel wat verband hou met die implementering vir parallelle verwerking en generering van groot datastelle deur gebruik te maak van 'n verspreide algoritme op 'n groepering.
Tans is MapReduce ietwat verouderd en bring dit probleme mee. Ander argitekture het na vore gekom wat hierdie kwessies aanspreek. Naamlik, Lambda Argitektuur vir verspreivloeiverwerkingstelsels. Vooruitgang op hierdie gebied het nuwe gereedskap gebring: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Lêerberging en replikasiestelsels
Verspreide lêerstelsels kan as verspreide datawinkels beskou word. Dit is dieselfde as die konsep - berging en toegang tot 'n groot hoeveelheid data oor 'n groep masjiene wat 'n enkele entiteit is. Hulle gaan gewoonlik hand aan hand met Distributed Computing.
Yahoo is byvoorbeeld sedert 2011 bekend daarvoor dat hy HDFS op meer as 42 000 nodusse laat loop om 600 petagrepe data te stoor. Wikipedia definieer die verskil deurdat verspreide lêerstelsels lêertoegang toelaat deur dieselfde koppelvlakke en semantiek as plaaslike lêers te gebruik, eerder as deur 'n pasgemaakte API soos Cassandra Query Language (CQL).
Hadoop Distributed File System (HDFS) is 'n stelsel wat gebruik word vir rekenaars oor die Hadoop-infrastruktuur. Dit word wydverspreid gebruik om groot lêers (GB- of TB-grootte) op baie masjiene te stoor en te repliseer. Die argitektuur daarvan bestaan hoofsaaklik uit NaamNodes en DataNodes.
NameNodes is verantwoordelik vir die stoor van metadata oor die cluster, soos watter nodus lêerblokke bevat. Hulle tree op as netwerkkoördineerders, om uit te vind waar om lêers die beste te stoor en te kopieer, en hou tred met stelselgesondheid. DataNodes stoor eenvoudig lêers en voer opdragte uit soos lêerreplikasie, nuwe skryf, enander.
Onverbasend genoeg word HDFS die beste gebruik met Hadoop vir rekenaars, aangesien dit taakinligtingbewustheid verskaf. Die gespesifiseerde take word dan uitgevoer op die nodusse wat die data stoor. Dit laat jou toe om die ligging van die data te gebruik - optimaliseer berekeninge en verminder die hoeveelheid verkeer oor die netwerk.
Die interplanetêre lêerstelsel (IPFS) is 'n opwindende nuwe eweknie-protokol/netwerk vir verspreide lêerstelsels. Deur Blockchain-tegnologie te gebruik, spog dit met 'n ten volle gedesentraliseerde argitektuur met geen enkele eienaar of punt van mislukking nie.
IPFS bied 'n naamstelsel (soortgelyk aan DNS) genaamd IPNS en stel gebruikers in staat om inligting maklik te herwin. Dit stoor die lêer deur historiese weergawe, baie soos Git doen. Dit laat toegang tot alle vorige toestande van die lêer toe. Dit gaan steeds deur swaar ontwikkeling (v0.4 ten tyde van die skryf daarvan), maar het reeds projekte gesien wat daarin belangstel om dit te bou (FileCoin).
Boodskapstelsel
Boodskapstelsels bied 'n sentrale plek vir die berging en verspreiding van boodskappe binne 'n gemeenskaplike stelsel. Hulle laat jou toe om toepassingslogika van direkte kommunikasie met ander stelsels te skei.
Bekende skaal - LinkedIn se Kafka-groepering het 1 triljoen boodskappe per dag verwerk met pieke van 4,5 miljoen boodskappe per sekonde.
In eenvoudige terme werk die boodskapplatform soos volg:
- Boodskapoorgedra van die toepassing wat dit moontlik skep, 'n produsent genoem, gaan na die platform, en word gelees uit verskeie toepassings, genoem verbruikers.
- As jy 'n sekere gebeurtenis op verskeie plekke moet stoor, soos die skep van 'n gebruiker vir 'n databasis, berging, e-pos stuurdiens, dan is die boodskapplatform die skoonste manier om daardie boodskap te versprei.
Daar is verskeie gewilde top-boodskapplatforms.
RabbitMQ is 'n boodskapmakelaar wat jou in staat stel om die beheer van hul bane meer fyn in te stel deur roetereëls en ander maklik konfigureerbare parameters te gebruik. Dit kan 'n "slim" makelaar genoem word, want dit het baie logika en monitor die boodskappe wat daardeur gaan noukeurig. Verskaf opsies vir AP's en CP's vanaf CAP.
Kafka is 'n boodskapmakelaar wat 'n bietjie minder funksioneel is, aangesien dit nie tred hou met watter boodskappe gelees is nie en nie komplekse roetelogika toelaat nie. Dit help om ongelooflike prestasie te behaal en verteenwoordig die grootste belofte in hierdie ruimte met die aktiewe ontwikkeling van verspreide stelsels deur die oopbrongemeenskap en die ondersteuning van die Confluent-span. Kafka is die gewildste onder hoëtegnologiemaatskappye.
masjieninteraksie-toepassings
Hierdie verspreidingstelsel is 'n groep rekenaars wat saamwerk om as 'n aparte rekenaar vir die eindgebruiker te verskyn. Hierdie masjiene is in 'n algemene toestand en werkgelyktydig en kan onafhanklik werk sonder om die optyd van die hele stelsel te beïnvloed.
As jy die databasis as versprei beskou, slegs as die nodusse met mekaar in wisselwerking tree om hul aksies te koördineer. Dit is in hierdie geval iets soos 'n toepassing wat sy interne kode op 'n eweknie-netwerk laat loop en word as 'n verspreide toepassing geklassifiseer.
Voorbeelde van sulke toepassings:
- Known Scale – BitTorrent swerm 193 000 nodusse vir Game of Thrones-episode.
- Basiese registertegnologie van verspreide Blockchain-stelsels.
Verspreide grootboeke kan beskou word as 'n onveranderlike, toepassing-alleen databasis wat gerepliseer, gesinchroniseer en oor alle nodusse in die verspreidingsnetwerk gedeel word.
Die bekende skaal - die Ethereum-netwerk - het op 4 Januarie 2018 4,3 miljoen transaksies per dag gehad. Hulle gebruik die Event Sourcing-patroon, wat jou toelaat om die toestand van die databasis te eniger tyd te herstel.
Blockchain is die huidige onderliggende tegnologie wat vir verspreide grootboeke gebruik word en het eintlik hul begin gemerk. Hierdie nuutste en grootste innovasie in die verspreide ruimte het die eerste werklik verspreide betaalprotokol, bitcoin, geskep.
Blockchain is 'n verspreide grootboek met 'n geordende lys van alle transaksies wat ooit op sy netwerk plaasgevind het. Aanbiedings word gegroepeer en in blokke gestoor. Die hele blokketting is in wese 'n gekoppelde lys blokke. Gespesifiseerde blokkeis duur om te skep en is styf aan mekaar gekoppel deur kriptografie. Eenvoudig gestel, elke blok bevat 'n spesiale hash (wat begin met X aantal nulle) van die inhoud van die huidige blok (in die vorm van 'n Merkle-boom) plus die hash van die vorige blok. Hierdie hash vereis baie SVE-krag.
Voorbeelde van verspreide bedryfstelsels
Stelseltipes verskyn aan die gebruiker omdat dit enkelgebruikerstelsels is. Hulle deel hul geheue, skyf, en die gebruiker het geen probleme om deur die data te navigeer nie. Die gebruiker stoor iets in sy rekenaar en die lêer word op verskeie plekke gestoor, dit wil sê gekoppelde rekenaars sodat verlore data maklik herwin kan word.
Voorbeelde van verspreide bedryfstelsels:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (Apache-bediener).
As enige rekenaar hoër laai, dit wil sê as baie versoeke tussen individuele rekenaars uitgeruil word, is dit hoe lasbalansering plaasvind. In hierdie geval word die versoeke na die naburige rekenaar gepropageer. As die netwerk meer gelaai word, kan dit uitgebrei word deur meer stelsels by die netwerk te voeg. Die netwerklêer en vouers word gesinchroniseer en naamkonvensies word gebruik sodat geen foute voorkom wanneer data herwin word nie.
Caching word ook gebruik wanneer data gemanipuleer word. Alle rekenaars gebruik dieselfde naamspasie om lêers te benoem. Maardie lêerstelsel is geldig vir elke rekenaar. As daar opdaterings aan die lêer is, word dit na een rekenaar geskryf en die veranderinge word na alle rekenaars gepropageer, so die lêer lyk dieselfde.
Lêers word gesluit tydens die lees/skryf-proses, so daar is geen dooiepunt tussen verskillende rekenaars nie. Sessies kom ook voor, soos lees, skryf van lêers in een sessie en die sluiting van die sessie, en dan kan 'n ander gebruiker dieselfde doen en so aan.
Voordele van die gebruik van
'n Bedryfstelsel wat ontwerp is om mense se daaglikse lewe makliker te maak. Vir gebruikersvoordele en -behoeftes kan die bedryfstelsel enkelgebruiker of verspreid wees. In 'n verspreide hulpbronstelsel is baie rekenaars aan mekaar gekoppel en deel hul hulpbronne.
Voordele om dit te doen:
- As een rekenaar in so 'n stelsel foutief of beskadig is, sal 'n ander nodus of rekenaar daarvoor sorg.
- Meer hulpbronne kan maklik bygevoeg word.
- Hulpbronne soos drukkers kan verskeie rekenaars bedien.
Hierdie is 'n opsomming oor die verspreidingstelsel, hoekom dit gebruik word. 'n Paar belangrike dinge om te onthou: hulle is kompleks en word gekies vir skaal en prys en is moeiliker om mee te werk. Hierdie stelsels word in verskeie bergingskategorieë versprei: rekenaar-, lêer- en boodskapstelsels, registers, toepassings. En dit alles is net baie oppervlakkig oor 'n komplekse inligtingstelsel.