Caché de imágenes de forma centralizada

Caché de imágenes de forma centralizada

Solicitud: Ofrezca imágenes responsivas y optimizadas sobre la marcha recortando/cambiando el tamaño/comprimiendo imágenes maestras

Carga actual: 10.000 solicitudes por minuto, tráfico de ~60 MBps.

Configuración actual: NginxPlus LB se encuentra en la cima. Múltiples servidores de aplicaciones con nginx->tomcat. En cada servidor de aplicaciones, las imágenes se almacenan en caché en nginx.

Problemas actuales:

  • Baja tasa de aciertos de caché, ya que el caché está descentralizado, la probabilidad de que la misma solicitud llegue al mismo servidor es baja.
  • Almacenamiento en caché duplicado, aunque esto puede tolerarse
  • La purga de caché es engorrosa. Dado que es posible que el caché esté presente en varios servidores, para purgar el caché, es necesario eliminarlo de todos los servidores de aplicaciones.

Soluciones potenciales

  • Hashing consistente de Nginx Load Balancer. El problema con este enfoque es que puede causar una distribución desigual del tráfico.

  • Introducir una capa intermedia de pocos servidores nginx: se puede introducir una capa de almacenamiento en caché nginx dedicada entre LB y los servidores de aplicaciones. Pero digamos que mantengo 3 servidores en esta capa, aún así tiene el mismo problema de almacenamiento en caché duplicado y dolores de cabeza de purga, aunque en magnitud menor.

  • La E/S de disco puede ser un problema en caso de un solo nginx

¿Alguien tiene experiencia en resolver este caso de uso? No sea con nginx. Siéntete libre de compartir tus pensamientos.

información relacionada