Penso che i termini stessi potrebbero essere usati male e semanticamente si sovrappongono, ma dalla mia esperienza, un sistema distribuito è uno in cui tutte le macchine parlano tra loro; un cluster è dove le macchine possono essere indipendenti (ma non sempre).
Prendi ad esempio un MMORPG. Le architetture più complesse e più sofisticate sono distribuite in un modo che il ragazzo accanto a te e con cui stai parlando sia effettivamente connesso a un server fisico diverso. Funziona facendo in modo che ogni "server di simulazione" parli con diversi servizi (come un servizio di "chat", un servizio di "commercio", ...) tramite un bus di servizio. Questo è ciò che viene considerato architettura distribuita - le macchine stanno funzionando per raggiungere lo stesso obiettivo
Viceversa, i server in cluster possono fare il proprio, distinto set di lavoro completamente indipendente dalle altre macchine nel cluster. Guarda il progetto SETI ad esempio ... o anche un semplice cluster con carico bilanciato ASP.NET ... In entrambi i casi, questi cluster stanno facendo il proprio set di lavoro indipendente e non comunicano tra loro - stanno solo offrendo diversi lavori (SETI) o pagine (ASP.NET) ai loro clienti ..
Quindi cosa chiamereste rispettivamente l'architettura di base 'master-slave' e' master-master'? – user198729
Direi la sua semantica ... Tornando all'esempio MMO; un'altra architettura (molto più semplice e molto usata nel MMOS originale) è quella di avere i server di simulazioni del mondo (suddivisi tra spazio fisico di gioco, ad esempio mappe) ignoranti l'uno dell'altro. Tutto ciò che sanno è ricevere informazioni su giocatori da un server di "zonazione" di terze parti. In questo caso, ogni server fa il proprio specifico set di lavoro, parlando con i propri client e non parla con nessun altro server, così come i client non parlano più di un server alla volta. Questo potrebbe quindi essere facilmente considerato un cluster o distribuito ... – dferraro