Улучшение использования ЦП путем реструктуризации узлов

У нас есть база данных, расположенная в регионе Северной Европы, с двумя узлами AppServices в Azure (Западная Европа и Северная Европа). Мы используем диспетчер трафика для маршрутизации трафика.

Наша база данных и хранилище SQL расположены в Северной Европе.

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

Тем не менее, мы увидели сдвиг, и большинство наших клиентов сейчас из США.

У нас высокая загрузка ЦП на наших процессорах, хотя у нас много экземпляров на каждом.

Вопрос в том:

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

Спасибо

2 ответа

Решение

Наличие приложения в регионе США и базы данных в Европе не рекомендуется.

Вот несколько вещей, с которыми вы столкнетесь:

1) Высокая задержка, так как запросы на получение данных должны будут совершать поездки в Европу, чтобы получить это.

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

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

Лучшим решением было бы сделать следующее:

1) Настройте новую БД в используемом регионе и подключите активную гео-репликацию.

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

2) Создать новую версию плана App/App Service в регионе США.

3) Адаптируйте свой код, чтобы понять вашу топологию с географическим распределением.

Ваше приложение должно иметь возможность отправлять все чтения в "ближайший" регион и все записи в первичную базу данных.

4) Развернуть код во всех регионах

5) добавить новый регион в профиль ТМ

Хотя это и не идеально, поскольку операции записи, возможно, все равно придется перепрыгивать через пруд, большинство приложений имеют шаблон чтения-записи, который сильно искажен для операций чтения (примерно 85% операций чтения / 15% операций записи), поэтому это решение работает с дополнительным преимуществом: давая вам HA на случай, если один из регионов выйдет из строя.

Возможно, вы захотите взглянуть на этот доклад, в котором я расскажу, как настроить геораспределенное приложение с использованием службы приложений, SQL Azure и описанной выше методики.

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

Другие вопросы по тегам