Apuntes+de+vgvilch

CARACTERÍSTICAS FUNDAMENTALES DE LA COMPUTACIÓN DISTRIBUIDA: Hay ciertos aspectos que se les presupone a los sistemas distribuidos y que no siempre son correctos:- La **fiabilidad**, ya que estas redes no son para nada fiables en ningún aspecto. - La **latencia** no sólo es no nula sino que es imprevisible. Cuando trabajamos con un simulador, es muy difícil decir que la latencia va a valer un tiempo determinado porque nunca lo vamos a saber con exactitud. - El **ancho de banda,** el cual no es infinito. - La red es **segura**, que tampoco es cierto. La red no debe asumir que el cliente actúa de buena voluntad. - Tampoco se debe asumir que la **topología** no cambie. Por ejemplo, en un sistema grid o en una red p2p los nodos pueden ser muy diversos. - No debemos suponer que haya un sólo **administrador,** sino que puede haber muchos.

¿Qué cosas podemos conseguir con la computación distribuida? - Transparencia: debemos acceder un recurso ya sea local o remoto. - Apertura: los sistemas distribuidos suelen ser abiertos. - Escalabilidad: las prestaciones deben crecer de forma lineal. - Tolerancia a fallos: Los sistemas no suelen tener un single point fail, si se cae un nodo el resto deben funcionar. - Seguridad: los protocolos que unen los sistemas distribuidos deben asegurar que las características anteriores se garanticen para un determinado número de nodos.

¿Cómo programar un sistema distribuido?

-RPC: (Llamada remota a procedimientos) Es un concepto antiguo que utiliza una representación externa de datos y que no es fácil de usar. -.Net: Es una alternativa de Microsoft para Java. El problema es que no es totalmente libre. - CORBA: Ya casi no se usa(sólo en Telefónica) - XML: Se está convertiendo en estándar para la invocación remota de procedimientos. - REST: Es una sintaxis de RPC que usa URL. Ejemplo de RPC usando GeoNames que a partir de un nombre te dice la latitud y longitud: Se puede hacer con Perl o con Ruby.