* sistema distribuido
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.
Ø Desafíos
Ø Heterogeneidad
Ø Extensibilidad
Ø Seguridad
Ø Escalabilidad
Ø Tolerancia a Fallas
Ø Concurrencia
Ø Transparencia
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
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