Как сделать управление версиями файлов с помощью CDN и loadbalancer? - PullRequest
0 голосов
/ 25 апреля 2020

Так что я использую очень простой сервис CDN. Вы указываете на свой веб-сайт, и если вы вызываете его через имя хоста, они кешируют его для вас после первого звонка.

Я использую его для всего моего содержимого c, например JavaScript файлов и изображений .

Все это прекрасно работает - и мне нравится, что оно требует очень небольших затрат на обслуживание или настройку.

Проблема начинается при развертывании новых версий файлов JavaScript. Новые JavaScript файлы автоматически получают новый ха sh, если файлы изменяются.

Поскольку развертывание на нескольких экземплярах не является одновременно проблемой, возникает проблема. Я попытался смоделировать это на этой диаграмме:

Diagram

Словами:

  • Запрос приходит на сервер с новой версией
  • Запрашивает Js файл с новой версией ha sh
  • CDN правильно определяет, что файл не кэширован
  • CDN запрашивает исходный файл с новым ha sh с балансировщика нагрузки
  • loadbalancer подает запрос CDN на случайный сервер - случайно обслуживает сервер со старой версией
  • CDN кеширует старую версию с новой ha sh
  • все получают старые версии с CDN

Есть несколько способов, которыми я знаю, как это исправить - например, выгрузка файлов вручную в отдельное хранилище с запеченным ha sh, et c. Но для этого нужен дополнительный код и больше «движущихся частей», которые усложняют обслуживание.

Я бы предпочел иметь что-то, что работает так же легко, как и обычное поведение CDN. Я полагаю, что это общая проблема для сайтов, которые работают в нескольких экземплярах, но я не могу найти много информации об этом.

Как обычно это можно решить?

...