Caché
Si un sitio dinámico se actualiza menos frecuentemente que una
vez por minuto vale la pena volverlo estático. La desventaja es que se pierden
las ventajas de los sitios dinámico.
Funcionamiento:
- Se calcula un hash de los parámetros que hacen único el resultado
- El hash se utiliza como llave en el caché
- Para escritura
- Para lectura
- Se necesita tener un completo conocimiento del proceso
- Se utilizan funciones de hash como MD5
- Se ejecuta el proceso la primera vez
- Se almacena el resultado dentro del caché
- A partir de la segunda vez se busca el resultado en el caché
- Se comprueba que esté el resultado en el caché
- Si no se encuentra el resultado
- Se vuelve a procesar el resultado
- Se almacena el resultado dentro del caché
- Se comprueba el tiempo de vida del resultado
- Si el tiempo de vida ha caducado
- Se vuelve a procesar el resultado
- Se almacena el resultado dentro del caché
- Se toma el resultado del caché para utilizarlo
El tiempo de procesamiento con caché debe ser menor al tiempo
de procesamiento sin caché.
Optimización:
- Se puede anidar el caché en varios niveles con distintos tiempos
de vida
- Se puede utilizar el caché para cada módulo con su propio tiempo
de vida
- Se pueden guardar en el cache los resultados de consultas a
la base de datos
- Se pueden guardar en el caché los resultados de procesos muy
complejos
- Se pueden guardar en el caché los resultados de procedimientos
remotos
- Se puede forzar el uso del caché cuando hay carga excesiva
del servidor
Métodos de almacenamiento
- En el sistema de archivos
- Se utiliza el hash como componente del nombre del archivo
- Se utilizan sistemas de archivos rápidos
- El acceso al archivo es muy rápido al buscarlo por su nombre
- Se puede depurar con herramientas como tmpwatch
- En la base de datos
- Se prefiere convertir el hash en números enteros
- Se tiene una llave combinada de varios enteros cortos
- Se prefieren enteros muy largos si el manejador los soporta
- Las búsquedas con enteros como llave son muy rápidas
- Se puede compartir el caché entre varios servidores
- Cluster
- Procesamiento distribuido asíncrono y remoto
- Se debe tener suficiente memoria para contener los índices
- La depuración de hace en SQL
Referencia: http://h-o-p-p.org/hopp/cache/basic-cache.inc
Tolerancia a fallas:
- Se ejecuta el procedimiento sensible
- Consulta a una base de datos
- Obtención de información remota
- Procedimiento que puede tener excepciones
- Procedimiento que puede quedar inconcluso
- Llamadas a procesos del sistema operativo
- Si el resultado es negativo
- Se busca un resultado previo en el caché
- Se prefiere utilizar ese resultado a mandar un error
- Si el resultado es positivo
- Se almacena el resultado en el caché
Procesamiento distribuído:
- Se tiene un solo manejador de bases de datos
- Se tienen varios servidores de páginas conectados a la base
de datos
- Se manda todo el procesamiento posible a los servidores de
páginas
- Nada de stored procedures
- Uso mínimo de constraints
- Se utiliza el caché en sistema de archivos local
- Para guardar resultados de consultas a la base de datos
- Para guardar resultados de procesos que consulten la base
de datos
- Se utilizan tiempos de vida razonablemente largos
- A mayor tiempo de vida mayor capacidad de la base de datos
- Pueden aumentar o disminuir dependiendo de la carga
- El valor de la carga puede almacenarse en el caché
- Se pueden usar bases de datos distintas para módulos distintos
- En el mismo servidor de base de dstos
- En un servidor de bases de datos distinto
- En un servidor remoto
- En el servidor local
- Cualquier combinación de las anteriores
- Para procesamiento de cientos de millones de páginas diarias
- Para sitios que realizan consultas extremadamente complicadas
- Para sitios que hacen cálculos muy tardados (varios segundos)
- Se prefiere el almacenamiento en la base de datos
Procesamiento diferido:
- Cuando la concurrencia puede crear situaciones de negación
de servicio
- Cuando el recurso es limitado y se desea poner prioridades
a distintos procesos
- Se utiliza un candado
- El dueño del candado tiene derecho a llevar a cabo su proceso
- El resto de los procesos se van a la cola
- Un demonio independiente maneja el procesamiento de la cola
- La cola tiene su propio candado
- Manejo de procesos nuevos:
- Con mayor prioridad que la cola se ejecuta
- Con menor prioridad se va a la cola
- Se pueden manejar varias colas con distintas prioridades
- Con caché
- Si el resultado está en el caché y no ha caducado
- El resultado no se procesa, se toma del caché
- Si ya caducó
- De alta prioridad se procesa y se guarda en el caché
- De baja prioridad
- Si es urgente se usa resultado anterior del caché
- Si no es urgente se va a la cola
- Si el resultado no está
- De alta prioridad se procesa y se guarda en el caché
- De baja prioridad se va a la cola
- Si el caché se bloquea
- El cliente tiene que esperar a que su resultado esté listo
- Se puede alcanzar el tiempo de espera máximo
- Si el caché no se bloquea
- El cliente regresa frecuentemente hasta obtener su resultado
- El cliente recibe un aviso cuando su resultado está listo