Está en la página 1de 9

Bloque 1Bloque 2Bloque 3Referencias

Servicios Distribuidos

1. Modelo de objetos distribuidos


Este modelo consiste en extender el paradigma de objetos a los sistemas  distribuidos,
teniendo en cuenta los siguientes puntos: 

​Los recursos son encapsulados en forma de Objetos (un recurso es  un objeto). 
La distribución y la partición de una aplicación también esta basada  en Objetos. 
Se logra la comunicación remota invocando a métodos de objetos,  logrando de
esta manera transparencia en la invocación. 

Figura 1: Modelos de objetos distribuidos

Fuente: Elaboración propia 

Los aspectos clave del modelo de objetos distribuido son: 


Respecto a las referencias a objetos remotos:

1. Extensión del concepto de referencia a objetos remotos: Otros objetos pueden


invocar los métodos de un objeto remoto si tienen acceso a su referencia de
objeto remoto. Las referencias a objetos remotos se pueden pasar como
argumentos y resultado de las invocaciones de métodos remotos. 
2. Implementación de servicio de nombres.​​

Respecto a la invocación de métodos remotos:

Extensión del concepto de RPC a objetos


Implementación el paso por valor de objetos 
Invocaciones estáticas y dinámicas 

∙Respecto a la definición y procesamiento de interfaces 

Definición de interfaces en sistemas heterogéneos 


Generación de stubs 

Referencias a objetos
El concepto de referencia a objeto remoto es análoga al concepto conocido de
referencia a objeto: 

  Este permite de forma unívoca la ubicación de un objeto cualquiera   en un


sistema distribuido. 
Valga la redundancia, se usa para referenciar un “objeto distribuido”,   es decir
poder invocarlo. 
De alguna manera extiende el concepto de puntero, permitiendo que  se puedan
referenciar objetos remotos. 

Cuando implementamos referencias a objetos remotos: 

Dichas referencias ocultan su implementación, es decir que son   manejadas de


forma abstracta. 
En casi todas las plataformas, la implementación de referencias es  dependiente
de dicha plataforma, pero existen algunas tecnologías   como CORBA, que
permiten la estandarización de la   interoperabilidad, permitiendo que trabajen
distintas tecnologías. 
Debido a que la referencia es a algo remoto, dicha referencia   normalmente
contiene la siguiente información:  

1. Dirección IP de máquina 
2. Número de puerto dedicado al sistema de objetos 
3. Número de objeto dentro de los objetos de un nodo 

Utilización de referencias a objetos 

Como vimos el concepto de referencia a objetos remotos es análogo a los  objetos que
ya conocíamos, por ente si tenemos que “REFOBJ“ es una   referencia a un objeto
remoto, entonces podemos utilizarlo de la misma  forma que se utilizan las referencias
comunes.

∙Utilizando una invocación estática de cualquier método remoto:


 REFOBJ.metodo1(arg1,arg2,...) 

∙También se le puede pasar la referencia a otro objeto, para que este   lo utilice:
OTROOBJETOREMOTO.metodo31(REFOBJ);

El problema de binding: ¿cómo obtener una  referencia a un objeto?  

Tenemos 2 posibles enfoques: 


El Binding estático: Este se resuelve en tiempo de compilación. Para   ello, la


ubicación del objeto debe ser conocida y fija, y mientras el   programa se compila la
referencia es generada por el compilador. 
El Binding dinámico (late binding): Este
se resuelve en tiempo de   ejecución. Esto
nos da una flexibilidad mayor, pero requiere que   utilicemos un catálogo de servicios
que proporcione las referencias  en tiempo de ejecución a partir del nombre simbólico o
algún otro  identificador del servicio. 

Catálogos de servicios  

Para el Binding dinámico existen, dos tipos de catálogos 


Naming service: o servicio de páginas blancas (como en la guía   telefónica). Este


proporciona la referencia en función del nombre del  objeto y es análogo al servicio de
DNS de red para traducir nombres  a IP’s. 
Trading service: o servicio de páginas
amarillas (como en la guía   telefónica).
Proporciona la referencia en función del servicio que  proporciona el objeto. Pudiendo
encontrar el objeto que cumple con  tal funcionalidad. 

2. Servicios Web

Se conoce como Servicio Web (en inglés, web service) a la tecnología que  utiliza un
conjunto de protocolos y estándares para intercambiar datos entre  aplicaciones. 

Un servicio Web (o web service) es cualquier servicio, disponible sobre  Internet, que
utiliza un sistema de mensajería estándar (XML) y no está   asociado a un sistema
operativo o lenguaje de programación. Los servicios  web permiten intercambiar datos
con diferentes aplicaciones de software,  desarrolladas en lenguajes de programación
diferentes y que se ejecutan  sobre cualquier plataforma. 

Existen organizaciones cuyo foco es mantener la arquitectura y  reglamentación de los


servicios Web, algunas de ellas son OASIS y W3C. Esto  es posible fomentando la
adopción de estándares abiertos, permitiendo de   esta manera el poder intercambiar
información y utilizarla en sistemas   heterogéneos (a esto se lo llama
interoperabilidad). 

También existe la Organización para la Interoperabilidad de Servicios Web  (en inglés


Web Services Interoperability Organization) que tiene como   objetivo fomentar y
promover la interoperabilidad de Servicios Web. En su   ámbito se ha creado el
organismo llamado WS-I (Web Services   Interoperability) cuyo objetivo es ser un
integrador de estándares, y de esta  forma, ayudar al avance de los servicios web de
un modo estructurado y   coherente. Con todo esto se pretende mejorar la
interoperabilidad entre  las diferentes implementaciones de Servicios Web. 
La arquitectura de servicios web se basa en tres componentes:  

proveedor de servicios web. 


el solicitante del servicio web. 
el registro del servicio web. 

Figura 2: Arquitectura de servicios web SOAP 


Fuente: Wikipedia
(https://upload.wikimedia.org/wikipedia/commons/4/4a/Webservices.png) 

En la figura 2 se representa cómo interactúan los tres componentes para  hacer uso de
un servicio: 

El proveedor de servicio envía al registro del servicio un fichero   WSDL con la


definición del servicio web.  
El solicitante del servicio se contacta con el registro del servicio y  descubre quién
es el proveedor del servicio (protocolo WSDL) y   contacta con el proveedor del
servicio (protocolo SOAP).  
El proveedor del servicio válida la petición de servicio y envía el dato
 estructurado en formato XML utilizando el protocolo SOAP.  
El solicitante del servicio valida nuevamente el fichero XML  utilizando un fichero
XSD.

Estándares en Servicios web 

El centrarse en los protocolos y no sus implementaciones, es uno de los  factores clave


en los estándares de Internet. Esto se debe a que Internet está   compuesto por
tecnologías heterogéneas operando conjuntamente de   modo satisfactorio mediante
protocolos compartidos. Teniendo en cuenta   esto es que se puede impedir que
fabricantes o proveedores individuales  impongan un estándar en Internet. El desarrollo
open source (software de   código fuente abierto) desempeña un rol fundamental a la
hora de la   interoperatividad de implementaciones de estándares de cualquier
 proveedor. 

Existen estándares que desempeñan roles clave en los servicios Web,.  Algunos de
ellos son: UDDI (Universal Description, Discovery and Integration),   WSDL (Web
Services Description Language), WSIL (Web Services Inspection  Language), SOAP y
WS-I (Web Services Interoperability).  

Figura 3: Algunos estándares de en los servicios WEB 


Fuente: Slide Share (https://www.slideshare.net/imcinstitute/java-web-
services-15-introduction-to web-services) 

Estos son algunos de los estándares que desempeñan roles clave en servicios  Web: 

Web Services Protocol Stack: conjunto de servicios y protocolos de   los


servicios web. 
XML (Extensible Markup Language): formato estándar para los   datos que se
intercambian. Describe una clase de objetos de datos llamados documentos
XML. Para definir un elemento en XML se  tiene en cuenta etiquetas y contenido,
que en XML se denominan   datos de tipo carácter. Para la organización de las
estructuras físicas   y lógica de un documento XML siguen normas que definen
cuándo   un documento XML está bien formado y cuándo es válido, o no. Otros
 protocolos: los datos en XML también pueden enviarse de una  aplicación a otra
mediante protocolos normales como Hypertext   Transfer Protocol (HTTP), File
Transfer Protocol (FTP), o Simple Mail  Transfer Protocol (SMTP). 
SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote   Procedure
Call): son protocolos ligeros para el intercambio de   información en un entorno
descentralizado y distribuido. Utiliza mensajes XML para invocar métodos
remotos. Permite el enlace y la   utilización de servicios Web encontrados
definiendo una ruta de   mensaje para el direccionamiento de mensajes. Consta
de tres  partes: define una infraestructura para describir el contenido del  mensaje
y cómo procesarlo; define un conjunto de normas de  codificación para expresar
instancias de tipos de datos y una convención para representar llamadas y
respuestas a  procedimientos remoto. (www.w3.org/TR/SOAP) 
WSDL (Web Services Description Language): es el lenguaje basado   en XML
para la descripción de los servicios web y las instancias de  servicios Web en la
red. Describe los requisitos funcionales   necesarios para establecer una
comunicación con los servicios web,  esto incluye la forma en la cual los clientes
externos pueden   interactuar, los métodos que soportan y la sintaxis de los
protocolos  de comunicación (www.w3.org/TR/wsdl) 
UDDI (Universal Description, Discovery and Integration): protocolo   para
compartir información de los servicios web en un registro   global, encontrar
servicios web disponibles en el registro y definir  cómo actúan conjuntamente en
internet.(www.uddi.org) 
WSIL (Web Services Inspection Lenguage): es una especificación   para un
registro distribuido de información acerca de los servicios   web. Define el modo
en el cual se publica y descubre información   sobre los servicios web.. La
especificación WSIL complementa UDDI   porque facilita el descubrimiento de
servicios distribuidos de  servicios que están disponibles en sitios Web que quizá
no se   enumeren aún en un registro UDDI.
(www.ibm.com/developerworks/webservices/library/ws-wsilspec.html)
WS-Security o WS-S (Web Service Security): Este es un protocolo de
 seguridad, el cual es aceptado como estándar por OASIS  (Organization for the
Advancement of Structured Information Standards). Este protocolo permite y
garantiza la autenticación de los   actores en un sistema distribuido y la
confidencialidad de los  mensajes enviados. 
REST (Representational State Transfer): Es más bien una   arquitectura que
proporciona una API, mediante el uso del protocolo  HTTP (utilizando cada uno
de sus métodos GET, POST, PUT, DELETE,   etcétera) permite realizar
operaciones entre la aplicación que ofrece  el servicio web y el cliente. 
GraphQL: Este protocolo permite interpretar una consulta enviada  por un cliente
y retornar los datos requeridos. Las consultas se  parecen a objetos JSON vacíos
que se envían a un proveedor   GraphQL, el cual retorna solo los datos
consultados. Algunos  expertos dicen que esta nueva forma de comunicarse con
el backend  reemplazará a las APIs REST. 

Ventajas de los servicios web

Contribuyen a la interoperabilidad entre sistemas de software al  independizarlos


de sus propiedades o de las plataformas sobre las  que se ejecuten. 
Favorecen el uso de estándares y protocolos basados en texto, que  facilitan el
acceso al contenido de los servicios web y entender su  funcionamiento. 
Se pueden utilizar servicios integrados fácilmente al permitir combinar servicios y
software de diferentes compañías localizadas en lugares geográficos distantes. 

Desventajas de los servicios web

Los estándares abiertos de computación distribuida como CORBA   (Common


Object Request Broker Architecture) utilizados para  realizar transacciones no son
comparables en su grado de desarrollo. 
Si se compara con otros modelos de computación distribuida como  Java Remote
Method Invocation (RMI), CORBA o Distributed   Component Object Model
(DCOM) el rendimiento de servicios web es bajo. Este inconveniente surge de
usar un formato basado en texto. En el planteo de XML no se consideraron como
requisitos la  concisión ni la eficacia de procesamiento.  
Pueden evadirse medidas de seguridad basadas en firewall donde las   reglas
tratan de bloquear o auditar la comunicación entre programas  a ambos lados de
la barrera, en el caso de usar HTTP. 

3. Sistemas de Archivos Distribuidos 


Qué es un sistema de archivos distribuido 

Un sistema de archivos distribuido (DFS) o un sistema de archivos de red es


  cualquier sistema de archivos que permite el acceso a archivos de múltiples   hosts
compartidos a través de una red de computadoras. Esto hace posible   que múltiples
usuarios en múltiples máquinas compartan archivos y  recursos de almacenamiento. 

Los sistemas de archivos distribuidos difieren en su rendimiento,   mutabilidad de


contenido, manejo de escrituras concurrentes, manejo de   pérdida permanente o
temporal de nodos o almacenamiento, y su política  de almacenamiento de contenido. 

Figura 4: Diferentes servicios de sistemas de archivos distribuidos 


DFS Manejados localmente DFS Manejados remotamente
Cliente Escrito en Cliente Ejecutado en
BeeGFS C / C++ Amazon S3 Amazon.com
Google Cloud
Ceph C++ Google
Storage
Rackspace, IBM, 
SWIFT (part of
GlusterFS C Hewlett-Packard,
OpenStack)
others
HDFS Java Microsoft Azure Microsoft
Infinit C++ Cleversafe Cleversafe
Isilon OneFS C/C++

Lustre C

MapR-FS C, C++

MooseFS C

ObjectiveFS C

OpenAFS C

Ori C, C++

Quantcast File
System
C

Scality C

Spectrum Scale (GPFS) C, C++


Tahoe-LAFS Python

XtreemFS Java, C++


Fuente: Wikipedia
(https://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems) 

Sistema de archivos compartidos vs Sistemas de  archivos distribuidos


 

Existe el concepto de sistema de archivos en clúster, que es un sistema de  archivos


que se comparte al montarse simultáneamente en varios   servidores. Existen varios
enfoques para la agrupación en clústeres, la   mayoría de los cuales no emplean un
sistema de archivos agrupados (solo  almacenamiento de conexión directa para cada
nodo), es decir no   necesariamente se encuentran distribuidos. Los sistemas de
archivos   agrupados pueden proporcionar características como direccionamiento y
 redundancia independientes de la ubicación que mejoran la confiabilidad o  reducen la
complejidad de las otras partes del clúster. Los sistemas de  archivos paralelos son
un tipo de sistema de archivos agrupados que   distribuyen datos en varios nodos de
almacenamiento, generalmente por   redundancia o rendimiento, encontrándose estos
claramente distribuidos.  
Existen diferentes enfoques arquitectónicos para un sistema de archivos de   disco
compartido: 

Algunos distribuyen información de archivos en todos los servidores   de un


clúster (totalmente distribuidos). 
 Otros utilizan un servidor de metadatos centralizado.  

Ambos logran lo mismo, es decir el permitir que todas las computadoras  accedan a los
datos en un dispositivo de almacenamiento compartido.  

Por otro lado, los sistemas de archivos distribuidos no comparten el acceso   de


nivel de bloque al mismo almacenamiento, sino que utilizan un protocolo  de red. Estos
se conocen comúnmente como sistemas de archivos de red,  aunque no son los únicos
sistemas de archivos que utilizan la red para enviar  datos. Los sistemas de archivos
distribuidos pueden restringir el acceso al   sistema de archivos dependiendo de las
listas de acceso o las capacidades   tanto de los servidores como de los clientes,
dependiendo de cómo esté  diseñado el protocolo.
Existe una diferencia entre un sistema de archivos distribuido y un almacén   de
datos distribuidos. Un sistema de archivos distribuido (o filesystem   distribuido)
permite a las computadoras acceder a los archivos utilizando las  mismas técnicas que
con los sistemas de archivos locales; es decir en el   sistema operativo utilizamos los
mismos comandos para  montaje/desmontaje, listados de directorios, lectura/escritura
en los límites  de bytes, modelo de permiso nativo del sistema, etc. Los almacenes de
 datos distribuidos, por el contrario, requieren el uso de una API o biblioteca  diferente y
tienen diferentes semánticas (la mayoría de las veces, de una  base de datos).  

Consideraciones referidas a tolerancia a fallas,   performance y


concurrencia 

La falla del hardware del disco o un nodo de almacenamiento cualquiera en   un


sistema de archivos distribuido (clúster) puede crear un único punto de  falla que puede
resultar en la pérdida de datos o la indisponibilidad. La   tolerancia a fallos (fault
tolerance) y la alta disponibilidad (high availability) pueden proporcionarse a través de
la replicación de datos de un tipo u otro,  de modo que los datos permanezcan intactos
y disponibles a pesar del fallo  de cualquier equipo individual en el ambiente distribuido.
 

Una medida de rendimiento común de un sistema de archivos distribuidos   es la


cantidad de tiempo necesaria para satisfacer las solicitudes de servicio.   En los
sistemas convencionales, este tiempo consiste en un tiempo de  acceso al disco y una
pequeña cantidad de tiempo de procesamiento de la   CPU. Pero en un sistema de
archivos clusterizado (en cluster), cualquier   acceso remoto tiene una sobrecarga
adicional debido a la estructura   distribuida. Es decir que incluyendo el tiempo para
entregar la solicitud a un   servidor, el tiempo de entrega de la respuesta al cliente y,
para cada   dirección, existe una sobrecarga de la CPU al ejecutar el software de
 protocolo de comunicación, necesario para la comunicación distribuida. 

Y por último el control de concurrencia se convierte en un problema cuando  más de un


cliente accede al mismo archivo o bloque y desea actualizarlo. Por   lo tanto, las
actualizaciones del archivo de un cliente no deben interferir con   el acceso y las
actualizaciones de otros clientes. Este problema es más  complejo con los sistemas de
archivos debido a las escrituras simultáneas   que se superponen, donde escritores
diferentes escriben en regiones   superpuestas del archivo simultáneamente. Este
problema generalmente se  maneja mediante el control de concurrencia o el bloqueo,
que puede estar   integrado en el sistema de archivos o ser provisto por un protocolo
adicional.

Video Conceptual

Referencias
Slideshare. Servicios Web Java. Recuperado de
  https://www.slideshare.net/imcinstitute/java-web-services-15-introduction-to web-
services - Slide 42.

También podría gustarte