Lad os nedbryde de vigtigste forskelle mellem parallel og distribueret computing, og hvordan de påvirker skalerbarhed.
Parallel computing
* Definition: En type computing, hvor flere processorer eller kerner inden for en enkelt maskine Arbejd samtidig på forskellige dele af det samme problem. Fokus er på at reducere den tid, det tager at løse et problem ved at dele arbejdsbyrden.
* Nøgleegenskaber:
* delt hukommelse (typisk): Parallelle systemer bruger ofte delt hukommelse, hvilket betyder, at alle processorer kan få adgang til det samme hukommelsesrum. Dette muliggør let datadeling og kommunikation mellem processorer. Delt hukommelse kan dog være en flaskehals.
* Tæt kobling: Processorer er tæt koblet, hvilket betyder, at de kommunikerer ofte og har lav latenstid.
* homogent miljø (normalt): Processorerne er ofte ens eller identiske med hensyn til arkitektur og kapaciteter.
* enkelt operativsystem: Kører typisk på en enkelt forekomst af et operativsystem.
* placering: Fysisk placeret tæt på hinanden, ofte inden for den samme computer eller rack.
* Eksempler:
* Multicore -processorer på din stationære computer.
* GPU'er (grafikbehandlingsenheder) til videnskabelige simuleringer eller maskinlæring.
* Delt hukommelse med multiprocessor-servere.
Distribueret computing
* Definition: En type computing, hvor flere uafhængige computere (noder eller maskiner) arbejder sammen om en fælles opgave eller sæt opgaver. Disse maskiner er fysisk adskilt og kommunikerer over et netværk.
* Nøgleegenskaber:
* Distribueret hukommelse: Hver computer (node) har sin egen private hukommelsesplads. Data skal eksplicit overføres mellem knudepunkter ved hjælp af meddelelsesafgang.
* Løs kobling: Knudepunkter er løst koblet, hvilket betyder, at de kan kommunikere sjældnere og har højere latenstid sammenlignet med parallelle systemer.
* heterogent miljø (ofte): Knudepunkter kan være forskellige med hensyn til hardware, operativsystemer og netværksforbindelse.
* Flere operativsystemer: Hver knude kører typisk sin egen forekomst af et operativsystem.
* placering: Geografisk spredt, kan være på tværs af et rum, en bygning eller endda verden.
* Eksempler:
* Cloud computing platforme (AWS, Azure, Google Cloud).
* Cluster Computing (grupper af netværkscomputere, der arbejder sammen).
* Grid computing (geografisk distribuerede ressourcer).
* Peer-to-peer-netværk.
Nøgleforskelle opsummeret:
| Funktion | Parallel computing | Distribueret computing |
| -------------------
| Processorer | Flere kerner inden for en enkelt maskine | Flere uafhængige maskiner (noder) |
| hukommelse | Delt hukommelse (typisk) | Distribueret hukommelse (hver knude har sin egen) |
| kobling | Stram kobling | Løs kobling |
| placering | Nær nærhed | Geografisk spredt |
| Kommunikation | Delt hukommelsesadgang eller -meddelelse, der passerer | Meddelelse, der passerer (netværkskommunikation) |
| homogenitet | Normalt homogen | Ofte heterogen |
| operativsystem | Enkelt instans | Flere tilfælde |
påvirkning af skalerbarhed
* Parallel computing skalerbarhed:
* begrænset af antallet af kerner/processorer i en enkelt maskine: Du er i sidste ende begrænset af maskinens fysiske begrænsninger. Opskalering af typisk involverer at købe mere kraftfuld hardware med flere kerner, som kan blive meget dyrt.
* Delt hukommelsesflaskehals: Efterhånden som antallet af processorer stiger, kan påstand om delt hukommelse blive en betydelig flaskehals, hvilket begrænser skalerbarheden. Teknikker som cache og NUMA (ikke-ensartet hukommelsesadgang) kan hjælpe med at afbøde dette.
* Amdahls lov: Amdahls lov siger, at speedupen af et program, der bruger flere processorer, er begrænset af andelen af programmet, der kan paralleliseres. Hvis en betydelig del af programmet i sig selv er sekventielt, vil det at tilføje flere processorer have en formindsket afkast.
* God til: Beregningsmæssigt intensive opgaver, der let kan opdeles i mindre, uafhængige opgaver og er velegnet til delte hukommelsesarkitekturer.
* Distribueret computerskalerbarhed:
* Horisontalt skalerbar: Du kan nemt tilføje flere noder til systemet for at øge dens behandlingseffekt. Dette kaldes ofte "skalering ud."
* fejltolerance: Hvis en knude mislykkes, kan systemet fortsætte med at fungere, forudsat at arbejdsbyrden kan omfordeles til andre noder.
* håndterer store datasæt: Velegnet til behandling og lagring af massive datasæt, der ville være upraktiske at håndtere på en enkelt maskine.
* Netværks latenstid: Kommunikation mellem noder over netværket introducerer latenstid, som kan begrænse ydelsen, især til applikationer, der kræver hyppig dataudveksling. Strategier som datalokalitet (behandling af data tæt på, hvor de er gemt) er afgørende.
* kompleksitet: Distribuerede systemer er mere komplekse til at designe, implementere og styre på grund af problemer som datakonsistens, fejltolerance og sikkerhed.
* God til: Anvendelser, der kan opdeles i uafhængige opgaver, der kan udføres på forskellige maskiner, såsom webservere, databehandlingsrørledninger og store simuleringer.
I et nøddeskal:
* Parallel computing prioriterer hastighed og effektivitet inden for en enkelt maskine. Dens skalerbarhed er begrænset af hardware -begrænsninger og flaskehalse med hukommelse.
* Distribueret computerprioritering prioriterer skalering ud for at håndtere større arbejdsbelastninger og datamængder med iboende fejltolerance. Dens skalerbarhed er begrænset af netværksforsinkelse og kompleksiteten ved at styre et distribueret system.
Valg af parallel og distribueret computer afhænger meget af det specifikke problem, du prøver at løse, de tilgængelige ressourcer og det krævede niveau af skalerbarhed og fejltolerance. Ofte anvendes hybridmetoder, der kombinerer parallel behandling inden for hver knude af et distribueret system.