Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura de Servidores
Arquitectura de Servidores
Servidores Concurrentes
Servidores Iterativos
Servidores con Estado
Servidores sin Estado
A SERVER
A CLIENT
4444
A CLIENT
A SERVER
A CLIENT
4444
A CLIENT
A SERVER
A CLIENT
4444
A CLIENT
A SERVER
A CLIENT
4444
A CLIENT
A SERVER
Timeout
4444
A CLIENT
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.
4444
A CLIENT
A CLIENT
4444
A CLIENT
A CLIENT
4444
A CLIENT
A CLIENT
4444
A CLIENT
A CLIENT
4444
A CLIENT
A CLIENT
4444
A CLIENT
A CLIENT
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 !)
while(1) {
ssock = accept(msock, &fsin, &alen);
pid = fork();
if (pid == 0) {
atender al cliente;
retornar;
}
Posicin
XYZ
ZXY
50
A CLIENT
Archivo
Posicin
XYZ
50
ZXY
50
Req. 0, leer 50
A SERVER
respuesta: el contenido
A CLIENT
Posicin
XYZ
100
ZXY
50
Req. 0, leer 50
A SERVER
respuesta: el contenido
A CLIENT
Posicin
XYZ
100
ZXY
50
Req. 0, leer 50
A SERVER
respuesta: el contenido
A CLIENT
Posibilidad de Errores
Arquitectura de un Servidor de
Archivos
Aplicacin
Mdulo
Cliente
Servicio de Directorio
Servicio plano de
archivo (flat)
Componentes
Flat File Service: Implementa las operaciones
directamente sobre los archivos. Trabaja con Unique File
Identifieres (UFID). Se genera uno nuevo por cada archivo
Componentes
Flat File Service: Implementa las operaciones directamente
sobre los archivos. Trabaja con Unique File Identifieres (UFID). Se
genera uno nuevo por cada archivo
Controles de acceso
En un sistema local el chequeo se hace slo al abrir el archivo y los
derechos se conservan
en un sistema distribuido los chequeos se deben hacer a nivel de
servidor. Para que el servidor siga siendo stateless se pueden usar 2
estrategias:
El chequeo se hace cuando el nombre es convertido en UFID y el resultado
es codificado en forma de capacidad que se retorna al cliente, el cual lo usa
para futuros accesos
La identificacin del usuario se hace cada vez que se manda un request y el
chequeo se hace para cada operacin
Ejemplo 1 el NFS
Aplicacin
Sistema Virtual
Sistema Virtual
Sist
Local
Client
NFS
Server
NFS
Sist
Local
Caractersticas de NFS
La comunicacin es por medio de RPC y es abierta en el
servidor, que reside en el kernel
La identificacin de archivos es por medio de los llamados
file handters consistentes en:
Filesystem identifier
i-node number or file
i-node gerneration number
Cache en NFS
Cache en Unix: buffer cache, read ahead, delayed write
Cache en Server: datos de escritura se guardan en memoria cache y son
escritas antes del reply al cleinte. En la versin 3 se guarda todo en cache
hasta que se recibe la operacin commit para ese archivo (buffer lleno o
close)
Ejemplo 2: El AFS
Apunta a lograr mejor performance en situaciones de
escalabilidad
Whole-file serving: El contenido de todo los directorios archivos son
traspasados al cleinte
Whole-file caching: Los archivos transmitidos son guardados en cache
local. Normalmente varios cientos de archivos ! El cache es casi
permanente.
Cuando se hace un open del archivo se transmite el archivo entero si no
estaba
las operaciones de escritura/lectura se hacen localmente
Con el close, se transmite una copia modificada al servidor
Debe
Vice
Venus
Unix Kernel
Cada vez que se traspasa un archivo del servidor a un cliente se provee de una
promesa de callback, que garantiza 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