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

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

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

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

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

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Azure системы обмена сообщениями. Примеры охватывают четыре различных сценария системы обмена сообщениями Azure: Azure Queue Storage, Azure Event Hubs (стандартный API), Azure Service Bus и Azure Event Hubs ( API Kafka).

  • Автоматическая и ручная генерация маркера проверки утверждений: в этих примерах также показаны два метода генерации маркера проверки утверждений. В примерах кода 1–3 Azure Event Grid автоматически создает маркер при передаче полезных данных в Azure Blob Storage. В примере кода 4 показан процесс создания маркеров вручную с помощью исполняемого клиента командной строки.

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

Пример кода Сценарии системы обмена сообщениями Генератор токенов Получение программного приложения Хранилище данных
Пример кода 1 Хранилище очередей Azure (Azure Queue Storage) Azure Event Grid Функция Azure Blob Storage
Пример кода 2 Azure Event Hubs (Standard API) Azure Event Grid Клиент командной строки исполняемый Azure Blob Storage
Пример кода 3 Azure Service Bus Azure Event Grid Функция Azure Blob Storage
Пример кода 4 Azure Event Hubs (API Kafka) Клиент командной строки исполняемый Функция Azure Blob Storage

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