Ресурсы · 54

Веб-хуки: обработка повторов, задержек и восстановления

Преобразуйте полученное уведомление в уникальный, отслеживаемый бизнес-эффект, восстанавливаемый после сбоя.

Обновлено · 3 min

Чего помогает достичь это руководство

  • Аутентификация уведомлений
  • Разделение получения и обработки
  • Предотвращение дублирования эффектов
  • Восстановление заблокированных событий

Быстрая проверка

  • Какие байты подписываются?
  • Когда получение является устойчивым?
  • Могут ли два работника действовать совместно?
  • Гарантирует ли поставщик порядок доставки?
  • Как найти потерянное событие?

Пошаговый метод

  1. 1

    Ознакомление с контрактом поставщика

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

    Результат: контракт поставщика с указанием даты.

  2. 2

    Проверка перед эффектами

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

    Результат: отказы без последствий.

  3. 3

    Сохранение перед подтверждением

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

    Результат: состояния получения, обработки, завершения и блокировки.

  4. 4

    Обеспечение идемпотентности

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

    Результат: доказательство уникальности эффекта.

  5. 5

    Обработка задержек и сбоев

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

    Результат: переходы и тесты обратного порядка.

  6. 6

    Согласование и повторное воспроизведение

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

    Результат: процедура восстановления и отчет о несоответствии.

Многоразовый рабочий лист

Заполните ваши авторизованные наблюдения. Эти поля являются рабочим шаблоном, а не наблюдаемыми результатами.

ПолеИнформация для записи
СобытиеПоставщик, учетная запись, идентификатор и версия
ПодтверждениеПроверенная подпись и надежная метка времени
ЭффектКлюч бизнеса, состояние и подтверждение уникальности
ВосстановлениеПричина, попытка, владелец и завершение

Вымышленный пример

Иллюстративная ситуация

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

Решение и ожидаемые доказательства

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

Различение механизмов

МеханизмНазначениеПроверка или ограничение
ПодписьПроверка источника в соответствии с контрактомНе делает эффекты уникальными
ДедупликацияРаспознавание повторных уведомленийТакже проверка параллельного доступа и влияния на бизнес
СогласованиеПоиск пропусков и различийУказание источника и периода

Показатели управления

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

Распространенные ошибки

  • Анализ перед проверкой подписанного тела
  • Подтверждение перед надежным получением
  • Предположение о упорядоченной доставке
  • Проверка дубликатов только последовательно

Часто задаваемые вопросы

Означает ли успех HTTP завершение обработки?

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

Можно ли предположить доставку ровно один раз?

Проектирование с учетом повторов и сбоев в рамках реального контракта, с уникальными последствиями и согласованием.

Следует ли сохранять весь текст?

Только при необходимости, с соответствующим доступом и хранением. Минимальные следы должны поддерживать диагностику и восстановление без сохранения секретов.

Официальные ссылки

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

Источники проверены .