sistemas distribuidos 2

32
SISTEMAS DISTRIBUIDOS.

Upload: tensor

Post on 29-Jan-2018

304 views

Category:

Education


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

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

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.