Publicado el 14 de Enero del 2017
860 visualizaciones desde el 14 de Enero del 2017
359,3 KB
31 paginas
Creado hace 16a (25/11/2008)
PROGRAMACION CONCURRENTE
VI.2: Introducción a los sistemas distribuido:
Paradigma cliente/servidor
José M. Drake
Notas:
Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL.
1
Antiguos y nuevos tiempos en arquitecturas
Arquitectura centralizada
Mainframe
Arquitectura distribuida
Client
Server
Client
Red
Server
Terminal
Terminal
Terminal
Client
Server
Procodis’08: VI- Cliente/servidor José M. Drake
2
Notas:
2
Tipos de arquitecturas distribuidas
Cliente/servidor sobre web
Cliente/Servidor objetos distribuidos
Navegador
GUI
Aplicación
Java
Aplicación
Client
Objects
Server
Objects
Internet
Red
Server
Objects
Middleware
(CORBA,ICE,RMI,..)
Aplicación
Documentos
HTML
CGI
Aplicación
DBMS
Objects
Client
Server
Procodis’08: VI- Cliente/servidor José M. Drake
3
Notas:
3
Metodología Cliente/Servidor
La metodología Cliente/Servidor es un paradigma de
organización de los elementos que constituyen una aplicación
distribuida, para que colaborando conjuntamente implemente
la funcionalidad especificada a la aplicación:
Clientes: elementos activos que dirigen las actividades que deben
ejecutarse para implementar la tarea requerida por la aplicación.
Requiere de los servidores que ejecuten algunas de esas actividades.
Servidores: Elemento pasivos especializados en realizar ciertas tareas
bajo requerimientos de
los clientes. Habitualmente representan
elementos que son compartidos por múltiples clientes, de una o varias
aplicaciones.
Proporciona un marco de referencia sencillo, flexible y abierto
para distribuir la ejecución de una aplicación en múltiples
nudos de una plataforma. En él la mezcla y el acoplamiento es
la norma.
Procodis’08: VI- Cliente/servidor José M. Drake
4
Notas:
4
Características de la arquitectura Cliente/Servidor (1)
Servicios: Facilita la colaboración de procesos que se ejecutan en
diferentes máquinas, a través de intercambios de servicios. Los procesos
servidores proveen los servicios, los clientes los consumen.
Recursos compartidos: Los servidores pueden ser invocados concurrente-
mente por los clientes, y una de sus principales funciones es arbitrar el
acceso a recursos compartidos que son gestionados por el propio servidor.
Protocolos asimétricos: Un servidor puede atender a múltiples clientes. El
cliente conoce el servidor que invoca. El servidor no necesita conocer el
cliente que atiende.
Independencia de la ubicación: La ubicación de los servidores es
irrelevante. Se utilizan servicios de localización definidos a nivel de
plataforma para que los clientes encuentren a los de servidores.
Compatibilidad de clientes y servidores: Los mecanismos de interacción
entre clientes y servidores son independientes de las plataformas. Un
middleware independiza la aplicación de la plataforma.
Procodis’08: VI- Cliente/servidor José M. Drake
5
Notas:
5
Características de la arquitectura Cliente/Servidor (2)
Comunicación basada en intercambio de mensajes: Los clientes y
servidores son elementos acoplados de forma muy libre. Interaccionan a
través de intercambios de mensajes, con los se implementan las
invocaciones de los servicios y las respuestas de los servicios.
Encapsulación de los servicios: Los servicios son elementos
especializados, que tienen declarados públicamente los servicios que
puede servir. Sin embargo, la forma que implementa el servicio es sólo
propia de él, y no puede afectar a los clientes que los requieren.
Escalabilidad: Las aplicaciones basadas en clientes/servidores son
fácilmente escalables. Hay dos tipos de escalado:
Escalado vertical: Los sistemas pueden crecer por un incremento del número
de clientes y servidores.
Escalado horizontal: Los servidores pueden descomponenrse en grupos de
servidores que ofrezcan servicios desacoplados mas específicos.
Integridad: La información es administrada por el servidor de forma
unificada, dando lugar un mantenimiento mas sencillo y seguro. El
middleware de distribución garantiza la seguridad en los accesos a los
servicios y en la integridad de los datos.
Procodis’08: VI- Cliente/servidor José M. Drake
6
Notas:
6
Estrategias de reparto de la complejidad.
Clientes pesados / Servidores ligeros: La mayor parte de la funcionalidad
de la aplicación se implementa en el cliente.
Los servidores son mecanismo de acceso a recursos compartidos.
Mayor flexibilidad para aplicaciones que implementan nuevas
funcionalidades.
Ejemplos: Servidores de bases de datos o servidores de ficheros.
Clientes ligeros / Servidores pesados: La mayor parte de la funcionalidad
se implementa en los servidores.
Incrementar la reusabilidad del código.
Son mas fáciles de desplegar y administrar.
Se basan en servidores mas abstractos que reducen el flujo por la red.
En vez de proporcionar datos, exportan procedimientos.
Ejemplos: Servidores de transacciones y servidores web.
Ambos modelos coexisten y se complementan dentro de una misma
aplicación.
Procodis’08: VI- Cliente/servidor José M. Drake
7
Notas:
7
Servidor/cliente de 2-niveles y n-niveles
2-tier Client/Server
- Aplicación
- SQL
- Data Access
- C API
2-tier versus 3-tier
Costo desarrollo y
mantenimiento
2-tier
3-tier
Cliente pesado
Servidor final
Complejidad de la aplicación
3-tier Client/Server
- Browser
- GUI
- ActiveX
- RPC
- ORB
- MOM
- HTTP
- DBMS
- Device drivers
- Resource APIs
- SQL
- Data Access
- C API
Cliente ligero
Servidor aplicación
Servidor final
Procodis’08: VI- Cliente/servidor José M. Drake
8
Notas:
8
Comparación de sistemas de 2-niveles y 3-niveles
Administración
del sistema
2-Niveles
Compleja: El cliente se constituye en
administrador efectivo
Seguridad
Baja: Seguridad a nivel de la transmisión de
la información.
3-Niveles
Menos compleja: La aplicación puede
gestionarse con las herramientas de gestión
de los servidores
Alta: se puede implementar a nivel del
servicio, operación u objeto.
Encapsulado de
la información
Carga de la red
Bajo: Las estructuras de datos son públicas
Alta: El cliente invoca servicio y métodos
Alta: Se envían por la red comandos de
bajo nivel. Deben descargarse datos al
cliente para ser analizados.
Baja: Sólo se envían requerimientos de
servicios y respuestas elaboradas a éstos
Escalabilidad
Pobre: No puede gestionarse conjuntamente
grupos de clientes. Los servidores son
terminales y difíciles de replicar.
Excelente: Permite concentrar los clientes.
Posibilita distribuir la carga entre servidores
replicados.
Reutilización
de aplicaciones
Pobre: Las aplicaciones son monolíticas y
concentradas en el cliente.
Excelente: Los servicios y objetos de
aplicación pueden reutilizarse.
Procodis’08: VI- Cliente/servidor José M. Drake
9
Notas:
9
Comparación de sistemas de 2-niveles y 3-niveles
Facilidad de
desarrollo
Infraestructura
entre servidores
Integración de
aplic. legadas
Soporte de web
Métodos de
comunicación
Flexibilidad
arquitectural
Robustez a fallos
2-Niveles
Alta: Solo se requiere conocer la
funcionalidad de los servidores
terminales.
No se requiere
No
Pobre: La anchura de banda limitada de
internet dificulta la descarga de clientes
pesados.
Invocaciones síncronas: de tipo RPC.
3-Niveles
Requiere nuevas herramientas: Para desarro-
llar los lados cliente y servidor de las
aplicaciones.
Se requiere middleware para facilitar la
interacción entre servidores.
Si: Mediante pasarelas planteadas como
servidores u objetos adaptadores.
Excelente: Los clientes formulados como
applets y beams son idóneos para
descargarse por la red.
Invocaciones síncronas y asíncronas: Tipo
RPC, mensajes sin conexión, basadas en
colas, eventos, etc.
Limitada: Solo se pueden establecer las
conexiones del cliente con los servidores
terminales.
Baja
Excelente: Existen múltiples posibilidades de
organización y distribución de los servidores
por la plataforma.
Excelente: Puede reinstalarse los servicios de
aplicación en cualquier equipo.
Procodis’08: VI- Cliente/servidor José M. Drake
10
Notas:
10
Arquitectura de sistemas de n-niveles
Los servidores de aplicación no se organizan como elementos monolíticos 3-
nivels, sino como conjuntos de muchos servidores sencillos n-niveles.
Los clientes combinan servicios de diferentes servidores y cada servidor puede
implementar su funcionalidad basándose en otros servidores.
Revisión
crédito
Facturación
Revisión
inventario
Envio avisos
Capa intermedia de aplicación
Actualización
cuenta
Pedido
producto
Agregar
cliente
Solicitud
servicio
LAN
Internet
WAN
privada
Catálogo
de ventas
Finanza
Atención cliente
Ventas
Procodis’08: VI- Cliente/servidor José M. Drake
11
Notas:
11
Ventajas de arquitecturas n-niveles: Componentes
Los proyectos grandes se pueden desarrollar como conjunto de pequeños
proyectos, con mayor posibilidades de éxito.
Se pueden reutilizar componentes entre aplicaciones. La aplicaciones se
construyen agrupando componentes de forma específica a la funcionalidad
que requiere.
Permite elevar el nivel de abstracción. Los clientes pueden requerir los
servicios por sus nombres y no necesitan conocer de que base de datos
proceden, ni que elementos participan para implementarlos.
Permiten incorporar fácilmente elementos legados.
Los entornos de componentes no envejecen sino mejoran:
Nuevos clientes pueden generarse añadiendo algún objeto servidor mas.
Los objetos servidores pueden modificarse o sustituirse sin que afecten a los
clientes.
Procodis’08: VI- Cliente/se
Comentarios de: PROGRAMACION CONCURRENTE - VI.2: Introducción a los sistemas distribuido: Paradigma cliente/servidor (0)
No hay comentarios