Поделиться через


Стратегии архитектуры для оптимизации масштабирования и секционирования

Применяется к этой рекомендации по эффективности производительности платформы Azure Well-Architected Framework:

PE:05 Оптимизируйте масштабирование и секционирование. Включение надежного и управляемого масштабирования и секционирования. Макет единицы масштабирования рабочей нагрузки является основой стратегии масштабирования и секционирования.

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

Определения

Срок Definition
Автомасштабирование Функция, которая автоматически настраивает ограничения емкости службы на основе предопределенных конфигураций, что позволяет масштабировать его по мере необходимости.
Capacity Верхний предел или максимальная емкость данной службы или функции.
Сходство клиентов (сходство сеансов) Преднамеренная маршрутизация запросов от одного клиента к одному экземпляру сервера для обеспечения согласованного управления сеансами.
Согласованность (распределенная база данных) Единообразие данных между несколькими узлами в распределенной базе данных, гарантируя, что все реплики имеют одинаковые данные в определенный момент времени.
Согласованность (реляционная база данных) Свойство транзакции, принося базу данных из одного допустимого состояния в другое, сохраняя целостность данных.
Уровень согласованности Конфигурация, которая определяет, как и когда данные реплицируются в распределенной системе баз данных, определяя компромисс между согласованностью и производительностью.
Блокировка данных Механизм, используемый для предотвращения одновременных обновлений одинаковых данных.
Горизонтальное масштабирование Подход масштабирования, добавляющий экземпляры заданного типа ресурса.
Оптимистическая конкурентность Подход к обновлению баз данных, использующих моментальные снимки для обновления, а не традиционных механизмов блокировки.
Partitioning Процесс физического разделения данных на отдельные хранилища данных.
Масштабируемость Возможность динамического изменения пределов емкости рабочей нагрузки для удовлетворения различных уровней спроса.
Единица масштабирования Группа ресурсов, масштабируемых пропорциональным образом.
Сходство состояний Хранилище данных сеанса клиента на одном сервере, чтобы тот же сервер обрабатывал последующие запросы от одного клиента.
Вертикальное масштабирование Подход масштабирования, добавляющий вычислительные ресурсы к существующим ресурсам.

Масштабирование и секционирование способствуют повышению производительности, обеспечивая эффективное использование ресурсов, а рабочая нагрузка может обрабатывать различные нагрузки. Эти методики особенно важны в облачных средах, где приложения должны быть гибкими и адаптируемыми к изменению требований. Масштабирование обеспечивает расширение емкости рабочей нагрузки для удовлетворения растущих требований. Секционирование позволяет эффективно распределять задачи или данные для обработки этих растущих потребностей. Основой обоих этих процессов является проектирование единицы масштабирования рабочей нагрузки. Он определяет, как рабочая нагрузка должна расти и распределять задачи. Включив надежный и контролируемый подход к масштабированию и секционирования, можно обойти потенциальные неэффективности рабочей нагрузки.

Оптимизация масштабирования

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

Выбор стратегии масштабирования

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

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

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

Общие сведения о рабочей нагрузке. Пригодность вертикального или горизонтального масштабирования зависит от конкретных характеристик и требований рабочей нагрузки. Регулярный мониторинг производительности и тестирование в следующих областях может помочь оптимизировать стратегию масштабирования с течением времени:

  • Требования. Изучите конкретные требования рабочей нагрузки, учитывая такие факторы, как требования к ресурсам, потребности масштабируемости и ограничения рабочей нагрузки.

  • Единицы масштабирования: создайте структуру единиц масштабирования для компонентов, которые должны масштабироваться вместе. Например, для обработки дополнительной рабочей нагрузки может потребоваться 100 виртуальных машин и три учетных записи хранения. Единица масштабирования — 100 виртуальных машин, две очереди и три учетные записи хранения. Вы должны независимо масштабировать все компоненты, которые испытывают колебания емкости.

  • Архитектура: оценка дизайна архитектуры приложения. Некоторые приложения могут быть изначально разработаны для горизонтального масштабирования с помощью компонентов без отслеживания состояния, которые можно легко распределять между несколькими экземплярами. Другие приложения могут иметь компоненты с отслеживанием состояния или зависимости, которые делают вертикальное масштабирование более подходящим. Оцените требования к масштабируемости и эластичности рабочей нагрузки.

Проектирование инфраструктуры для масштабирования

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

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

  • Выравнивание нагрузки на основе очередей. Вместо того, чтобы полагаться на одну очередь для обработки сообщений, рассмотрите возможность секционирования рабочей нагрузки по нескольким очередям для распределения нагрузки обработки. Она обеспечивает более высокую масштабируемость и параллельную обработку.

  • Обработка данных: одноэлементные шаблоны часто отображаются в сценариях обработки данных, где обработка не раздувается. Разорвать длительные задачи на небольшие задачи, которые могут лучше масштабировать рабочую нагрузку между несколькими ресурсами и воспользоваться преимуществами параллелизма.

  • Шаблоны проектирования: такие шаблоны проектирования, как вентилятор или вентилятор иликаналы и фильтры , могут помочь избежать одноэлементов в рабочих процессах. Эти шаблоны позволяют распределять задачи обработки по нескольким ресурсам и повысить масштабируемость и гибкость.

Отделять компоненты. Разделение компонентов приложения является важным аспектом разработки для масштабируемости. Она включает разбиение приложения на небольшие независимые компоненты, которые могут работать и масштабироваться независимо на основе конкретных требований к рабочей нагрузке. Например, если одному компоненту требуется больше ресурсов из-за повышенного спроса, этот компонент можно масштабировать, не влияя на другие. Эта гибкость обеспечивает эффективное выделение ресурсов и предотвращает узкие места. Разбив компоненты, можно изолировать сбои и свести к минимуму влияние на общее приложение. Если один компонент завершается ошибкой, другие компоненты могут продолжать функционировать независимо.

Несоединяемые компоненты проще поддерживать и обновлять. Изменения или обновления одного компонента можно вносить без влияния на другие, так как они независимы. Выполните следующие рекомендации, чтобы отделить компоненты приложения для масштабируемости:

  • Разделение проблем. Определите обязанности и функциональные возможности приложения. Разделить обязанности на отдельные компоненты на основе их конкретных задач. Например, у вас могут быть отдельные компоненты для проверки подлинности пользователей, обработки данных и пользовательского интерфейса.

  • Свободное связывание. Проектирование компонентов для взаимодействия друг с другом с помощью четко определенных интерфейсов и протоколов. Эта конструкция уменьшает зависимости между компонентами и позволяет упростить замену или масштабирование отдельных компонентов.

  • Асинхронное взаимодействие: используйте асинхронные шаблоны связи, такие как очереди сообщений или архитектуры на основе событий, чтобы отделить компоненты дальше. Эти шаблоны позволяют компонентам обрабатывать задачи независимо по своему темпу, повышая общую масштабируемость.

  • Микрослужбы: рекомендуется реализовать микрослужбы, которые являются небольшими, независимыми службами, которые сосредоточены на конкретных бизнес-функциях. Каждая микрослужба может разрабатываться, развертываться и масштабироваться независимо, обеспечивая большую гибкость и масштабируемость.

Проектирование приложения для масштабирования

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

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

  • Оцените требования к сеансу. Общие сведения о данных сеанса, которые должны храниться и управляться. Рассмотрим атрибуты сеанса, время ожидания сеанса и все определенные требования к репликации сеанса или сохраняемости. Определите размер состояния сеанса и частоту операций чтения и записи.

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

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

  • Обновите логику. Измените логику управления сеансами приложения, чтобы хранить и извлекать данные сеанса из внешнего решения хранилища. Возможно, вам потребуется использовать API или библиотеки, предоставляемые решением хранилища для управления состоянием сеанса.

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

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

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

Используйте динамическое обнаружение служб. Динамическое обнаружение служб — это процесс автоматического обнаружения и регистрации служб в распределенной системе. Он позволяет клиентам обнаруживать доступные службы без тесной привязки к определенным экземплярам. Клиенты не должны иметь прямой зависимости от конкретного экземпляра в рабочей нагрузке. Чтобы избежать этих зависимостей, следует использовать прокси-сервер для распространения и распространения клиентских подключений. Прокси-сервер выступает в качестве посредника между клиентами и службами, предоставляя уровень абстракции, который позволяет добавлять или удалять службы, не затрагивая клиентов.

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

  1. Найдите задачи с большим объемом ЦП и операций ввода-вывода в приложении, которые можно выгрузить. Обычно эти задачи связаны с большими вычислениями или взаимодействием с внешними ресурсами, такими как базы данных или сетевые операции.

  2. Разработка приложения для поддержки фоновых задач. Отделить интенсивные задачи от основной логики приложения и предоставить механизм запуска фоновых задач и управления ими.

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

  4. Распределите фоновые задачи, если существует множество из них, или если задачи требуют существенного времени или ресурсов. Одно из возможных решений см. в шаблоне конкурирующих потребителей.

Настройка масштабирования

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

Используйте службы с автомасштабированием. Функция автомасштабирования автоматически масштабирует инфраструктуру для удовлетворения спроса. Используйте предложения платформы как услуга (PaaS) со встроенными функциями автомасштабирования. Простота масштабирования на PaaS является основным преимуществом. Например, для масштабирования виртуальных машин требуется отдельный балансировщик нагрузки, обработка запросов клиента и внешне сохраненное состояние. Предложения PaaS обрабатывают большую часть этих задач.

Ограничение автомасштабирования. Задайте ограничения автоматического масштабирования, чтобы свести к минимуму чрезмерное масштабирование, что может привести к ненужным затратам. Иногда нельзя задать ограничения масштабирования. В таких случаях необходимо задать оповещения, чтобы уведомить вас о достижении максимального предела масштабирования и превышения масштаба.

Общие сведения о границах масштабирования служб. При понимании ограничений масштабирования служб, добавок и ограничений можно принимать обоснованные решения при выборе службы. Границы масштабирования определяют, может ли выбранная служба обрабатывать ожидаемую рабочую нагрузку, эффективно масштабироваться и соответствовать требованиям к производительности приложения. Масштабируемые границы, которые следует учитывать, включают:

  • Ограничения масштабирования. Ограничения масштабирования — это максимальная емкость, которую может обрабатывать расположение или служба. Важно знать эти ограничения, чтобы убедиться, что служба может соответствовать ожидаемой рабочей нагрузке и обрабатывать пиковое использование без снижения производительности. Каждый ресурс имеет верхний предел шкалы. Если вам нужно выйти за рамки масштабирования, следует секционировать рабочую нагрузку.

  • Увеличение масштаба: службы масштабируемые по определенным добавкам. Например, вычислительные службы могут масштабироваться по экземплярам и модулям pod, а базы данных могут масштабироваться по экземплярам, единицам транзакций и виртуальным ядрам. Важно понимать эти приращения для оптимизации выделения ресурсов и предотвращения отката ресурсов.

  • Ограничения масштабирования. Некоторые службы позволяют масштабировать или выходить, но ограничить возможность автоматического обратного масштабирования. Вы вынуждены масштабироваться вручную или вам может потребоваться повторно развернуть новый ресурс. Эти ограничения часто предназначены для защиты рабочей нагрузки. Масштабирование или масштабирование могут повлиять на доступность и производительность рабочей нагрузки. Служба может применять определенные ограничения или ограничения, чтобы обеспечить эффективную работу рабочей нагрузки. Эти ограничения могут повлиять на согласованность и синхронизацию данных, особенно в распределенных системах. Служба может иметь механизмы для обработки репликации данных и согласованности во время масштабирования вверх или вне, но могут не обеспечить тот же уровень поддержки масштабирования или в.

Используйте значимые метрики нагрузки. Масштабирование должно использовать значимые метрики нагрузки в качестве триггеров масштабирования. Значимые метрики нагрузки включают простые метрики, такие как ЦП или память. Они также включают более сложные метрики, такие как глубина очереди, запросы SQL, пользовательские запросы метрик и длина очереди HTTP. Рекомендуется использовать сочетание простых и расширенных метрик нагрузки в качестве триггера масштабирования.

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

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

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

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

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

Масштабирование тестов

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

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

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

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

  • Задайте метрики производительности. Определите метрики производительности для измерения, например времени отклика, пропускной способности, использования ЦП и памяти и частоты ошибок.

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

  • Выполнение и мониторинг тестов. Запустите тесты с помощью определенных тестовых вариантов и соберите данные о производительности на каждом уровне нагрузки. Отслеживайте поведение рабочей нагрузки, потребление ресурсов и снижение производительности.

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

  • Зависимости адресов. Найдите потенциальные проблемы зависимостей. Масштабирование или секционирование в одной области рабочей нагрузки может привести к проблемам с производительностью зависимости. Компоненты рабочей нагрузки с отслеживанием состояния, такие как базы данных, являются наиболее распространенным причиной проблем с производительностью зависимостей. Базам данных требуется тщательное проектирование для горизонтального масштабирования. Следует учитывать меры, такие как оптимистическое параллелизм или секционирование данных, чтобы обеспечить большую пропускную способность базы данных.

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

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

Рабочая нагрузка секционирования

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

Общие сведения о секционированиях

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

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

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

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

Планирование секционирования

Важно учитывать такие факторы, как распределение данных, шаблоны запросов, рост данных и требования к рабочей нагрузке при секционирования. Надлежащее планирование и проектирование необходимы для обеспечения эффективности секционирования и повышения эффективности производительности. Если вы используете секционирование как затруднительным, это более сложно, так как у вас уже есть динамическая рабочая нагрузка для поддержания. Может потребоваться изменить логику доступа к данным, распределить большие объемы данных между секциями и поддерживать постоянное использование во время распределения данных.

Реализация секционирования

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

  • Горизонтальное секционирование подходит для распределения данных между несколькими ресурсами или серверами для повышения масштабируемости и производительности. Это эффективно, если рабочая нагрузка может быть параллелизирована и обработана независимо для каждой секции. Рассмотрите возможность горизонтального секционирования, если нескольким пользователям или процессам необходимо одновременно получить доступ к набору данных или обновить его.

  • Вертикальное секционирование подходит при частом доступе к определенным атрибутам или столбцам, а другие — реже. Вертикальное секционирование обеспечивает эффективный доступ к необходимым данным путем минимизации ненужных сборов данных.

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

Тестирование и оптимизация секционирования

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

Компромисс. Секционирование упрощает проектирование и разработку рабочей нагрузки. Секционирование требует бесед и планирования между разработчиками и администраторами баз данных.

Риск. Секционирование представляет некоторые потенциальные проблемы, которые необходимо учитывать и устранять, в том числе:

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

  • Производительность запросов: плохо разработанные схемы секционирования могут отрицательно повлиять на производительность запросов. Если запросы должны получать доступ к данным в нескольких секциях, может потребоваться дополнительная координация и обмен данными между секциями, что приводит к увеличению задержки.

Упрощение функций Azure

Оптимизация масштабирования. Azure имеет емкость инфраструктуры для поддержки вертикального и горизонтального масштабирования. Службы Azure имеют разные уровни производительности, известные как номера SKU. Номера SKU позволяют масштабировать вертикально. Многие ресурсы Azure поддерживают автоматическое масштабирование или другие варианты масштабирования на месте. Некоторые ресурсы поддерживают расширенные метрики или пользовательские входные данные для поддержки точной настройки поведения масштабирования. Большинство реализаций масштабирования в Azure могут устанавливать ограничения и поддерживать необходимую наблюдаемость для изменения.

Azure Monitor позволяет отслеживать различные метрики и условия в приложениях и инфраструктуре. Монитор можно использовать для активации автоматических действий масштабирования на основе предопределенных правил. Например, в службе Azure Kubernetes (AKS) можно использовать монитор для включения горизонтального масштабирования pod (HPA) и автоматического масштабирования кластера. С помощью возможностей мониторинга и оповещений монитора вы можете эффективно упростить масштабирование в Azure и обеспечить динамическое изменение потребностей приложений и инфраструктуры.

Вы также можете создать настраиваемое автоматическое масштабирование в Azure. Оповещения можно использовать в мониторе для ресурсов, которые не имеют функции автомасштабирования. Эти оповещения можно настроить на основе запросов или на основе метрик и выполнять действия с помощью службы автоматизации Azure. Автоматизация предоставляет платформу для размещения и запуска кода PowerShell и Python в Azure, в облаке и локальных средах. Он предлагает такие функции, как развертывание модулей Runbook по запросу или по расписанию, журнал выполнения и ведение журнала, интегрированное хранилище секретов и интеграция системы управления версиями.

Проектирование приложения для масштабирования. Ниже приведены некоторые способы упрощения масштабирования приложений в Azure;

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

  • Использование фоновых задач: службы предложений Azure и рекомендации по реализации фоновых заданий. Дополнительные сведения см. в разделе "Фоновые задания".

  • Реализация балансировки нагрузки: Azure предоставляет подсистемы балансировки нагрузки, которые не требуют сопоставления клиентов. Эти подсистемы балансировки нагрузки включают Azure Front Door, Шлюз приложений Azure и Azure Load Balancer.

Секционирование рабочей нагрузки: Azure предлагает различные стратегии секционирования для различных хранилищ данных. Эти стратегии помогают повысить производительность и масштабируемость, распределяя данные по нескольким секциям. Дополнительные сведения см. в стратегиях секционирования данных.

Контрольный список эффективности производительности

Ознакомьтесь с полным набором рекомендаций.