Una de las características del modelo de actor en Erlang es distribución transparente. A menos que malinterprete, cuando envía mensajes entre actores, teóricamente no debe suponer que están en el mismo espacio de proceso o incluso ubicados en la misma máquina física.¿Cómo afecta el soporte de Erlang a la distribución * transparente * de los actores?
Siempre he tenido la impresión de que los sistemas distribuidos y tolerantes a fallos requieren un diseño de aplicación cuidadoso para resolver problemas inherentes alrededor de ordering/causality y consensus (entre otros).
Estoy bastante seguro de que Erlang no promete resolver estas clases de problemas de forma transparente, así que mi pregunta es, ¿cómo pueden los desarrolladores de Erlang lidiar con esto? ¿Diseñas tu aplicación como si todos los actores estuvieran en el mismo espacio de proceso y luego solo resolvieran problemas de distribución cuando llega el momento de distribuirlos realmente?
Si es así, es este transparente característica de distribución de de Erlang realmente sólo preocupado con el protocolo de alambre utilizado para la mensajería remoto y no realmente transparente en el sentido de que una verdadera aplicación distribuida todavía requiere un diseño cuidadoso en la capa de aplicación?
Re: sincronicidad, me refería a relaciones causales y problemas de ordenamiento de eventos que surgen en sistemas distribuidos con tolerancia a fallas más que "sincronización de datos". Veré si puedo aclarar esa parte un poco. –