Sistemas Distribuidos I Conceptos de Sistemas Distribuidos y Arquitectura.
Sistemas distribuidos 2
Transcript of Sistemas distribuidos 2
Sistemas Distribuidos.
Definiciones
Desafíos en el diseño de sistemas
Distribuidos
Modelos Arquitectónicos
Definicion.“Se define un sistema distribuido como aquel en el que los
componentes de hardware y software, localizados en
computadores unidos mediante una red, comunican y
coordinan sus acciones sólo mediante el paso de
mensajes”
Definicion.
Esta definición tiene las siguientes
Consecuencias:
Concurrencia
Inexistencia de un reloj global
Fallos Independientes
Desafíos.
Heterogeneidad.
Extensibilidad.
Seguridad.
Escalabilidad.
Tolerancia a Fallas.
Concurrencia.
Desafíos: Heterogeneidad.
La heterogeneidad se aplica en
los siguientes elementos:
Redes
Hardware de computadores
Sistemas operativos
Lenguajes de programación
Implementaciones de diferentes
desarrolladores
Desafíos: Heterogeneidad.
Middleware: es el estrato de software que provee una
abstracción de programación, así como un
enmascaramiento de la heterogeneidad subyacente
de las redes, hardware, sistemas operativos y
lenguajes de programación. Ejem: Corba, Java RMI
Desafíos: Heterogeneidad.
Heterogeneidad y código móvil
Código Móvil: código que puede enviarse
desde un computador a otro y ejecutarse
en este último.
El concepto de máquina virtual ofrece un
modo de crear código ejecutable sobre
cualquier hardware
Desafíos: Extensibilidad.
Es la característica que determina si el sistema
puede extenderse de varias maneras.
Un sistema puede ser abierto
o cerrado con respecto a extensiones
de hardware o de software.
Para lograr la extensibilidad es
imprescindible que las interfaces clave
sean publicadas.
Los Sistemas Distribuidos Abiertos pueden
extenderse a nivel de hardware mediante la
inclusión de computadoras a la red y a nivel
de software por la introducción de nuevos
servicios y la reimplementación de los Antiguos.
Otro beneficio de los sistemas abiertos es su
independencia de proveedores concretos.
Desafíos: Extensibilidad.
La seguridad tiene tres componentes:
Confidencialidad: protección contra individuos
no autorizados
Integridad: protección contra la alteración o corrupción
Disponibilidad: protección contra la interferencia que
impide el acceso a los recursos
Desafíos: Seguridad.
Existen dos desafíos que no han sido
resueltos en su totalidad:
Ataques de denegación de servicio.
Seguridad del código móvil
Desafíos: Seguridad.
Se dice que un sistema es escalable si conserva su
efectividad cuando ocurre un incremento significativo
en el número de recursos y en el número de usuarios.
El diseño de Sistemas Distribuidos escalables presenta
los siguientes retos:
Control de costo de los recursos físicos: para que
un sistema con n usuarios sea escalable, la cantidad de
recursos físicos necesarios para soportarlo debería
ser O( n).
Desafíos: Escalabilidad.
Controlar la degradación del rendimiento:
Ejm: Los algoritmos que emplean estructuras
jerárquicas se comportan mejor frente al crecimiento
de la escala, que los algoritmos que emplean
estructuras lineales.
Evitar cuellos de botella: los algoritmos deberían
ser descentralizados
Desafíos: Escalabilidad.
Detección de fallos:
Ejem. Se pueden utilizar sumas de comprobación
(checksums) para detectar datos corruptos en un
mensaje.
Enmarascamiento de fallos:
Ejem. Los mensajes pueden retransmitirse
Replicar los datos
Desafíos: Tratamiento de Fallos.
Tolerancia de fallos: los programas clientes de
los servicios pueden diseñarse para tolerar ciertos
fallos.
Recuperación de fallos: implica el diseño de
software en el que, tras una caída del servidor, el
estado de los datos puede reponerse o retractarse
(rollback) a una situación anterior.
Redundancia: emplear componentes
redundantes
Desafíos: Tratamiento de Fallos.
Existe la posibilidad de acceso concurrente a
un mismo recurso.La concurrencia en los servidores
se puede lograr a través de threads.
Cada objeto que represente un recurso compartido
debe responzabilizarse de garantizar que opera
correctamente en un entorno concurrente.
Para que un objeto sea seguro en un entorno
concurrente, sus operaciones deben sincronizarse
de forma que sus datos permanezcan consistentes.
Desafíos: Concurrencia.
Transparencia de acceso: permite acceder a
los recursos locales y remotos empleando
operaciones idénticas.
Transparencia de ubicación: permite acceder
a los recursos sin conocer su localización.
Transparencia de concurrencia: permite que
varios procesos operen concurrentemente sobre
recursos compartidos sin interferencia mutua.
Desafíos: Transparencia.
Transparencia de replicación: permite replicar los
recursos sin que los usuarios y los programadores
necesiten su conocimiento.
Transparencia frente a fallos: permite ocultar
fallos.
Transparencia de movilidad: permite la
reubicación de recursos y clientes en un sistema sin
afectar la operación de los usuarios y los programas.
Desafíos: Transparencia.
Transparencia de rendimiento: permite
reconfigurar el sistema para mejorar el desempeño
según varíe su carga.
Transparencia al escalado: permite al sistema y a
las aplicaciones expandirse en tamaño sin cambiar la
estructura del sistema o los algoritmos de aplicación.
Desafíos: Transparencia.
Modelos Arquitectonicos.
Modelo Arquitectónico de un Sistemas Distribuidos:
trata sobre la colocación de sus partes y las relaciones
entre ellas.
Ejem: modelo cliente-servidor y el modelo de procesos
de “igual a igual” (peer-to-peer)
Diferentes modelos arquitectónicos:
Capas de Software
Arquitecturas de Sistema
Interfaces y Objetos
Capas de Software.
El término arquitectura de software se refería
inicialmente a la estructuración del software como
capas en un único computador.
Más recientemente las capas son uno o varios
procesos, localizados en el mismo o diferentes
computadores, que ofrecen y solicitan servicios.
Plataforma:
estas capas más bajas
proporcionan servicio a las
superiores y su implementación
es dependiente de cada
computador.
Desafíos: Transparencia.
Middleware:
es una capa de software cuyo
propósito es enmascarar la
heterogeneidad y proporcionar
un modelo de programación
conveniente para los
programadores de aplicaciones
Desafíos: Transparencia.
El middleware se ocupa de proporcionar bloques
útiles para la construcción de componentes de
software que puedan trabajar con otros en un
sistema distribuido.
En particular mejora el nivel de las actividades de
comunicación de los procesos de
aplicación soportando abstracciones como:
llamadas a procedimientos remotos,
comunicación entre un grupo de procesos,etc.
Desafíos: Transparencia.
Ejem: Sun RPC (llamadas a procedimientos
remotos), CORBA (middleware orientado a objeto),
Java RMI (invocación de objetos remotos en Java),
DCOM (Modelo común de
objetos distribuidos de Microsoft)
Desafíos: Transparencia.
Transparencia de rendimiento: permite
reconfigurar el sistema para mejorar el desempeño
según varíe su carga.
Transparencia al escalado: permite al sistema y a
las aplicaciones expandirse en tamaño sin cambiar la
estructura del sistema o los algoritmos de aplicación.
Desafíos: Transparencia.
Transparencia de rendimiento: permite
reconfigurar el sistema para mejorar el desempeño
según varíe su carga.
Transparencia al escalado: permite al sistema y a
las aplicaciones expandirse en tamaño sin cambiar la
estructura del sistema o los algoritmos de aplicación.
Desafíos: Transparencia.
Transparencia de rendimiento: permite
reconfigurar el sistema para mejorar el desempeño
según varíe su carga.
Transparencia al escalado: permite al sistema y a
las aplicaciones expandirse en tamaño sin cambiar la
estructura del sistema o los algoritmos de aplicación.
Desafíos: Transparencia.