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