Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шаблон проверки утверждений позволяет рабочим нагрузкам передавать полезные данные без хранения полезных данных в системе обмена сообщениями. Шаблон сохраняет полезные данные во внешнем хранилище данных и использует "проверку утверждений" для получения полезных данных. Проверка утверждений является уникальным неясным маркером или ключом. Чтобы получить полезные данные, приложения должны представить маркер проверки утверждений во внешнее хранилище данных.
Контекст и проблема
Традиционные системы обмена сообщениями оптимизированы для управления большим объемом небольших сообщений и часто имеют ограничения на размер сообщения, которые они могут обрабатывать. Большие сообщения не только рискуют превышать эти ограничения, но и могут снизить производительность всей системы, когда система обмена сообщениями сохраняет их.
Решение
Используйте шаблон проверки утверждений и не отправляйте большие сообщения в систему обмена сообщениями. Вместо этого отправьте пакет данных во внешнее хранилище и создайте токен проверки для этого пакета данных. Система обмена сообщениями отправляет сообщение с токеном проверки требований получающим приложениям, чтобы эти приложения могли получить полезные данные из хранилища данных. Система обмена сообщениями никогда не видит и не сохраняет полезную нагрузку.
- Полезная нагрузка
- Сохранить пэйлоад в хранилище данных.
- Создайте маркер проверки утверждений и отправьте сообщение с помощью маркера проверки утверждений.
- Получите сообщение и прочитайте токен проверки утверждений.
- Извлеките нагрузку.
- Обработайте полезную нагрузку.
Проблемы и рекомендации с шаблоном проверки утверждений
При реализации шаблона "Проверка утверждений" рассмотрите следующие рекомендации.
Удаление потребляемых сообщений. Если вам не нужно архивировать сообщение, удалите сообщение и нагрузку после того, как его используют получающие приложения. Используйте синхронную или асинхронную стратегию удаления:
Синхронное удаление: используемое приложение удаляет сообщение и полезные данные сразу после потребления. Он связывает удаление с рабочим процессом обработки сообщений и использует вычислительные ресурсы рабочих процессов обмена сообщениями.
Асинхронное удаление: процесс вне рабочего процесса обработки сообщений удаляет сообщение и полезные данные. Он отделяет процесс удаления от рабочего процесса обработки сообщений и сводит к минимуму использование вычислительных ресурсов обмена сообщениями.
Реализуйте шаблон с учётом условий. Включите логику в отправляющее приложение, которое применяет шаблон проверки утверждений, если размер сообщения превышает предел системы обмена сообщениями. Для небольших сообщений обходить шаблон и отправлять меньшее сообщение в систему обмена сообщениями. Этот условный подход снижает задержку, оптимизирует использование ресурсов и повышает пропускную способность.
Когда следует использовать шаблон проверки утверждений
Ниже приведены основные варианты использования шаблона "Проверка утверждений".
Ограничения системы обмена сообщениями: используйте шаблон проверки утверждений, если размеры сообщений превышают ограничения системы обмена сообщениями. Перенесите нагрузку во внешнее хранилище. Отправьте только сообщение с токеном подтверждения в систему обмена сообщениями.
Производительность системы обмена сообщениями: используйте шаблон проверки утверждений, если большие сообщения напрягают систему обмена сообщениями и ухудшают производительность системы.
Ниже приведены вторичные варианты использования шаблона "Проверка утверждений".
Защита конфиденциальных данных: используйте шаблон 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 |
Следующие шаги
- Сайт шаблонов интеграции enterprise содержит описание этого шаблона.
- Другой пример см. в публикации в блоге Работа с большими сообщениями в Service Bus с использованием шаблона Claim-Check.
- Альтернативным шаблоном обработки больших сообщений является разделение и агрегат.
- Библиотеки, такие как NServiceBus, обеспечивают поддержку этого шаблона из коробки с помощью функции DataBus.