2015-06-15 3 views
1

У меня возникли проблемы с пониманием части файловой системы хранения в архитектуре сервера и CDN.CDN и архитектура сервера: функция загрузки изображений для моего веб-приложения

Это моя среда:

1.) 1 Nginx балансировки нагрузки

2.) 2 Node.js express.js веб-серверы

3.) 1 MongoDB базы данных

4.) 1 CDN

Что я пытаюсь сделать?

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

Что я понимаю до сих пор?

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

Что я не понимаю?

Мои вопросы:

1,0) Мне нужно также сохранить эти изображения на моем веб-сервера?

1.1) Если да (1,0), мне нужен еще один веб-сервер для моего стека, чтобы сохранить все изображения, загруженные от пользователя, чтобы загрузить CDN с этого сервера?

2.) Как должны передаваться данные, когда пользователь начинает загружать свои изображения?

Вот некоторые шаги, я так растерялся

шаг 1: пользователь может выбрать файл для загрузки

шаг 2: загрузка данных ....

Шаг 3: загрузка сервера на CDN?

или если пользователь загрузить прямо в CDN сервер

ThankYou очень много! :)

+0

посмотреть: http://stackoverflow.com/questions/2648664/image-upload-storage-strategies – Thomee

ответ

2

Это действительно зависит от ваших требований :) Если вы хотите, чтобы пользователь загружал изображения в CDN (Akamai), вы можете создать для них FTP-доступ (надеясь, что этих пользователей меньше). Затем они могут использовать любое программное обеспечение, такое как WinScp, и загружать изображения прямо в CDN.

Затем в конфигурации akamai вы можете определить правило, говорящее, что любой запрос изображения отправляется в Akamai Netstorage и сервер его.

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

-1

Если я опоздал, пожалуйста, сообщите мне, какой подход вы приняли. Один из подходов, который я пробовал, был:

  1. При получении файла от клиента на сервере загрузите его непосредственно на некоторый CDN, заблокируйте пользователя до загрузки файла. я попробовал S3.
  2. Обратный отклик пользователю на то, что файл загружен с использованием текущего URL-адреса.
  3. Запустите задачу async, в которой вы измените размер изображения до требуемого размера, а затем загрузите его в CDN, а затем обновите URL-адрес этого нового файла.

При таком подходе пользователь может сразу увидеть изображение с загруженным размером файла, а позже, как только мы загрузим наш измененный файл, мы его используем.