![Armazenar imagens em cache centralmente](https://rvso.com/image/769259/Armazenar%20imagens%20em%20cache%20centralmente.png)
Aplicativo: Forneça imagens responsivas e otimizadas instantaneamente cortando/redimensionando/compactando imagens mestre
Carga atual: 10 mil solicitações por minuto, tráfego de aproximadamente 60 MBps.
Configuração atual: NginxPlus LB fica no topo. Vários servidores de aplicativos com nginx->tomcat. Em cada servidor de aplicativos, as imagens são armazenadas em cache no nginx
Problemas atuais:
- Baixa taxa de acertos do cache, pois o cache é descentralizado, a probabilidade da mesma solicitação atingir o mesmo servidor é baixa.
- Cache duplicado, embora isso possa ser tolerado
- A limpeza do cache é complicada. Como o cache pode estar presente em vários servidores, para limpá-lo, ele precisa ser eliminado de todos os servidores de aplicativos
Soluções potenciais
Hashing consistente do Nginx Load Balancer. O problema com esta abordagem é que ela pode causar uma distribuição desigual do tráfego.
Introduzir uma camada intermediária de alguns servidores nginx: Uma camada de cache nginx dedicada pode ser introduzida entre LB e servidores de aplicativos. Mas digamos que eu mantenha 3 servidores nesta camada. Ainda assim, ele tem o mesmo problema de cache duplicado e dores de cabeça de limpeza, embora as magnitudes sejam menores.
A E/S de disco pode ser um problema no caso de nginx único
Alguém tem experiência em resolver este caso de uso? Não seja com o nginx. Sinta-se à vontade para compartilhar suas idéias.