Ответы пользователя по тегу Сервис-ориентированная архитектура
  • Как масштабировать сервис хранения картинок?

    efrolov54rus
    @efrolov54rus
    Младший Web-разработчик (принимаю заказы)
    Обычно подобные субдомены (s1, s2, и т.п) создаются для того чтобы балансировать нагрузку на файловый сервер, используя для этого промежуточные кэширующие сервера.
    Предположим что у нас есть несколько кэширующих серверов в разных локациях. Каждый из них постоянно передаёт статистику о своёй нагруженности на основной сервер.
    При отдаче статики пользователю, скрипт на основном (бэкэнд) сервере обращается в кэш (например, Redis) и получает из него статистику загруженности серверов на текущий момент времени и например их расположение. После этого на основе IP выбирается самый близкий к пользователю сервер а затем выбирается наименее загруженный сервер из списка (пусть он называется s3). Таким образом клиент получает в ответе от скрипта подобный url: https://s3.example.org/cache/images/sample.jpg.
    После этого происходит запрос на этот сервер и получение файла из кэша или напрямую из файлового сервера (при отсутствии файла на кэш сервере).
    Удалять файлы физически КРАЙНЕ не рекомендуется (особенно если это происходит часто), вместо этого стоит использовать флаг скрытия на программном уровне
    Для надёжности желательно использование RAID-5 на файловом сервере. В случае полного хайлоада можно создать несколько репликационных файловых серверов и объединить их в один кластер.
    Более подробно, можно прочитать здесь:
    https://winitpro.ru/index.php/2013/09/25/ustanovka...

    PS Поправьте меня если я ошибаюсь
    Ответ написан
    Комментировать