Una delle caratteristiche del modello attore in Erlang è distribuzione trasparente. A meno che non stia interpretando male, quando si inviano messaggi tra attori, teoricamente non si deve presumere che si trovino nello stesso spazio del processo o addirittura collocati sulla stessa macchina fisica.In che modo il supporto di Erlang per la distribuzione * trasparente * degli attori influisce sul design dell'applicazione?
Ho sempre avuto l'impressione che i sistemi a tolleranza d'errore e distribuiti richiedano un'attenta progettazione dell'applicazione per risolvere problemi inerenti a ordering/causality e consensus (tra gli altri).
Sono sicuro che Erlang non promette di risolvere in modo trasparente queste classi di problemi, quindi la mia domanda è: come fanno gli sviluppatori di Erlang a far fronte a questo? Progetta la tua applicazione come se tutti gli attori si trovassero nello stesso spazio del processo e poi risolvessero solo i problemi di distribuzione quando arriva il momento di distribuirli effettivamente?
Se è così, è questa caratteristica distribuzionetrasparente di Erlang realtà solo interessati con il protocollo filo utilizzato per la messaggistica remota e non molto trasparente nel senso che una vera applicazione distribuita richiede ancora accurata progettazione nel livello applicazione?
Re: sincronicità, mi riferivo alle relazioni causali e ai problemi di ordinamento degli eventi che si verificano nei sistemi distribuiti fault-tolerant più che nella "sincronizzazione dei dati". Vedrò se riesco a chiarire quella parte un po '. –