Улучшение использования ЦП путем реструктуризации узлов
У нас есть база данных, расположенная в регионе Северной Европы, с двумя узлами AppServices в Azure (Западная Европа и Северная Европа). Мы используем диспетчер трафика для маршрутизации трафика.
Наша база данных и хранилище SQL расположены в Северной Европе.
Когда мы запустили сайт, европейские локации были ближе всего к нашим клиентам.
Тем не менее, мы увидели сдвиг, и большинство наших клиентов сейчас из США.
У нас высокая загрузка ЦП на наших процессорах, хотя у нас много экземпляров на каждом.
Вопрос в том:
Поскольку большинство наших клиентов из США, и перемещение базы данных затруднено, лучше сохранить структуру приложения в том виде, как она есть (Северная Европа и Европа) или создать новый узел в США, но этот узел все равно потребуется общаться с базой данных в Северной Европе?
Спасибо
2 ответа
Наличие приложения в регионе США и базы данных в Европе не рекомендуется.
Вот несколько вещей, с которыми вы столкнетесь:
1) Высокая задержка, так как запросы на получение данных должны будут совершать поездки в Европу, чтобы получить это.
2) Более высокое использование ресурсов, поскольку, как правило, каждый запрос на доступ к БД занимает больше времени, это увеличивает использование памяти, в то время как запросы ожидают данные, а также значительно увеличивает нагрузку на приложение.
3) выход из межрегиональных данных, вам нужно будет платить за все данные, перемещаемые к нам из Европы каждый раз, когда появляется запрос.
Лучшим решением было бы сделать следующее:
1) Настройте новую БД в используемом регионе и подключите активную гео-репликацию.
На этом этапе у вас будет горячая / холодная конфигурация, где любой экземпляр может использоваться для чтения данных из БД, но только основной экземпляр может использоваться для операций записи.
2) Создать новую версию плана App/App Service в регионе США.
3) Адаптируйте свой код, чтобы понять вашу топологию с географическим распределением.
Ваше приложение должно иметь возможность отправлять все чтения в "ближайший" регион и все записи в первичную базу данных.
4) Развернуть код во всех регионах
5) добавить новый регион в профиль ТМ
Хотя это и не идеально, поскольку операции записи, возможно, все равно придется перепрыгивать через пруд, большинство приложений имеют шаблон чтения-записи, который сильно искажен для операций чтения (примерно 85% операций чтения / 15% операций записи), поэтому это решение работает с дополнительным преимуществом: давая вам HA на случай, если один из регионов выйдет из строя.
Возможно, вы захотите взглянуть на этот доклад, в котором я расскажу, как настроить геораспределенное приложение с использованием службы приложений, SQL Azure и описанной выше методики.
Рассматривали ли вы разделение ваших данных в зависимости от местоположения ваших пользователей? С точки зрения производительности это будет лучше, Вы можете обеспечить обслуживание в непиковые часы каждого региона. Позвольте мне рекомендовать вам эту статью.