miércoles, 29 de febrero de 2012

Desafios De Los Sistemas Distribuidos

La heterogeneidad se
aplica en los siguientes elementos:
*Redes
*Hardware de
computadores
*Sistemas
operativos
*Lenguajes de
programación
*Implementaciones de
diferentes desarrolladores
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. Ejemplo: Corba, Java RMI
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 re implementación de los antiguos.
Otro beneficio de los
sistemas abiertos es su independencia de proveedores concretos.
Desafíos:
Seguridad
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
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:
Escalabilidad
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
SD 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).
Controlar la
degradación del rendimiento: Ejemplo: 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.
Prevenir el
desbordamiento de los recursos de software
Desafíos:
Tratamiento de fallos
Detección de
fallos: Ejemplo. Se pueden
utilizar sumas de comprobación (checksums) para detectar datos corruptos en un
mensaje.
Enmarascamiento de
fallos: Ejemplo.
*Los mensajes pueden
retransmitirse
*Replicar
los datos
Tolerancia de fallos:
los
programas clientes de los servicios pueden diseñarse para tolerar ciertos
fallos. Esto implica que los usuarios tendrán también que tolerarlos.
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:
Concurrencia
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 responsabilizarse 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:
Transparencia
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.
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.
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.

No hay comentarios:

Publicar un comentario