Wat is gedistribueerde programmering?
Gedistribueerde programmering is een vorm van parallel programmeren of parallel computing. Parallel programmeren omvat computers en rekeneenheden binnen computers die gelijktijdig aan een bepaald probleem werken, zoals het voorspellen van het weer van morgen. De rekeneenheden kunnen zeer dichtbij en gecoördineerd zijn of kunnen uit elkaar worden geplaatst. Wanneer de rekeneenheden uit elkaar staan, wordt dit gedistribueerd programmeren genoemd. In een dergelijk scenario verschillen de rekeneenheden vaak van elkaar en verschillen het besturingssysteem en de netwerkconfiguratie ook, wat het programmeren van de computeractiviteit bijzonder uitdagend maakt.
Wanneer u een probleem op een gedistribueerde manier oplost, moet het programma worden opgesplitst zodat delen van het programma op de verschillende rekeneenheden kunnen worden uitgevoerd; deze delen worden vaak "processen" genoemd. De processen worden tegelijkertijd uitgevoerd, maar moeten invoer en resultaten met elkaar communiceren. Als de processen op verschillende hardware worden uitgevoerd, zoals een onderdeel dat op Intel draait en een ander onderdeel dat op SUN draait, moeten de programma's anders worden gecompileerd en geoptimaliseerd.
Een manier om een voldoende moeilijk probleem op te lossen, is door de invoeronderdelen op te splitsen en de verschillende rekeneenheden aan de verschillende delen te laten werken met hetzelfde algoritme, de set regels of stappen voor probleemoplossing. Om bijvoorbeeld een genoom van 10.000 paren te kraken, kunnen de eerste 1.000 paren worden toegewezen aan de eerste rekeneenheid, de tweede 1.000 paren worden toegewezen aan de tweede rekeneenheid, enzovoort, allemaal met hetzelfde algoritme. Met gedistribueerd programmeren is een voordeel dat de verschillende rekeneenheden verschillende algoritmen kunnen gebruiken om hetzelfde probleem op te lossen, wat leidt tot een aanzienlijk betere oplossing. Dit komt overeen met het oplossen van een puzzel waarbij sommige mensen de rand samenvoegen, terwijl anderen stukken van een bepaalde kleur samenstellen.
Coördinatie van de gedistribueerde computerprocessen kan een bijzonder moeilijke taak zijn. Sommige rekeneenheden kunnen mislukken of kunnen worden onderbroken om ander werk af te handelen. Berichten die de invoer of de resultaten van de berekening bevatten, bereiken mogelijk hun bestemmingen niet. Als de programma's op een naïeve manier worden geschreven, kan het verlies van een computer of sommige berichten ertoe leiden dat de hele set computers vastloopt.
In gedistribueerde programmering kan een proces het controleproces zijn, waarbij in wezen werk wordt gedaan door de andere processen, of alle processen kunnen op een peer-to-peer manier werken zonder dat een proces de 'meester' is. Enkele voorbeelden van problemen met gedistribueerde programmering zijn onder meer het analyseren van geologische gegevens voor hulpbronnen zoals aardolie, het modelleren van eiwitten en biologische moleculen, het kraken van gecodeerde berichten en militaire simulaties. Het SETI-project om te zoeken naar intelligent buitenaards leven uit de radioberichten die de aarde ontvangt, is misschien een van de bekendste voorbeelden.