Kas yra paskirstytasis programavimas?

Paskirstytasis programavimas yra viena iš lygiagretaus programavimo arba lygiagretaus skaičiavimo formų. Lygiagretusis programavimas apima kompiuterius ir kompiuteriuose esančius skaičiavimo blokus, kurie vienu metu dirba su tam tikra problema, pavyzdžiui, numato rytojaus orus. Skaičiavimo vienetai gali būti labai arti ir koordinuoti arba gali būti išdėstyti vienas nuo kito. Kai skaičiavimo vienetai yra atskirti, tai vadinama paskirstytu programavimu. Esant tokiam scenarijui, labai dažnai skaičiavimo įrenginiai skiriasi vienas nuo kito, skiriasi ir operacinė sistema bei tinklo sąranka, todėl skaičiavimo veiklos programavimas yra ypač sudėtingas.

Sprendžiant problemą paskirstytu būdu, programa turi būti padalinta taip, kad programos dalys galėtų veikti skirtinguose skaičiavimo įrenginiuose; šios dalys dažnai vadinamos „procesais“. Procesai vyksta vienu metu, tačiau reikia perduoti duomenis ir rezultatus vieni kitiems. Jei procesai vykdomi skirtingoje aparatinėje įrangoje, pvz., viena dalis veikia Intel, o kita SUN, tada programas reikia kompiliuoti ir optimizuoti skirtingai.

Vienas iš būdų išspręsti pakankamai sudėtingą problemą yra išskaidyti įvesties dalis ir leisti skirtingiems skaičiavimo vienetams dirbti su skirtingomis dalimis, naudojant tą patį algoritmą, taisyklių rinkinį arba problemų sprendimo žingsnius. Pavyzdžiui, norint sulaužyti 10,000 1,000 porų genomą, pirmąsias 1,000 porų galima priskirti pirmajam skaičiavimo blokui, antruosius XNUMX porų priskirti antrajam skaičiavimo blokui ir pan., naudojant tą patį algoritmą. Naudojant paskirstytą programavimą, vienas iš pranašumų yra tas, kad skirtingi skaičiavimo blokai gali paleisti skirtingus algoritmus, kad išspręstų tą pačią problemą, o tai lemia žymiai geresnį sprendimą. Tai panašu į dėlionės sprendimą, kai vieni žmonės sujungia kraštą, o kiti sujungia tam tikros spalvos gabalus.

Paskirstytų skaičiavimo procesų koordinavimas gali būti ypač sudėtinga užduotis. Kai kurie skaičiavimo įrenginiai gali sugesti arba gali būti pertraukti atlikti kitus darbus. Pranešimai, kuriuose yra įvestis arba skaičiavimo rezultatai, gali nepasiekti paskirties vietų. Jei programos parašytos naiviai, praradus skaičiavimo bloką arba kai kuriuos pranešimus, visas kompiuterių rinkinys gali pakibti.

Naudojant paskirstytą programavimą, vienas procesas gali būti valdymo procesas, iš esmės atliekantis kitų procesų darbą, arba visi procesai gali veikti lygiaverčiu būdu, o joks procesas nėra „šeimininkas“. Kai kurie su paskirstytu programavimu susijusių problemų pavyzdžiai apima išteklių, tokių kaip nafta, geologinių duomenų analizę, baltymų ir biologinių molekulių modeliavimą, koduotų pranešimų nulaužimą ir karinį modeliavimą. SETI projektas, kurio tikslas – ieškoti protingos nežemiškos gyvybės iš Žemės gaunamų radijo pranešimų, galbūt yra vienas žinomiausių pavyzdžių.