Sistemas distibuidos

Post on 25-Jan-2017

82 views 0 download

transcript

SISTEMAS DISTRIBUIDOS.

Sistemas Distribuidos.

Definiciones

Desafíos en el diseño de sistemas

Distribuidos

Modelos Arquitectónicos

Definicion.

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 siguientesConsecuencias:

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 enlos 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 individuosno 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 sidoresueltos 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 significativoen 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 delos 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 componentesredundantes

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 alos recursos locales y remotos empleandooperaciones idénticas.

Transparencia de ubicación: permite accedera los recursos sin conocer su localización.

Transparencia de concurrencia: permite quevarios 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 SoftwareArquitecturas de SistemaInterfaces 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 diferentescomputadores, que ofrecen y solicitan servicios.

Capas de Software.

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 deobjetos 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.

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.