#azure #asp.net-core #load-balancing #web-hosting #image-scaling
#лазурный #asp.net-ядро #балансировка нагрузки #веб-хостинг #масштабирование изображения
Вопрос:
Я создаю приложение, которое сохраняет много изображений, используя C # Web API ASP.NET .
Лучшим способом, по-видимому, является сохранение изображений в файловой системе и сохранение их пути в базе данных.
Тем не менее, я обеспокоен балансировкой нагрузки. Поскольку каждый сервер помещает изображение в свою собственную файловую систему, как другой сервер, находящийся за тем же балансировщиком нагрузки, может получить изображение?
Комментарии:
1. это означает, что вам нужен выделенный файловый сервер, независимо от того, сохраняете ли вы файлы как обычные файлы или в базе данных. В противном случае вам необходимо реплицировать файлы через все узлы (через какую-то шину сообщений, …). Конечно, у каждого есть свое преимущество. Вы можете выбрать решение, исходя из ваших требований к масштабированию и производительности.
Ответ №1:
Если у вас есть ресурсы для этого, я бы сказал, что:
лучший способ — сохранить их в файловой системе и сохранить путь к изображению в базе данных
Вообще не соответствует действительности.
Вместо этого, я бы сказал, что использование существующей файловой серверной системы, вероятно, даст наилучшие результаты, если вы готовы платить за услугу.
Для dotnet «go to» будет хранилищем больших двоичных объектов Azure, которое идеально подходит для непотоковых данных, таких как изображения.
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet
В противном случае вы можете попробовать создать свою собственную службу хранения файлов с нуля. В этом случае вы фактически создадите отдельный API-интерфейс сервиса отдельно от вашего основного кластера, который обрабатывает ваше фактическое приложение, этот вторичный API просто обрабатывает хранилище файлов и работает на своем собственном выделенном сервере.
Затем вы просто создаете связь между Id <-> файловыми данными на файловом сервере, и ваши серверы приложений могут запрашивать и отправлять файлы на файловый сервер через эти идентификаторы.
Это возможно, но файловый сервер, безусловно, является одним из тех проектов, которые на первый взгляд кажутся простыми, но очень быстро вы понимаете, что это очень и очень сложная задача, и, возможно, было проще просто заплатить за существующую услугу.
Там также могут быть существующие варианты автономного файлового сервера!