Стратегии архитектуры для приоритета производительности критически важных потоков

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

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

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

Определения

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

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

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

Определение всех потоков

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

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

Мониторинг метрик производительности потока

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

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

  • Средства мониторинга производительности приложений (APM): используйте средства APM для мониторинга производительности приложения и отслеживания выполнения потоков. Эти средства обеспечивают видимость времени отклика, ошибок и других метрик производительности, позволяя выявлять критически важные потоки и оптимизировать их производительность.

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

Определение критических потоков

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

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

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

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

  • Назначьте рейтинг критичности: на основе показателей влияния на бизнес и производительности следует определить приоритеты потоков. Используйте рейтинги критической оценки высокого, среднего и низкого уровня. Потоки с значительным влиянием на бизнес или высокий спрос на производительность должны получить "высокий" рейтинг критичности. Эти потоки являются критически важными потоками. Сосредоточьтесь на потоках с высоким трафиком пользователей или непосредственно влияет на создание доходов. В следующей таблице приведены характеристики критических (высокий) и некритических потоков (средний к низким).

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

Изоляция критически важных потоков

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

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

  • Логическая сегментация: используйте средства виртуализации и контейнеризации, такие как Docker или Kubernetes, для изоляции потоков на уровне программного обеспечения. Критически важные потоки можно разделить на виртуальные машины (виртуальные машины). Таким образом, вы создаете изолированную среду, уменьшая зависимости и потенциальные помехи от других потоков.

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

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

Оптимизация выделения емкости

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

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

  • Анализ требований к потоку: анализ требований к ресурсам каждого потока. Понимание ресурсов, необходимых для эффективной работы потока. Для каждого потока определите требования к ресурсам, такие как использование ЦП, требования к памяти и пропускная способность сети.

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

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

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

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

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

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

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

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

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

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

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