fundamentos de sistemas distribuidos

70
Fundamentos de sistemas distribuidos M.S.I. Eloisa Ruiz Gonzalez

Upload: victor-alberto-careaga-garcia

Post on 28-Dec-2015

49 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de sistemas distribuidosM.S.I. Eloisa Ruiz Gonzalez

Sistemas centralizados y sistemas distribuidos• Surgieron a finales de la década de 1950, cuando las

computadoras comenzaron a estar comercialmente disponibles; siendo muy caras y poco aprovechadas

• 1980 surgió el desarrollo de potentes microprocesadores y la aparición de computadoras personales.

• Posteriormente, la solución vino con las redes de alta velocidad, que permitieron la interconexión de todo tipo de computadoras .

• La red de comunicaciones permitieron compartir y aprovechar recursos.

• Con la unión de equipos de cómputo personales y las LAN nacieron los Sistemas en Red

Sistemas centralizados y sistemas distribuidos• El auge de los Sistemas Distribuidos surgió en la década de

1980, cuando se extendió el uso de las computadoras y con éste la utilización de Bases de datos.

• 1990s: la década de los sistemas distribuidos.• Buena relación entre precio/rendimiento de sistemas

multiprocesadores, así como el crecimiento y mejoras de las tecnologías basadas en redes.

Diferencias sistemas centralizados y los distribuidos• Arquitectura de Sistemas Centralizados• Único computador (caro y de gran potencia) con terminales

alfanuméricos directamente conectados. • Entornos de empresa:

• Soporte multiusuario. • Uso de mainframes o minicomputadores.

• Entornos científicos: • Ejecución eficiente de aplicaciones. • Uso de supercomputadores.

• Uso ocasional de la red: • Transferir ficheros o logins remotos.

• Interfaz de usuario poco amigable. • Interfaces gráficas gastan muchos recursos

Diferencias sistemas centralizados y los distribuidos• Arquitectura de Sistemas Distribuidos • Conjunto de procesadores conectados por una red. • Cada usuario tiene capacidad de procesamiento local que

permite interfaces de usuario sofisticadas. • Uso intensivo de la red para compartir recursos:

• Dispositivos • Datos • Procesadores (migración de procesos)

• Capacidad global de procesamiento disponible para: • Servicio a múltiples usuarios. • Ejecución paralela de una aplicación

Ventajas SD con respecto a SCElemento Descripción

Economía Los microprocesadores ofrecen mejorproporción precio/rendimiento quelos mainframes

Velocidad Un SD, puede tener mayor poder decómputo que un mainframe

Confiabilidad Si una máquina se descompone, elsistema puede sobrevivir como untodo

Crecimiento por incrementos Se pueden añadir poder de cómputoen pequeños incrementos

La principal fuerza es la necesidad de las personas para trabajar en conjunto sin importar la ubicación física o geográfica de maquinas y datos.

Ventajas SD con respecto a Pc’sElemento Descripción

Datos compartidos Permiten que varios usuarios tengan acceso auna base de datos en común

Dispositivos compartidos Permiten que varios usuarios compartanperiféricos caros, como las impresoras

Comunicación Facilita la comunicación de persona a persona;por ejemplo, E-Mail , Mensajería instantánea

Flexibilidad Difunde la carga de trabajo entre las máquinasdisponibles en la forma mas eficaz en cuanto alos costos.

El nacimiento de los sistemas distribuidos• El nacimiento de los sistemas distribuidos se dio por las

siguientes causas:• Tecnología de microprocesadores: relación potencia/costo. • Tecnologías de comunicaciones: • Protocolos de comunicaciones. • Redes de área local (LAN): Coste y prestaciones. • Internet.

• Factores comerciales: • Comercio electrónico. • Información distribuida (WWW). • Reducción de costes.

Sistemas Distribuidos• Podemos visualizar a los S.D de diversas formas como:• Un grupo de PC’s conectadas en red que comparten recursos

¿Qué es un sistema distribuido?• Existen varias definiciones para SD.

“Un sistema distribuido es aquel en el que los componenteslocalizados en computadoras, conectadas en red, comunican y

coordinan sus acciones únicamente mediante el paso de mensajes”

• Sistemas Distribuidos Diseño y Conceptos, GEORGE COULOURIS, JEAN DOLLIMOREY TIM KINDBERG “Un sistema distribuido es una colección de computadorasindependientes que aparecen ante los usuarios del sistema

como una única computadora”; Sistemas Operativos Distribuidos,Andrew S.Tanenbaum.

Características básicas de un sistema distribuido• Está compuesto por múltiples equipos.• Los sistemas distribuidos están compuestos de más de un sistema

independiente, cada uno con uno o más de equipos, memoria local, memoria secundaria y conexiones con periféricos.

• Hay interconexión entre ellos.• Si los varios equipos van a hacer trabajo en conjunto, para la

realización de tareas deben comunicarse y sincronizarse entre ellos, por lo que requieren alguna línea o red de interconexión.

• Tienen un estado compartido. • Como los equipos realizan trabajo en conjunto, deben mantener

un estado compartido, es decir, todos los equipos deben de tener la misma visión del estado del sistema distribuido como tablas, bases de datos, servidores, etcétera.

Características exclusivas de los sistemas distribuido

•La consistencia •La transparencia

La consistencia

La consistencia es una necesidad imperativa.

Tipos de inconsistencias

• Inconsistencias de actualización• Inconsistencias de replicación• Inconsistencias de caché• Inconsistencias de reloj• Inconsistencias de interfaz del usuario

Inconsistencias de actualización

• Se presentan cuando diversos procesos acceden de manera concurrente a los datos para modificarlos.

• Se evita utilizando TransaccionesBEGIN TRANSACTION;

Retiro (Cantidad, Cuenta1); Depósito (Cantidad, Cuenta2);END TRANSACTION;

Inconsistencias de replicación

• Existen cuando en la red hay múltiples computadoras con un conjunto de datos replicados.

• También pueden tenerse datos replicados en el sistema distribuido para mejorar la velocidad general del sistema o para tener tolerancia a fallo.

Inconsistencias de caché• Para evitar transferir datos a través de la red, los usuarios

optan por descargar una copia del software una sola vez en su máquina local, fa

• tanto la réplica de datos como en la memoria caché se tienen datos duplicados, el objetivo de la réplica de datos es la tolerancia a fallos y la rapidez global del sistema mediante el reparto de datos frente a múltiples consultas,cilitando el acceso en posteriores consultas.

Inconsistencias de reloj• Algunos de los algoritmos utilizados en las aplicaciones y

programación de sistemas dependen de unas marcas de tiempos o timestamps que indican el momento en que ha reemplazado páginas en memoria virtual.

Inconsistencias de Interfaz del usuario• Estudios en ergonomía indican que el retardo de mostrar los

datos correspondientes en una pantalla no debe ser mayor de una décima de segundo, si se quiere dar la impresión de estar trabajando con una máquina dedicada.

• Interfaz intuitiva

La transparencia• La transparencia es algo que caracteriza especialmente a los sistemas distribuidos, su

ausencia no impide que el sistema funcione; no obstante, es una característica deseable, de tal forma que cuanto más transparente sea un sistema distribuido, más se puede considerar como tal.

• La construcción de un sistema distribuido que se comporte según esperan los usuarios, requiere la consideración de otras características, que en un principio son las deseables, como: • Compartimiento de recursos

• Los beneficios de compartir recursos se pueden ver desde el punto de vista económico.• Desde el punto de vista lógico, lo que va a permitir la interconexión de equipos va a ser la

posibilidad de un acceso a datos que permita el trabajo cooperativo en equipo • Sistemas abiertos

• Los sistemas abiertos son aquellos sistemas informáticos que proporcionan alguna combinación de interoperabilidad, portabilidad y uso de estándares abiertos (también puede referirse a los sistemas configurados para permitir el acceso sin restricciones por parte de personas y otros sistemas, si bien este artículo sólo discute la primera acepción)”

• Escalabilidad• Es la tendencia que indica que el tamaño de los sistemas distribuidos es hacia cientos de miles y

aún decenas de millones de usuarios conectados. • Permite que los sistemas o las aplicaciones se expandan sin cambiar la estructura del sistema o

los algoritmos de programación.

La transparenciaExisten cuellos de botella potenciales que se debe intentar evitar en los sistemas distribuidos de gran escala como son:

• Componentes centralizados: Ejemplo: un sólo servidor de correo para todos los usuarios.

• Tablas centralizadas: Ejemplo: un único directorio telefónico en línea.

• Algoritmos centralizados:Ejemplo: realización de un ruteo con base en la información completa. • Se deben utilizar algoritmos descentralizados con las siguientes

características: • Ninguna máquina tiene la información completa acerca del estado del sistema. • Las máquinas toman decisiones sólo con base en la información disponible de

manera local. • El fallo de una máquina no arruina el algoritmo. • No existe una hipótesis implícita de la existencia de un reloj global.

La transparencia• Tolerancia a fallos seguridad• Permite ocultar los fallos, pudiendo así los usuarios o aplicaciones

completar sus tareas a pesar de los fallos de componentes hardware o software.

• La disponibilidad de un sistema es una medida de la proporción del tiempo que está disponible para ser utilizado por el usuario.

• Seguridad• En un sistema distribuido, la seguridad se complica, debido a:

• Amenazas físicas. • Ataques de red. • Control físico de los recursos.

• Para protegerse de los accesos indebidos se requieren diversos mecanismos de seguridad, así como una política clara de utilización de tales mecanismos.

La transparencia• Los mecanismos y políticas deberán enfrentarse a los siguientes tipos de

acciones ilegales: • Filtraciones. Adquisición de información por programas o personas no

autorizadas. Intromisiones. Alteración no autorizada de la información. • Robo de recursos. Uso de recursos sin autorización (impresoras,

procesadores, etc.). • Vandalismo. Interferir la operación de un sistema sin ánimo de lucro

• En los sistemas distribuidos estos actos suelen perpetrarse a través de los canales de comunicación, realizando las siguientes acciones: • Escucha. Obtener copias de mensajes que pasan por la red. • Suplantación. Enviar o recibir mensajes utilizando la identidad de otro

programa o persona. • Alteración de mensajes. Interceptar mensajes y alterar su contenido. • Reenvío. Obtener copias de mensajes para utilizarlas posteriormente. • Existen mecanismos y políticas para impedir la realización de estas acciones,

o al menos para detectarlas e invalidarlas

La transparencia• Si un sistema reúne todas estas propiedades conseguirá la

característica deseada por los usuarios: la transparencia, es decir, el sistema se va a comportar de tal manera que el usuario no perciba problemas que pudieran producirse

Objetivos de los sistemas distribuidos• El desarrollo de sistemas distribuidos intenta poner solución a los

siguientes objetivos: • Transparencia.

• Existen varios perfiles de transparencia: • Acceso:

• Manera de acceder a recurso local igual que a remoto. • Posición:

• Se accede a los recursos sin conocer su localización. • Migración:

• Recursos pueden migrar sin afectar a los usuarios. • Concurrencia:

• Acceso concurrente no afecta a los usuarios. • Replicación:

• La existencia de réplicas no afecta a los usuarios. • Fallos:

• La ocurrencia de fallos no afecta a los usuarios. • Crecimiento:

• El crecimiento del sistema no afecta a los usuarios. • Heterogeneidad:

• Carácter heterogéneo no afecta a los usuarios.

Objetivos de los sistemas distribuidos• Fiabilidad.

• Fiabilidad como disponibilidad: • Teóricamente: OR-lógico de sus componentes. • En ciertos casos: AND-lógico de varios componentes. • Mecanismos: redundancia y evitar componentes críticos.

• Fiabilidad como coherencia: • Se dificulta con caching y redundancia • La fiabilidad está relacionada con la seguridad (otro objetivo).

• Rendimiento. • Rendimiento para un servicio multiusuario: • Objetivo: Rendimiento no peor que un sistema centralizado.

• Rendimiento para la ejecución paralela de aplicaciones: • Objetivo: Rendimiento proporcional a procesadores empleados.

• Factores: • Uso de esquemas de caching. • Intentar que muchos accesos se hagan localmente.

• Uso de esquemas de replicación. • Reparto de carga entre componentes replicados.

• En ambos casos: Costo de mantener la coherencia.

Objetivos de los sistemas distribuidos

• Capacidad de crecimiento. • Diseño de un sistema distribuido debe evitar “cuellos de botella”: • Componentes centralizados. • Tablas centralizadas. • Algoritmos centralizados.

• Características deseables en un algoritmo distribuido: • Ninguna máquina tiene información completa del estado del sistema. Las

decisiones se basan sólo en información disponible localmente. • El fallo de una máquina no debe invalidar el algoritmo. • No debe asumir la existencia de un reloj global.

Objetivos de los sistemas distribuidos

• Flexibilidad. • Debe ser adaptable: • Facilidad para incorporar cambios y extensiones al sistema.

• Uso preferible de arquitectura microkernel. • Importancia de sistemas abiertos: • Sus interfaces y protocolos deberían ser públicos. • Contrario a ”tecnología propietaria”. • Uso de estándares siempre que sea posible. • Disponibilidad de su código fuente (libremente o no). • Regulación por parte de un colectivo (usuarios u organizaciones) y no por

particulares (fabricantes).

Objetivos de los sistemas distribuidos• Seguridad• En un sistema distribuido, la seguridad se complica, debido a: • Amenazas físicas. • Ataques de red. • Control físico de los recursos• Los mecanismos y políticas deberán enfrentarse a los siguientes

tipos de acciones ilegales: • Filtraciones. Adquisición de información por programas o personas

no autorizadas. • Intromisiones. Alteración no autorizada de la información. • Robo de recursos. Uso de recursos sin autorización (impresoras,

procesadores, etc.). • Vandalismo. Interferir la operación de un sistema sin ánimo de lucro.

Objetivos de los sistemas distribuidos• En los sistemas distribuidos estos actos suelen perpetrarse a

través de los canales de comunicación realizando las siguientes acciones: • Escucha. Obtener copias de mensajes que pasan por la red. • Suplantación. Enviar o recibir mensajes utilizando la identidad de

otro programa o persona. • Alteración de Mensajes. Interceptar mensajes y alterar su

contenido. • Reenvío. Obtener copias de mensajes para utilizarlas

posteriormente

Ventajas de los sistemas distribuidos• Economía: • Buena relación rendimiento/costo.

• Alto rendimiento: • Procesamiento paralelo.

• Soporte de aplicaciones inherentemente distribuidas. • Por ejemplo: empresa distribuida geográficamente.

• Capacidad de crecimiento: • Escalabilidad.

• Fiabilidad y disponibilidad: • Tolerancia a fallos.

• Carácter abierto y heterogéneo: • Estándares de interoperabilidad.

• Compartir recursos y datos

Desventajas de los Sistemas Distribuidos• Necesidad de un nuevo tipo de software: • Más complejo. • No hay todavía un acuerdo sobre cómo debe ser.

• Red de interconexión introduce nuevos problemas: • Pérdida de mensajes y saturación. • Latencia puede provocar que al recibir un dato ya esté obsoleto. • La red es un elemento crítico.

• Seguridad y confidencialidad

Arquitectura básica de los sistemas distribuidos

El objetivo de la arquitectura básica de los sistemas distribuidos es tener diseños modulares, mantenibles, flexibles y adaptables,

resaltando las funciones y características de los sistemas distribuidos anteriormente mencionadas.

Arquitectura básica de los sistemas distribuidos• La arquitectura de sistemas distribuidos es un conjunto de

procesadores conectados por una red, donde cada usuario tiene capacidad de procesamiento local que permite interfaces de usuario sofisticadas, al igual que el uso intensivo de la red para compartir recursos: dispositivos, datos, procesadores (migración de procesos).

• Hay tres puntos de vista básicos para los sistemas distribuidos. • Está organizado en capas o niveles, los cuales tienen un propósito

bien definido. • Tiene factores comunes que intervienen en dos o más capas. • Utiliza los aspectos globales para medir rendimiento y eficiencia.

Importancia de los sistemas distribuidos

Proporcionar un entorno de trabajo conceptual: Objetivos, factores, interrelaciónales y una terminología común y dar un panorama de algunos de los factores en el diseño de los Sistemas Distribuidos.

Los factores que afectan a la organización de los sistemas distribuidos

• Factores relacionados con la identificación, protección y compartición de recursos.

• Traducción de datos debida a varias formas de codificación, representación y control.

• La necesidad de un modelo para intercambio de mensajes. • Estructuras de recursos y servicios distribuidos. • Nuevas fuentes de error y de aquí esquemas de recuperación

más complejos. • La necesidad de mantener consistencia entre múltiples

administradores. • Reducción del rendimiento debido al ancho de banda de

comunicación entre componentes de un sistema distribuido. • Esquemas de medición, verificación y depuración más complejos.

La arquitectura de los sistemas distribuidos desde el concepto de capas• Las capas son uno o varios procesos, localizados en los mismos

o diferentes equipos, que ofrecen y solicitan servicios.

• Donde en la plataforma están las capas más bajas que proporcionan servicio a las superiores y su implementación es dependiente de cada equipo

La arquitectura de los sistemas distribuidos desde el concepto de capas• Capa de aplicación • Contiene procesos que proporcionan servicios dependientes de la aplicación.

Los cuales dependen de la necesidad de una aplicación o un conjunto de aplicaciones, como el manejo de procesos, comunicación, manejo de información, E/S virtuales, contabilidad, etcétera.

• Los factores a considerar son:La estructura de la aplicación.

¿Cómo debe ser distribuido el proceso?¿Cómo se deben organizar los procesos con propósitos de control y comunicación?¿Cómo se deben distribuir los datos?¿Qué mecanismos se requieren para soportar diferentes datos y unidades de procesamiento?

• Lenguajes de programación. ¿Cuáles son las características deseables de un lenguaje, además de las propias para un sistema no distribuido? ¿Qué aspectos del sistema distribuido como identificación, control de errores y manejo de recurso deben ser visibles y bajo control del usuario o manejados en forma automática?

La arquitectura de los sistemas distribuidos desde el concepto de capas• 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; esta capa se ejecuta sobre el sistema operativo local, ofreciendo unos servicios distribuidos estandarizados.

• Sistema operativoUn sistema operativo distribuido está organizado en dos subcapas básicas: subcapa de servicios y subcapa de soporte.

• Sistema operativo distribuido deben hacer que: • Un programa, proceso, usuario o programador tenga una visión coherente y

uniforme de los objetos distribuidos. • La estructura de los servicios sea implementada sobre la base de un sistema

operativo de arquitectura común. • La implantación sea extensible: nuevos servicios, infraestructura básica.

Comunicación y sincronización en sistemas distribuidos• Sistemas de paso de mensajes

• Comunicación cliente/servidor

• Middlewares: RPC y RMI

Sistemas de paso de mensajes

• Mensaje, en el sentido más general, es el objeto de la comunicación. Está definido como la información que el emisor envía al receptor a través de un canal determinado o medio de comunicación (Wikipedia).

• El envío de mensajes es útil :• Cuando las necesidades de comunicación son simples.• La cantidad de información que se puede transmitir, por unidad

de tiempo, es crítica.• El alcance del sistema es limitado, o sea, es preferible una

implementación rápida que un diseño flexible y sofisticado.• Hay que evitar protocolos específicos de redes.• Cuando no están disponibles protocolos de objetos remotos.

Características de los mensaje • Send y Receive.• El Send:• Nos indica en qué variable están los datos que se envían.• Cuántos datos se envían.• Qué proceso recibe el mensaje.• Cuál es el tipo de dato que se envía.• Qué proceso envía el mensaje.

• El Receive es:• Dónde se almacenan los datos que se reciben.• Cuántos datos espera recibir el proceso receptor

Modelos complementarios de comunicación

• Memoria compartida, en donde los procesos comparten variables mediante las cuales comparten la información, tienen un espacio de memoria común, la responsabilidad de la comunicación recae sobre los programadores, y el Sistema Operativo sólo proporciona la memoria compartida.

• Paso de mensajes, el cual permite a los procesos intercambiar mensajes, sus procesos tienen espacios de direcciones distintos, las operaciones básicas de comunicación las proporciona el Sistema Operativo (Send y Receive) y es necesario definir las características de los enlaces.

Paso de Mensajes• Primitiva de comunicación, el cual podemos definirlo como

cada una de las funciones de comunicación de una tecnología determinada.

• Las Primitivas básicas son:• Envío: send (destino, mensaje).• Recepción: receive (fuente, mensaje).• Otras primitivas:

• Conexión: connect(destino)• Desconexión: Close

Características de las primitivas de comunicación

• Modelo de operación: Bloqueantes y No-bloqueantes.• Sincronización: Síncronas y Asíncronas.• Fiabilidad: Fiables y No-fiables.

Las características de bloqueo• Primitivas bloqueantes: La operación bloquea al elemento

que la solicita hasta que ésta sea completada.

• Son lo más natural y fácil de usar.• Necesita múltiples procesos.• El Send se bloquea hasta que se envía el mensaje.• El Recv se bloquea hasta que se recibe el mensaje.

Las características de bloqueo• Primitivas no-bloqueantes: La operación no detiene la

ejecución del elemento que la solicita.• Son más difíciles de usar y en ocasiones más eficientes.• El Send retorna inmediatamente, copia el mensaje para enviarlo, o

guarda un puntero.• El Recv retorna si no hay mensaje que recibir.• Envía interrupciones para notificar envío/recepción

• En donde las llamadas no bloqueantes tienen distinto sentido, dependiendo de la primitiva que se trate:• Envío no bloqueante: El emisor almacena el dato en un buffer del

núcleo (que se encarga de su transmisión) y reanuda su ejecución.• Recepción no bloqueante: Si hay un dato disponible el receptor lo

lee, en otro caso indica que no había mensaje.

Cliente - Servidor

M.S.I. Eloisa Ruiz GonzalezSistemas Computacionales Administrativos 2010

Cliente - Servidor

• Desde un punto de vista conceptual:El modelo cliente servidor es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por el sistema, permitiendo mejorar el rendimiento del sistema global de información.

• En términos de arquitectura:El modelo cliente servidor, en los aspectos que caracterizan a una aplicación en el sentido más amplio; en su proceso, almacenamiento, control y operaciones de entrada y salida de datos están situados en más de una computadora, lo cuales están interconectados mediante una red de comunicaciones.

Esquema de cliente servidor

Comunicación cliente/servidor

• El modelo cliente-servidor se basa en un protocolo solicitud/respuesta: el cual es sencillo y sin conexión, no es complejo y orientado a la conexión TCP / IP.

• El cliente es el que inicia un requerimiento de servicio (envía un mensaje de solicitud al servidor pidiendo cierto servicio

• Un servidor es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente, es importante aclarar que un servidor no es necesariamente un dispositivo físico, sino que es un proceso que se encarga de entender las peticiones de un cliente.

Comunicación cliente/servidor

• Debido a su sencillez, teóricamente el modelo se implementa mediante 2 llamadas al sistema:

• Para el envío de mensajes. send(dest,&mptr).• Para la recepción de mensajes. receive(addr,&mptr)

Comunicación cliente/servidor

• Direccionamiento.• Antes de que un cliente pueda enviar un mensaje a algún

servidor, necesita tomar en cuenta algunos aspectos como:

• ¿A quien debo mandarle el mensaje?

• El modelo cliente/servidor, implementa algunos mecanismos de direccionamiento.

Comunicación cliente/servidor

• Integrar machine.number al código del proceso cliente donde:• machine: indica el número de máquina dentro de la red.• number: el número de proceso dentro de esa máquina.

• Desventajas:• Este método no posee la transparencia que se busca ya que se

está identificando que existen varias máquinas trabajando.• Si el servidor falla, se pierde el servicio pues los programas

compilados tienen integrado ese número de máquina para ese servicio.

Comunicación cliente/servidor

• Dejar que los procesos elijan direcciones al azar y localizarlos mediante transmisiones:• En una LAN que soporte transmisiones, el emisor puede

transmitir un paquete especial de localización con la dirección del proceso destino.

• Las máquinas en la red reciben este mensaje y verifican si la dirección es la suya; en caso de que lo sea, regresa un mensaje "aquí estoy" con su dirección en la red (número de máquina).

• El cliente utiliza entonces esa dirección y la captura para uso posterior. Si bien esto cumple con las premisas, genera una carga adicional en el sistema.

Comunicación cliente/servidor

• Generar un servidor de nombres:• Cada vez que se ejecute un cliente en su primer intento por

utilizar un servidor, el cliente envía una solicitud al servidor de nombres (nombre en ASCII) para pedirle el número de la máquina donde se localiza el servidor.

• Una vez obtenida la dirección se puede enviar la solicitud de manera directa.

• Desventajas.• El problema de este método es que es un componente

centralizado y si bien se puede duplicar, presenta problemas en el mantenimiento de la consistencia

Comunicación cliente/servidor

• Utilizar un hardware especial, dejando que los procesos elijan su dirección en forma aleatoria.• En vez de localizar un proceso mediante transmisiones en toda la

red, los chips de interface de la red se diseñan de modo que permitan a los procesos almacenar sus direcciones en dichos chips.

• Las tramas usarían direcciones de procesos en vez de direcciones de máquinas. Al recibir cada trama, el chip de interface de la red solo tendría que examinar la trama para saber si el proceso destino se encuentra en esa máquina. En caso afirmativo, la aceptaría.

Elementos de la arquitectura cliente-servidor• Toda aplicación de un sistema de información está

caracterizada por tres componentes básicos:• Presentación /Capacitación de información.• Procesos.• Almacenamiento de la información.

• La arquitectura cliente-servidor es el resultado de la integración de dos culturas. • Por un lado la del Mainframe que aporta capacidad de

almacenamiento, integridad y acceso a la información• Por el otro, la del computador que aporta facilidad de uso, bajo

costo, presentación atractiva y una amplia oferta de productos y aplicaciones.

Características del modelo cliente-servidor • El cliente y el servidor pueden actuar como una sola entidad y

también pueden actuar como entidades separadas, realizando actividades o tareas independientes.

• Las funciones de cliente y servidor pueden estar en plataformas separadas o en la misma plataforma.

• Un servidor proporciona servicio a múltiples clientes en forma concurrente.

• Cada plataforma puede ser escalable independientemente. • Los cambios realizados en las plataformas clientes o de los

servidores, ya sea por actualización o por reemplazo tecnológico, se realizan de una manera transparente para el usuario final.

• La interrelación entre el hardware y el software están basados en una infraestructura poderosa, de tal forma que el acceso a los recursos de la red no muestra la complejidad de los diferentes tipos de formatos de datos y de los protocolos.

Características del modelo cliente-servidor • Las funciones de un cliente-servidor, pueden ser dinámicas, es decir,

tiene capacidad para integrar los equipos ya existentes en una organización, dentro de una arquitectura informática descentralizada y heterogénea.

• Constituye como el nexo de unión más adecuado para reconciliar los sistemas de información basados en MainFrames o minicomputadoras, con aquellos otros sustentados en entornos informáticos pequeños y estaciones de trabajo.

• Designa un modelo de construcción de sistema informáticos de carácter distribuido.

• Su representación típica es un centro de trabajo, una PC, en donde el usuario dispone de sus propias aplicaciones de oficina y sus propias bases de datos, sin dependencias directas del sistema central de información, al tiempo que puede acceder a los recursos de éstos en el host central y otros sistemas que la organización pone a su servicio

Ventajas de la arquitectura cliente-servidor• Simplifica el desarrollo de aplicaciones, la existencia de plataformas de hardware cada vez más

baratas.

Ésta constituye, a su vez, una de las más palpables ventajas de este esquema, la posibilidad de utilizar máquinas considerablemente más baratas que las requeridas por una solución centralizada, basada en sistemas grandes.

Puede utilizar componentes, tanto de hardware como de software, de varios fabricantes lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantación y actualización de soluciones.

• Fácil correspondencia de las aplicaciones en modelos C/S.

El esquema Cliente/Servidor facilita la integración entre sistemas diferentes y comparte información, permitiendo, por ejemplo, que las máquinas ya existentes puedan ser utilizadas, pero con interfaces más amigables al usuario. De esta manera podemos integrar PCs con sistemas medianos y grandes, sin necesidad de que todos tengan que utilizar el mismo sistema operacional.

• Interacción más intuitiva con el usuario.

El uso de interfaces gráficas para el usuario, el esquema cliente–servidor presenta la ventaja, con respecto a uno centralizado, de que no es siempre necesario transmitir información gráfica por la red, pues ésta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.

Ventajas de la arquitectura cliente-servidor• Una ventaja adicional del uso del esquema cliente–servidor

es que es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo, los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC).

• La estructura inherentemente modular facilita, además, la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.

• El esquema cliente–servidor contribuye, además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.

Desventajas de la arquitectura cliente-servidor• Tiene escasas herramientas para la administración y ajuste del

desempeño de los sistemas.• En el desarrollo de aplicaciones cliente–servidor se deben

considerar los aspectos que se mencionan a continuación: • Los clientes y los servidores deberán utilizar el mismo mecanismo

(por ejemplo: sockets o RPC), lo cual implica que se deben tener mecanismos generales que existan en diferentes plataformas.

• Debe tener estrategias para el manejo de errores y para mantener la consistencia de los datos.

• La seguridad de un esquema cliente–servidor es muy importante. Se deben hacer verificaciones en el cliente y en el servidor. También se puede recurrir a otras técnicas como el encuitar información.

• El desempeño. Problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráfico de datos, etcétera

Servicios basados en la arquitectura cliente–servidor • Servicios de Datos e Impresión:• Servicios que permiten compartir archivos, bases de datos,

impresoras y graficadores (plotters). • Administración de las colas de impresión en diferentes

dispositivos.• Servicios de Comunicaciones: • Aseguran que cada componente físico de la red sea capaz de

comunicarse exitosamente con otros componentes, tales como LAN a LAN y LAN a WAN. El sistema puede incluir dispositivos de comunicaciones que manejen diferentes tipos de protocolos para conectar sistemas heterogéneos.

Servicios basados en la arquitectura cliente–servidor • Servicio de Administración:• Administración de Sistemas involucra administración de cambios, de problemas,

operaciones, configuración y rendimiento. • Administración de Cambios: es definida como las actividades involucradas en la

planeación, programación, distribución, instalación y registro de hardware y software en una red distribuida.

• Administración de Problemas: involucra la determinación de los mismos, la identificación de su origen en una red y su solución.

• Administración de Operaciones: es definida como la administración del uso de los sistemas y de los recursos para soportar la carga de trabajo de la organización, la cual incluye operaciones automatizadas y remotas.

• Administración de Configuración: es el manejo de las relaciones lógicas y físicas entre los recursos de la red.

• Administración del Rendimiento: es un conjunto de actividades tales como la recopilación de datos de desempeño, afinamiento, distribución de carga de trabajo y el planeamiento de la capacidad para las redes distribuidas.

• Administración de Sistemas: también incluye servicios de respaldo, recuperación de datos, seguridad de recursos de cómputo y distribución y mantenimiento de software.

Servicios basados en la arquitectura cliente–servidor • Servicios de Aplicación:• Si el recurso compartido es una parte de una aplicación (una

función de la aplicación), estamos hablando de servicios de aplicación. Cada uno de los procesadores participantes en un ambiente cliente–servidor puede mantener parte del código de la aplicación, el cual debe ser compartido por todos ellos (interoperabilidad). Esto significa que las partes de una aplicación pueden ser distribuidas en varios procesadores, locales o remotos.

• El diseño de las funciones de la aplicación no debe estar ligado a un computador, lo que permite transportar la aplicación de un procesador a otro, sin modificaciones (portabilidad).

• Una ventaja derivada de esto es que la aplicación puede estar óptimamente ubicada dentro de una red con base en las necesidades: de recursos de cómputo y de la organización.

Desarrollo de aplicaciones con la arquitectura cliente - servidor•Capa (Distribución lógica)

• Conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.

• Modelo de capas• Desarrollo paralelos• Aplicaciones más robustas• Mantenimiento y soporte más sencillo• Mayor flexibilidad• Alta escalabilidad

Modelo de 3 capas

Capa de Presentación

Lógica de negocio

Datos

Modelo de n capas