You are on page 1of 22

Curso: Arquitectura de

Computadoras

Arquitectura de Servidores

Sesin 34

Qu es arquitectura de servidores?
Que informacin adicional es
necesario conocer para
trabajar y comprender las
arquitecturas de servidores

Como esta conformado la


arquitectura de servidores a
nivel fsico, componentes y
distribucin de los mismos

Arquitectura de Servidores
Los servidores son computadoras con componentes de hardware
y software mucho mas performantes que un computador
normal, brindando as mayor capacidad de procesamiento,
almacenamiento y transmisin de informacin dentro de una
organizacin.

Clasificacin de servidores:
Servidores Secuencial o Iterativos
Servidores Concurrentes

Qu pasa cuando varios clientes tratan de


conectarse al mismo tiempo a un servidor?
Una forma es ir atendindolos de a uno en un ciclo: como en el
programa que atiende pedidos de archivos
Se acepta una conexin
Se lee la peticin
Se lee desde el archivo y se escribe en el socket hasta encontrar
una marca de fin de archivo

A este tipo de servidores se les llama servidores secuenciales o


iterativos.
El problema es que todo cliente tiene que esperar su turno para
ser atendido.
Si uno de ellos pide un archivo muy grande los dems tienen
que esperar.
La mayor parte de la espera es debido a operaciones de IO, hay
capacidad de CPU ociosa !

Un servidor secuencial o iterativo


atendiendo a ms de un cliente
A CLIENT

A SERVER

A CLIENT
4444

A CLIENT

Durante la conversacin no puede or


por el puerto 4444
A CLIENT

A SERVER

A CLIENT
4444

A CLIENT

Slo despus de efectuar la transmisin


se pone a escuchar de nuevo por el 4444

A CLIENT

A SERVER

A CLIENT
4444

A CLIENT

Si el servicio consiste en transferir un


archivo, el cliente debe digitar el
nombre
A CLIENT

A SERVER

A CLIENT
4444

A CLIENT

Qu sucede si el servidor tiene que esperar


mucho para que un cliente escriba el nombre
de un archivo?
A CLIENT

A SERVER

Timeout

A CLIENT

4444

A CLIENT

ArchServidor2

Un Servidor Concurrente
Un servidor concurrente atiende a varios clientes al
mismo tiempo.
Ms an, mientras est atendiendo sigue
escuchando
El problema es que todo cliente tiene que esperar su
turno para ser atendido.
Si uno de ellos pide un archivo muy grande los
dems tienen que esperar
La mayor parte de la espera es debido a operaciones
de IO, hay capacidad de CPU ociosa!
Se trata de crear un nuevo proceso o lnea de
ejecucin cada vez que un cliente llega a pedir un
servicio.

Servidores Comcurrentes: hay procesos


separados para atender el puerto y para
transferir el archivo
A CLIENT
A SERVER
4444

A CLIENT

A CLIENT

Despus que el cliente contacta al servidor, ste


crea otro proceso para para atender al cliente y se
queda escuchando el puerto 4444 por otro
A CLIENT
A SERVER
4444

A CLIENT

A CLIENT

Mientras el nuevo proceso est atendiendo al


primer cliente, el segundo cliente puede
contactar al servidor en el puerto 4444
A CLIENT

A SERVER
4444

A CLIENT

A CLIENT

Y el servidor crea otro proceso


A CLIENT
A SERVER
4444

A CLIENT

A CLIENT

Ahora un tercer cliente contacta al


servidor
A CLIENT

A SERVER
4444

A CLIENT

A CLIENT

Y un tercer proceso esclavo o thread


es creado
A CLIENT
A SERVER
4444

A CLIENT

A CLIENT

Algoritmo de Servidor Concurrente


Programa principal o master del servidor
1. Crear un Socket de servidor

En un ciclo infinito:
2. Aceptar requerimientos de clientes
3. Cuando llega una peticin de un cliente crear un nuevo
proceso esclavo que atienda paralelamente la peticin
(esto no debe bloquear la ejecucin del programa master del
servidor)
4. Volver a 2.

Proceso esclavo:
1. Recibir los parmetros de la comunicacin (socket o flujos de
entrada y/o salida)
2. Atender al cliente (ej: leer el nombre del archivo, transmitir
el archivo)
3. Retornar (desaparecer !)

En JAVA se prefiere usar Threads


Un thread es una secuencia o flujo de instrucciones que se
ejecutan dentro de un programa. Tiene un comienzo y un
fin. Entonces qu diferencia tiene con un proceso?
El thread slo puede ser creado dentro de un proceso. Y un
proceso (programa) puede crear varios threads dentro de l
que se ejecutan en paralelo.
El programa principal est consciente de los threads que
existen, hay variables que los identifican. Pueden ser
creados, inicializados, suspendidos, reactivados o parados
por el programa que los cre.
El programa principal puede darles parmetros distintos a
cada thread. Los thread se pueden programar con la
cantidad de variables necesarias para su ejecucin (no lo
heredan TODO).

Consistencia de la memoria Cache


La memoria cache, es la memoria que se encuentra dentro del procesador y
sirve para guardar copias de datos ubicados en la memoria principal (RAM)
que son de uso frecuente.
Cada vez que se traspasa un archivo del servidor a un cliente se provee de
una promesa de callback, garantizando que cuando otro cliente modifique el
archivo este ser notificado.
El callback puede estar en dos estados: valido o cancelado.
Cuando el archivo es traspasado al cliente el callback se pone en vlido.
Cuando se recibe un callback del servidor (porque el archivo fue modificado)
se pone en cancelado.
Cada vez que el cliente abre un archivo busca si est en su cache. Si est se
revisa el callback. Si est cancelado se trae una copia nueva del archivo, si
est vlido, se usa el archivo del cache.
Si la estacin de trabajo se reinicia (por que se apag o se cay) pide para
cada archivo de su cache el timestamp de la ltima modificacin .
Si la ltima modificacin es consistente con la copia se pone el callback en
vlido, si no en cancelado.

Como y donde trabajan lo servidores

Diagrama de red de servidores

You might also like