Você está na página 1de 56

Sistemas distribuidos

Johan David Díaz Mendivelso


Ingeniero de Sistemas y Computación
Estudiante de Maestría en Tecnología Informática
2019
Inicios
La Computación Distribuida, podemos definirla de muchas maneras, este término
se utiliza indiscriminadamente para referirse a cualquier sistema en el que
múltiples agentes autónomos, cada uno con capacidades de cómputo individual, se
comunican entre sí y afectan mutuamente su comportamiento. Los agentes,
usualmente llamados procesadores, procesos o nodos, pueden ser desde
computadoras completas hasta autómatas celulares con capacidad de cómputo y
memoria muy limitados que se pueden comunicar mediante mensajes.
Definiciones
Una de las primeras definiciones de un Sistema Distribuido fue realizada por
Enslow, ya en 1978, que le atribuye las siguientes propiedades:
• Está compuesto por varios recursos informáticos de propósito general, tanto
físicos como lógicos, que pueden asignarse dinámicamente a tareas concretas.
• Estos recursos están distribuidos físicamente, y funcionan gracias a una red de
comunicaciones.
• Hay un sistema operativo de alto nivel, que unifica e integra el control de los
componentes.
• El hecho de la distribución es transparente, permitiendo que los servicios puedan
ser solicitados especificando simplemente su nombre (no su localización).
• El funcionamiento de los recursos físicos y lógicos está caracterizado por una
autonomía coordinada.
Definiciones
“Un sistema distribuido es una colección de computadoras independientes que dan al
usuario la impresión de constituir un único sistema coherente.”
Andrew S. Tanenbaum, Maarten Van Steen

“Un sistema distribuido es aquél que está compuesto por varias computadoras autónomas
conectadas mediante una red de comunicaciones y equipadas con programas que les
permitan coordinar sus actividades y compartir recursos.”
George Coulouris

“Un sistema de computación distribuida está compuesto por varios procesadores


autónomos que no comparten memoria principal, pero cooperan mediante el paso de
mensajes sobre una red de comunicaciones‘’
Henri E. Bal
Definiciones
Servidor:
• Al iniciarse esperan a que lleguen las solicitudes de los clientes,
desempeñan entonces un papel pasivo en la comunicación.
• Tras la recepción de una solicitud, la procesan y luego envían la
respuesta al cliente.
• Por lo general, acepta las conexiones de un gran número de clientes.
Definiciones
Cliente:
• Es quien inicia solicitudes o peticiones, tienen por tanto un papel
activo en la comunicación.
• Espera y recibe las respuestas del servidor.
• Por lo general, puede conectarse a varios servidores a la vez.
• Normalmente interactúa directamente con los usuarios finales
mediante una interfaz gráfica de usuario.
¿Qué integra un sistema distribuido?
• La necesidad de las personas y organizaciones. Teniendo en cuenta que es
la justificación de la existencia de la Informática.
• Los elementos de la conectividad. Son los encargados se proporcionar el
transporte para comunicar e integrar los elementos de la plataforma de
proceso. Son básicamente las redes y las comunicaciones.
• El almacenamiento de datos, formado por los datos en si y los gestores
donde se localizan.
• Los elementos de software donde se incluyen las aplicaciones, los servicios
que ayudan a crearlas y las interfaces que ayudan a usarlas.
• Sistemas de seguridad.
¿Qué integra un sistema distribuido?
Los componentes mencionados pueden asociarse con los siguientes
grupos:
• Infraestructura
• Datos
• Software
• Aplicaciones
• Seguridad
Lo que buscan los sistemas distribuidos
Un sistema distribuido es crear aplicaciones de software utilizando
servicios y ayudándose de la conectividad se integren en este entorno
de forma transparente a las plataformas de proceso y de
almacenamiento de datos, dotándolas de los recursos necesarios para
gestionarse de forma integrada con el resto del sistema distribuido.

Los sistemas distribuidos que se diseñen y construyan deben estar


alineados con los objetivos planteados en el estudio de necesidades,
aumentando la eficacia y eficiencia operacional y permitir el mayor
rendimiento con el menor coste en las estructuras informáticas que
dan soporte.
El objetivo principal siempre es alinear
tecnología y negocio.
Requisitos para construir un sistema
distribuido
Un sistema distribuido debe hacer que los recursos sean fácilmente
accesibles; debe ocultar de manera razonable el hecho de que los
recursos están distribuidos por toda la red; debe ser abierto; y debe ser
escalable.
Requisitos para construir un sistema
distribuido
1. Tener acceso a los recursos
El principal objetivo de un sistema distribuido
es facilitar a los usuarios (y a las aplicaciones)
el acceso a los recursos remotos, y
compartirlos de manera controlada y
eficiente. Los recursos pueden significar casi
cualquier cosa, pero ejemplos clásicos
pueden ser impresoras, computadoras,
dispositivos de almacenamiento, datos,
archivos, páginas web, y redes.
Requisitos para construir un sistema
distribuido

2. Transparencia
Un objetivo importante de un sistema
distribuido es ocultar el hecho de que sus
procesos y recursos están físicamente
distribuidos a través de múltiples
computadoras.
Requisitos para construir un sistema
distribuido
Tipos de transparencia
Requisitos para construir un sistema
distribuido
3. Grado de flexibilidad y portabilidad.
Un sistema distribuido abierto es un sistema
que ofrece servicios de acuerdo con las
reglas estándar que describen la sintaxis y la
semántica de dichos servicios. La portabilidad
define la extensión mediante la cual una
aplicación desarrollada para un sistema
distribuido A se pueda ejecutar, sin
modificación, en un sistema distribuido B que
comparte la misma interfaz que A.
Requisitos para construir un sistema
distribuido
4. Escalabilidad.
Primero, un sistema puede ser escalable con
respecto a su tamaño, lo cual significa que
podemos agregarle fácilmente usuarios y
recursos. Segundo, un sistema escalable
geográficamente es aquel en el cual usuarios y
recursos pueden radicar muy lejos unos de los
otros. Tercero, un sistema puede ser escalable
administrativamente; esto es, puede ser fácil de
manejar incluso si involucra muchas
organizaciones administrativas diferentes.
Requisitos para construir un sistema
distribuido
Limitaciones en la escalabilidad.
Requisitos para construir un sistema
distribuido
5. Nunca suponer.
• La red es confiable.
• La red es segura.
• La red es homogénea.
• La topología no cambia.
• La latencia es igual a cero.
• El ancho de banda es infinito.
• El costo de transporte es igual a cero.
• Existe un administrador.
Comunicación entre sistemas distribuidos
La diferencia mas importante entre un sistema distribuido entre los demás
sistemas es la comunicación entre procesos. En un sistema local, la mayor
parte de la comunicación entre proceso supone de manera implícita la
memoria compartida. En los sistemas distribuidos no existe la memoria
compartida.

Las reglas a las que deben apegar los procesos respecto a la comunicación,
conocidas como protocolos. Para los sistemas distribuidos en un área
amplia, estos protocolos toman con frecuencia la forma de varias capas,
cada una con sus propios objetivos y reglas.
Comunicación entre sistemas distribuidos
Debido a la ausencia de memoria compartida, toda la comunicación en los
sistemas distribuidos se basa en la transferencia de mensajes.
Comunicación entre sistemas distribuidos
Es necesario tener claro los siguientes criterios.
¿Como sabe el receptor cual es el ultimo bit del mensaje?
¿Como puede detectar si un mensaje ha sido dañado o perdido.
¿Cuantos voltios hay que utilizar para la señal correspondiente a un bit 0 y
cuantos para un bit 1?
Para solucionar esto es necesario tener estructurado una amplia gama de
niveles, desde los detalles de bajo nivel de trasmisión de los bits hasta los
de alto nivel acerca de la forma en que debe expresarse la información.
Requisitos para construir un sistema
distribuido
Para facilitar el trabajo con los
distintos niveles y aspectos
correspondientes a la
comunicación, la organización
internacional de estándares (ISO)
desarrollado un modelo de
referencia que identifica en forma
clara los distintos niveles, les da
nombres estandarizados y señala
cual nivel debe realizar cada
trabajo.
Comunicación entre sistemas distribuidos
(Protocolos por capas)
• Aplicación (ftp, correo-e, ssh)
• Presentación (tipología del mensaje)
• Sesión (facilidades de sincronización)
• Transporte (TCP, UDP)
• Red (X.25, IP, ATM)
• Enlace de datos (control de errores,
IEEE 802)
• Físico (RS-232, 802.3)
Comunicación entre sistemas distribuidos
(Problemas con la comunicación)

• Problemas con la red.


• Problemas con la conexión.
• Problemas con el servidor.
• Problemas con el cliente.
Topologías de red
Se trata de modelos que nos permiten
observar el flujo de información sin
necesidad de estar considerando
constantemente las características del
medio y todos los demás elementos
involucrados. Cuando nos referimos a
una determinada topología, podemos
utilizarla para representar la forma de
conexionado y el flujo físico de los datos,
como por ejemplo: punto a punto y
punto a multipunto
Topologías de red
(Punto a punto)

Cuando hablamos de un enlace punto a punto, nos referimos a


uno en el cual toda la comunicación se produce entre dos puntos,
y sólo entre éstos.
Topologías de red
(Punto a multipunto)
En un enlace punto a multipunto,
existe un punto central que se
comunica con varios otros puntos
remotos. Generalmente esto implica
que la comunicación es solamente
entre el punto central y los remotos,
y de éstos hacia el central; no existe
comunicación entre los remotos.
Topologías de red
(Multidrop)

El término multidrop se aplica a un enlace en un sólo sentido, en el cual un


transmisor se comunica con varios receptores a lo largo del mismo. Por
ejemplo, la comunicación entre el centro de red y los remotos en el ejemplo
anterior.
Topologías de red
(peer-to-peer)

Si bien este término involucra


arquitecturas de comunicaciones y
conceptos más avanzados, cuando
se lo aplica a una topología o
enlace nos referimos a una red
cuya estructura física no definimos,
pero en la que cualquiera de sus
integrantes puede dialogar
directamente con cualquier otro.
Topologías de red
(Estrella)

Desde el punto de vista de la


conectividad, una red en estrella
puede asimilarse a un enlace punto
a multipunto en donde el servidor
se ubica precisamente en el centro.
Topologías de red
(Árbol)

Un árbol es una estructura


jerárquica en la cual se desciende
desde un punto central por sus
ramas.
Topologías de red
(Cluster tree)

Esta denominación corresponde a


un híbrido que se forma aplicando
una estructura de árbol a varias
estrellas
Topologías de red
(Mesh)

Una red mesh es una red


múltiplemente conexa, en la cual
los nodos tienen más de una
conexión con más de un nodo
diferente
Topologías de red
(Híbridas)

En una topología híbrida, se


combinan dos o más topologías
para formar un diseño de red
completo.
Tipos de protocolos de transporte

• Operaciones remotas.
• Sistemas de colas de mensajes.
• Paso de Mensajes.
Tipos de protocolos de transporte
(Operaciones remotas)

Es la forma más básica de comunicación que se usa en los sistemas


distribuidos. Se hace una solicitud (desde el cliente) y se recibe la
respuesta (desde el servidor)
Tipos de protocolos de transporte
(Sistemas de colas de mensajes)

Este protocolo proporciona


intercambio de datos aplicación a
aplicación, posibilitando la creación
de aplicaciones distribuidas. Los
sistemas de colas son análogos a los
sistemas de correo electrónico en el
sentido de ser asíncronos y requerir
que los receptores de los mensajes
interpreten su significado y tomen las
acciones apropiadas
Tipos de protocolos de transporte
(Paso de Mensajes)

La Interfaz de Paso de Mensajes


(MPI) es un protocolo de
comunicación entre computadoras.
Es el estándar para la comunicación
entre los nodos que ejecutan un
programa en un sistema de memoria
distribuida.
CORBA
Common Object Request Broker Architecture

Johan David Díaz Mendivelso


Ingeniero de Sistemas y Computación
Estudiante de Maestría en Tecnología Informática
2017
¿Qué es CORBA?
Common Object Request Broker Architecture (CORBA) es
un estándar definido por Object Management Group (OMG) que
permite que diversos componentes de software escritos en
múltiples lenguajes de programación y que corren en diferentes
computadoras, puedan trabajar juntos; es decir, facilita el desarrollo de
aplicaciones distribuidas en entornos heterogéneos.

CORBA no está asociado con ningún lenguaje de programación en


particular y cualquier lenguaje que tenga un enlace CORBA puede
utilizarse para llamar e implementar objetos CORBA. Los objetos se
describen en una sintaxis denominada IDL (Interface Definition
Language).
Objetivos de CORBA
• Especificar un sistema para construir aplicaciones de forma remota.
• Lograr la combinación de diferentes componentes de hardware, sistemas
operativos y lenguajes de programación.
• Introducir los niveles de seguridad necesarios para garantizar la integridad de las
aplicaciones distribuidas.
• Facilita la escalabilidad de los sistemas distribuidos.
Componentes de aplicaciones distribuidas
CORBA
Clientes:
Conducen el flujo de la aplicación.
Localizan e invocan métodos ofertados como remotos por los servidores.
Servidores:
Conjunto de objetos que ofrecen interfaces remotas públicas cuyos métodos pueden ser
invocados clientes de cualquier procesador de la plataforma.
Registro:
Servicio estático que se establece en cada nudo, en el que se registran los servidores con
un nombre, y donde los clientes los localizan por él.
IDL:
El lenguaje de definición de interfaz o IDL (Interface Definition Language), es un lenguaje
que se utiliza para definir las interfaces entre los componentes de una aplicación y es el
elemento que soporta la interoperabilidad de la tecnología
Proceso de construcción
Proceso de construcción
El compilador de IDL a Java genera dos interfaces Java y varias clases:
• “nombre del modelo”: es la interfaz de IDL en Java.
• Stub: clase Java que implementa el stub de la interfaz en el lado del cliente.
• Helper: clase Java que proporciona métodos útiles para los clientes . Por ejemplo los métodos bind()
para obtener una referencia a un metodo, y narrow() para convertir referencias a objetos CORBA al
tipo metodos.
• Holder: clase Java que se utiliza si hiciera falta pasar objetos como parámetros out o inout en
operaciones de otra interfaz.
• POA: clase abstracta que sirve de base para la clase que tiene el código que implementa las
operaciones de la interfaz.
• Operations: es la interfaz de IDL en Java que deben satisfacer los objetos en los que delegan los
objetos de la clase _tie_.
Ventajas y desventajas CORBA
Ventajas: Desventajas:
• Puede presentar problemas de
• El cliente puede extender la saturación, embotellamiento
funcionalidad del servidor interrupción o perdidas de
mensajes en la red.
• Es de fácil instalación para el • Bajo seguridad, es posible acceso a
usuario. todo el sistema por parte de los
usuarios.
• No se requiere instalación de
servidor. • Las especificaciones tardan en
desarrollarse, y en consecuencia las
implementaciones tardan en salir al
mercado
RMI
Remote Method Invocation

Johan David Díaz Mendivelso


Ingeniero de Sistemas y Computación
Estudiante de Maestría en Tecnología Informática
2017
¿Qué es RMI?
RMI o Procedimiento de invocación a métodos remotos, permite que una
aplicación o applet se comunique con objetos que residen en programas que se
ejecutan en maquinas remotas. En esencia, en lugar de crear un objeto, el
programador liga el objeto remoto con un representante local, conocido como
stub. Los mensajes dirigidos al objeto remoto se envían al stub local, como si fuera
el objeto real. El stub acepta los mensajes que se le envíen, y a su vez, los envía al
objeto remoto, el cual invoca sus métodos apropiados.
Objetivos de RMI
• Facilitar la interacción de objetos instanciados en diferente JVM
• Permitir escribir aplicaciones distribuidas tan simple como sea posible.
• Mantener en las aplicaciones distribuidas el tipado fuerte propio de Java.
• Introducir los niveles de seguridad necesarios para garantizar la integridad de las
aplicaciones distribuidas.
• Facilita la escalabilidad de los sistemas distribuidos.
Ventajas y desventajas aplicacionesvRMI
Ventajas: Desventajas:
• Permite distribuir una aplicación de El paso de parámetros por valor implica
forma muy transparente. tiempo para hacer la serialización, enviar
• Las invocaciones remotas son más los objetos serializados a través de la red
eficientes que las peticiones vía http y luego volver a recomponer los objetos
que se usan con los CGIs o los Servlets. en el destino.
Componentes de aplicaciones distribuidas RMI
Clientes:
Conducen el flujo de la aplicación.
Localizan e invocan métodos ofertados como remotos por los servidores.
Servidores:
Conjunto de objetos que ofrecen interfaces remotas públicas cuyos métodos
pueden ser invocados clientes de cualquier procesador de la plataforma.
Registro:
Servicio estático que se establece en cada nudo, en el que se registran los
servidores con un nombre, y donde los clientes los localizan por él.
Arquitectura de RMI
Arquitectura de RMI
• El servidor debe registrarse (bind) en el registry
bajo un nombre.
• El cliente localiza (lookup) la referencia de
servidor en el registry por su nombre.
• El cliente crea un stub que referencia al skeleton
• El cliente invoca localmente el stub.
• El stub transfiere como un mensaje la
invocación al skeleton.
• El skeleton invocamente localmente el método
del servidor.
• El skeleton transfiere al stub como mensaje los
resultados obtenidos de la invocación.
• El stub finaliza la invocación del cliente
retornándole los resultados.

Você também pode gostar