apuntes_vallesquino_23-02-2009

=Apuntes de clase 23-02-09 = Repaso de la clase anterior. Lectura de los apuntes de apuntes_alexbm8_20_02_09, Cloud Computing. Ejercicios de autoevaluación: [|Sistemas Grid de draxus] y [|Sistemas Grid – Condor (alumna del año pasado)].

__A continuación se siguió por el tema, estudiando los objetivos de los sistemas distribuidos y que es lo que se quería conseguir con ellos:__
 * Transparencia en los sistemas distribuidos ya que el acceso a sus recursos no depende de su situación física.
 * Apertura: Están definidos por estándar y al añadir un sistema P2P nuevo (por ejemplo) debe seguir los protocolos establecidos.
 * Escalabilidad: Añadir nuevos nodos al sistema distribuido no debe ser ningún impedimento.
 * Tolerancia a fallos: si algún nodo del sistema distribuido se cae, que no haga que se caiga todo el sistema, es decir, que la estabilidad del sistema no dependa de un solo nodo.
 * Seguridad: evitar ataques de DoS, o que, por ejemplo, un nodo no se quede con todos los recursos de la red.
 * Estas características deben de configurarse en un sistema distribuido ya que no vienen definidas por defecto.

__Llamadas a procedimiento remoto (RPC):__ -En RPC debe de existir una representación externa de datos independiente para que dos sistemas con codificación de datos diferentes puedan entenderse entre si. Es lo que se le denomina serialización (//marshalling// o //inflado/desinflado//) es decir convertir a ese formato externo las estructuras de datos. -Ejemplo: NFS permite el acceso a un sistema de ficheros remotos como si se tratase de un sistema de ficheros local.

__API de programación para sistemas distribuidos heterogéneos.Ejemplos:__ -CORBA: llamada remota a objetos: podemos instanciar objetos remotos (aunque es muy complicado).Telefónica lo usa. -Hoy en día se utiliza XML para representación de datos e interfaz API de acceso remoto.Se verá en mas detalle a lo largo de la asignatura. -Aparte de XML existen otros interfaces mas simples:REST: la llamada a un procedimiento remoto se especifica por un URL: ver ejemplos de [|RUBY] y [|PERL] que a partir del servicio que nos ofrece [|GEONAMES] podemos hallar la longitud y latitud de una población: __Hacemos una breve descripción del código Ruby para entrar en contacto con el nuevo lenguaje de programación:__ Ejemplo de RUBY para obtener las coordenadas de un pueblo en geonamex: code require 'net/http' require 'uri' pueblo = ARGV[0] respuesta = Net::HTTP.get( URI.parse( URI.escape('http://ws.geonames.org/search?q='+pueblo+'&country=ES') ) ) respuesta =~ / ([^<]+)<\/lat>\s+ ([^<]+)<\/lng>/ print "Las coordenadas de #{pueblo} son latitud=#$1 y longitud=#$2"
 * 1) !/usr/bin/ruby
 * 2) Los require realizan la misma función que un import, es decir coger los objetos de una librería ya definida.
 * 1) El argumento que le metemos desde la Shell será el pueblo a buscar sus coordenadas.
 * 1) Respuesta que nos devuelve el servidor de geonames tras la petición con el “get”, con: URI.parse=lee un uri; URI.escape=convierte la cadena a ascii.
 * 1) Imprimimos por pantalla con print, también se puede imprimir con puts.
 * 1) NOTA:La respuesta se obtiene mediante una expresión regular (se conoce de antemano)

code Dentro de la asignatura no se trata de que seamos expertos en PERL, RUBY o PYTON pero si que a partir de un código que nos de el profesor, modificarlo para conseguir los objetivos que se pretendan.

__Este tipo de interfaces abiertos, con formatos abiertos de llamada como SOAP, XML-RPC permiten crear los llamados mashups.__ -Mashups: combinar varios servicios de Internet por ejemplo un anuncio por palabras con un sistema de geoposicionamiento. Es la base fundamental de la web 2.0 ya que ademas de que la gente pueda aportar en la “inteligencia colectiva”, se puede usar distintos servicios que son abiertos y combinarlos entre si, gracias a su interfaz abierto. __Ejercicios de autoevaluación. Bloque 1.2:__ Del.icio.us= etiquetado de paginas web.

__Apartado 1.4-.Tipos de sistemas de computación distribuida__ -Diferencia entre recursos centralizados y distribuido: comunicación distribuido o centralizada, por ejemplo en messenger el envío de mensajes entre 2 usuarios pasa a través de un servidor centralizado. -La mayoría de los sistemas distribuidos utilizan un sistema de descubrimiento centralizado lo que conlleva a una cierta vulnerabilidad debido a la saturación del server y su baja escalabilidad. Finalmente el recuso es lo que se tiene que enviar por la red, pero en algunos casos el recurso no viaja desde cliente a cliente, sino que esta obligado a pasar por un servidor central llamado //broker//, por ejemplo, en google talk, pasa por el servidor de google. Por otra parte Jabber lo realiza sin brokers. -Bittorrent: descubrimiento de recursos mediante las semillas, a partir de un buscador (Tracker). -Chord: sistema de tablas de HASH distribuido, totalmente descentralizado.