Кластер сервера для статических файлов

Я приношу извинения заранее, если этот вопрос может (при необходимости) быть несколько широким. Я буду стараться изо всех сил сохранять его в формате допустимого вопроса.

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

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

Часть, которая является проблемой, - то, как эффективно хранить сами статические файлы на кластере. Мы ожидаем, что будет присутствовать очень большая сумма (Диапазон терабайта) данных и сохраняем зеркальные копии файлов на каждом узле, просто не опция.

Казалось бы, что меня по существу оставляют с 2 опциями:

1) Используйте центральный файловый сервер, к которому узлы могут выполнить запросы. Мне трудно видеть, как я могу мешать этому серверу стать узким местом, как бы то ни было.

2) Используйте 1) в сочетании с некоторым механизмом кэширования на узле для предотвращения избыточных запросов к файловому серверу.

3) Некоторое другое блестящее решение, которое сохранит мою душу и рендеринг 1) и 2) устаревший.

Какова была бы хорошая стратегия получить этот вид распределения файла, и что программное обеспечение доступно, чтобы сделать так?

Большое спасибо заранее!

0
задан 30 August 2014 в 15:51
1 ответ

A consistent ring hash является классическим решением такого рода проблемы, по крайней мере, алгоритмически. Такие системы, как Swift, memcached, Dynamo, Riak, использовали этот подход для решения данной проблемы.

OpenStack Swift в частности, это хранилище объектов/блобов, использующее последовательный кольцевой хэш для отслеживания и распределения объектов, контейнеров и т.д. Вы можете использовать Swift или что-то вроде него непосредственно для решения вашей проблемы, или построить свое собственное решение с помощью последовательного хэш-кольца. Использование такого решения, как Swift, дает возможность не разрабатывать его самостоятельно, а также включает такие вещи, как защита данных путем репликации, версионирования и т.д.

Если вам не нужно запускать его самостоятельно, а вместо этого вы заинтересованы в услугах хостинга, такие продукты, как Rackspace Cloud Files (на основе Swift) или Amazon S3, обеспечивают хранение и извлечение объектов с помощью CDN (Akamai и CloudFront для Rackspace и Amazon соответственно). CDN значительно повысит эффективность поиска для географически распределенных клиентов

.
2
ответ дан 4 December 2019 в 13:57

Теги

Похожие вопросы