Sajid227 Ответов: 1

Как обновить файлы приложений в облаке при запуске нескольких экземпляров


Сейчас мы переходим в облако ,есть несколько запросов, которые мы хотим решить, так что мы будем использовать масштабирование для обработки нашей нагрузки трафика. Запрос заключается в том ,что когда мы развертываем наше приложение на веб-сервере, позже мы хотим обновить некоторые файлы или ресурсы ,пусть в 3 часа дня,из-за нагрузки трафика ,которую я направляю на экземпляр 1 из 4 экземпляров моего приложения,если я обновлю файлы здесь,а позже, когда нагрузка будет низкой, пользователь попадет на экземпляр 3 с помощью балансировщика нагрузки, получит ли этот пользователь последние файлы или обновления?надеюсь, вы все поймете мою точку зрения?

Что я уже пробовал:

у меня есть goolged, но не удовлетворительное объяснение, которое я нашел,пожалуйста, обратитесь к некоторым ссылкам и т. д

1 Ответов

Рейтинг:
4

Afzaal Ahmad Zeeshan

Цитата:
получит ли этот пользователь последние файлы или обновления?надеюсь, вы все поймете мою точку зрения?
Да, он получит последний файл, если только вы не используете какое-то кэширование или шлюзы CDN, которые кэшируют содержимое. Если вы не используете службы кэширования, CDN или подобные методы, то пользователи всегда будут получать свежий контент. Кроме того, в облаке вы должны предоставлять своим пользователям свежий контент и свежие файлы; облачные сервисы не бесплатны, и если вы собираетесь платить, заплатите немного больше, чтобы получить максимальную отдачу.

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

Кроме того, в этом сценарии я бы просто держал данные вне виртуальных машин и загружал их оттуда, чтобы все 4 виртуальные машины были абстрагированы от операций чтения/записи на диске, и они запрашивали бы поставщиков хранения данных для доставки данных; теперь в этой сцене вы можете иметь поставщик данных кэширует файлы хранилища для вас.

Кстати, каким облачным провайдером вы пользуетесь? Большинство из этих концепций применимы к Microsoft Azure, и я лично протестировал их на своих сервисах, но другие поставщики должны предоставить вам аналогичный архитектурный дизайн.

Например, Azure уже имеет эту функцию в своих службах приложений, которая гарантирует нулевое время простоя в ваших приложениях, Настройка промежуточных сред для веб-приложений в Службе приложений Azure / Microsoft Docs[^]. Таким образом, пользователи всегда получают последнюю версию приложения, Azure сама управляет балансировкой нагрузки.


Sajid227

очень коротко, я понял вашу точку зрения: это означает, что без использования кэширования мы можем загружать файлы и т. д., И это будет доступно всем пользователям всех экземпляров сразу после этого. Мы также будем использовать MS Azure,а что, если мы будем использовать кэш?

Afzaal Ahmad Zeeshan

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

В таком случае поделитесь со мной, что это за приложение (веб-приложение, веб-API, серверная служба, виртуальная машина, что?), чтобы я мог подробно рассказать вам об этом случае.

Sajid227

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

Afzaal Ahmad Zeeshan

Ах, тогда приложение уже, кажется, находится в хорошем потоке обработки. :-)

Для проектов развертывания:
1) Убедитесь, что у вас активны слоты развертывания и что свежий код помещается в этот слот, а не в производственный. Благодаря этому каждый раз ваше приложение будет запускаться до того, как оно будет допущено к потреблению; устраняется любое время простоя.
2) рассмотрите возможность использования балансировщиков нагрузки, отличных от тех, которые предусмотрены, для достижения еще лучшего решения.
3) хотя это и не обязательно, но использование различных центров обработки данных также повысит производительность вашего приложения.
4) кэширование может быть сделано, но для статического контента; например, для страниц about me или статических файлов JavaScript. Azure также предоставляет услуги CDN.

Кроме этого, я верю, что вы не столкнетесь с проблемами.

Sajid227

Пачка благодарностей и извинений за эту долгую болтовню....

Afzaal Ahmad Zeeshan

Без проблем. :-)