Vad är distribuerad programmering?

Distribuerad programmering är en form av parallell programmering eller parallell beräkning. Parallell programmering innebär att datorer och beräkningsenheter i datorer arbetar samtidigt med ett visst problem, som att förutsäga morgondagens väder. Beräkningsenheterna kan vara mycket nära placerade och koordinerade eller kan placeras isär. När beräkningsenheterna är isär kallas det distribuerad programmering. I ett sådant scenario skiljer sig mycket ofta datorenheterna från varandra, och operativsystemet och nätverksinställningarna skiljer sig också, vilket gör programmeringen av datoraktiviteten särskilt utmanande.

När man löser ett problem på ett distribuerat sätt behöver programmet delas upp så att delar av programmet kan köras på de olika beräkningsenheterna; dessa delar kallas ofta ”processer”. Processerna löper samtidigt men behöver kommunicera input och resultat till varandra. Om processerna körs på olika hårdvara, till exempel en del som körs på Intel och en annan körs på SUN, måste programmen kompileras och optimeras på olika sätt.

Ett sätt att lösa ett tillräckligt svårt problem är att bryta upp de ingående delarna och låta de olika beräkningsenheterna arbeta på de olika delarna med samma algoritm, uppsättningen regler eller steg för problemlösning. Till exempel, för att knäcka ett genom på 10,000 1,000 par kan de första 1,000 XNUMX paren tilldelas den första beräkningsenheten, de andra XNUMX XNUMX paren tilldelas den andra beräkningsenheten och så vidare, alla med samma algoritm. Med distribuerad programmering är en fördel att de olika beräkningsenheterna kan köra olika algoritmer för att lösa samma problem, vilket leder till en betydligt bättre lösning. Det här liknar att lösa ett pussel där vissa personer lägger ihop bården medan andra sätter ihop bitar av en viss färg.

Samordning av de distribuerade beräkningsprocesserna kan vara en särskilt svår uppgift. Vissa datorenheter kan misslyckas eller kan bli avbrutna för att hantera annat arbete. Meddelanden som innehåller ingångarna eller resultaten av beräkningen kan misslyckas med att nå sina destinationer. Om programmen är skrivna på ett naivt sätt kan förlusten av en datorenhet eller vissa meddelanden göra att hela uppsättningen datorer hänger sig.

I distribuerad programmering kan en process vara den styrande processen, i huvudsak att få arbete gjort av de andra processerna, eller så kan alla processer fungera på ett peer-to-peer-sätt utan att någon process är ”mästaren”. Några exempel på problem som försökts med distribuerad programmering inkluderar analys av geologiska data för resurser som petroleum, modellering av proteiner och biologiska molekyler, knäckning av kodade meddelanden och militära simuleringar. SETI-projektet för att söka efter intelligent utomjordiskt liv från radiomeddelanden som mottas av jorden är kanske ett av de mest kända exemplen.