Шаблон проверки утверждений

Сетка событий Azure
хранилище BLOB-объектов Azure

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

Контекст и проблема

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

Решение

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

Схема шаблона проверки утверждений.

  1. Полезная нагрузка
  2. Сохранение полезных данных в хранилище данных.
  3. Создайте маркер проверки утверждений и отправьте сообщение с помощью маркера проверки утверждений.
  4. Получение сообщения и чтение маркера проверки утверждений.
  5. Извлеките полезные данные.
  6. Обработка полезных данных.

Проблемы и рекомендации с шаблоном проверки утверждений

При реализации шаблона "Проверка утверждений" рассмотрите следующие рекомендации.

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

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

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

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

Когда следует использовать шаблон проверки утверждений

Ниже приведены основные варианты использования шаблона "Проверка утверждений".

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

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

Ниже приведены вторичные варианты использования шаблона "Проверка утверждений".

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

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

Проектирование рабочей нагрузки с помощью шаблона проверки утверждений

Архитектор должен оценить, как шаблон проверки утверждений можно использовать в проектировании рабочей нагрузки для решения целей и принципов, описанных в основных принципах Платформы Azure Well-Architected Framework. Например:

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

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

- Классификация данных SE:03
- Сегментация SE:04
Оптимизация затрат ориентирована на поддержание и улучшение рентабельности инвестиций рабочей нагрузки. Системы обмена сообщениями часто накладывают ограничения на размер сообщения, и увеличение ограничений размера часто является функцией premium. Уменьшение размера тел сообщений может позволить использовать более дешевое решение для обмена сообщениями.

- Затраты на компоненты CO:07
- Затраты на co:09 Flow
Эффективность производительности помогает рабочей нагрузке эффективно соответствовать требованиям , оптимизируя масштабирование, передачу данных и выполнение кода. Шаблон проверки утверждений повышает эффективность отправки и получения приложений и системы обмена сообщениями, эффективно управляя большими сообщениями. Он уменьшает размер сообщений, отправленных в систему обмена сообщениями, и обеспечивает получение приложений доступа к большим сообщениям только при необходимости.

- Pe:05 Масштабирование и секционирование
- Оптимизация непрерывной производительности PE:12

Как и любое решение по проектированию, рассмотрите любые компромиссы по целям других столпов, которые могут быть представлены с этим шаблоном.

Примеры шаблонов проверки утверждений

В следующих примерах показано, как Azure упрощает реализацию шаблона проверки утверждений:

  • Системы обмена сообщениями Azure: примеры охватывают четыре различных сценария системы обмена сообщениями Azure: хранилище очередей Azure, Центры событий Azure (стандартный API), Служебная шина Azure и Центры событий Azure (API Kafka).

  • Автоматическое создание маркера проверки утверждений вручную: в этих примерах также показаны два метода для создания маркера проверки утверждений. В примерах кода 1–3 Сетка событий Azure автоматически создает маркер при передаче полезных данных в Хранилище BLOB-объектов Azure отправки приложения. В примере кода 4 показан процесс создания маркеров вручную с помощью исполняемого клиента командной строки.

Выберите пример, соответствующий вашим потребностям, и следуйте предоставленной ссылке, чтобы просмотреть код на GitHub:

Пример кода Сценарии системы обмена сообщениями Генератор маркеров Получение приложения Хранилище данных
Пример кода 1 Хранилище очередей Azure Сетку событий Azure Function Хранилище BLOB-объектов Azure
Пример кода 2 Центры событий Azure (стандартный API) Сетку событий Azure Клиент командной строки исполняемой строки Хранилище BLOB-объектов Azure
Пример кода 3 Служебная шина Azure Сетку событий Azure Function Хранилище BLOB-объектов Azure
Пример кода 4 Центры событий Azure (API Kafka) Клиент командной строки исполняемой строки Function Хранилище BLOB-объектов Azure

Следующие шаги