Централизованное кэширование изображений

Централизованное кэширование изображений

Приложение: Мгновенно предоставляйте адаптивные и оптимизированные изображения, обрезая/изменяя размер/сжимая основные изображения

Текущая нагрузка: 10 тыс. запросов в минуту, трафик ~60 Мбит/с.

Текущая конфигурация: NginxPlus LB находится наверху. Несколько серверов приложений с nginx->tomcat. На каждом сервере приложений изображения кэшируются в nginx

Текущие проблемы:

  • Низкий коэффициент попадания в кэш, поскольку кэш децентрализован, вероятность того, что один и тот же запрос попадет на один и тот же сервер, мала.
  • Дублирующее кэширование, хотя это можно допустить
  • Очистка кэша обременительна. Поскольку кэш может присутствовать на нескольких серверах, для очистки кэша его необходимо очистить со всех серверов приложений

Возможные решения

  • Nginx Load Balancer согласованное хеширование. Проблема этого подхода в том, что он может привести к неравномерному распределению трафика

  • Ввести средний слой из нескольких серверов nginx: выделенный слой кэширования nginx может быть введен между LB и серверами приложений. Но предположим, что я оставляю 3 сервера в этом слое, все еще есть та же проблема дублирования кэширования и головной боли очистки, хотя величины ниже.

  • Дисковый ввод-вывод может быть проблемой в случае одного nginx

Есть ли у кого-нибудь опыт решения этой проблемы? Пусть и не с nginx. Не стесняйтесь делиться своими мыслями.

Связанный контент