События, выходящие из строя, и обработка дубликатов в микросервисах: тяжелые уроки инструментов проверки и стены PEP 668 1. Контекст и обзор архитектуры В распределенных архитектурах микросервисов, управляемых событиями, обеспечение порядка сообщений...
События, выходящие из строя, и обработка дубликатов в микросервисах: тяжелые уроки инструментов проверки и стены PEP 668
1. Контекст и обзор архитектуры
В распределенных архитектурах микросервисов, управляемых событиями, обеспечение порядка сообщений и идемпотентности является классической задачей. Когда сервисы взаимодействуют асинхронно через брокеров (например, Apache Kafka, RabbitMQ или AWS SQS/SNS), сетевые разделы, масштабирование рабочих процессов и повторные попытки потребителей неизбежно приводят к нарушению порядка доставки и дублированию потребления сообщений.
блок-схема LR
Продюсеры подграфа ["Продюсеры событий"]
P1["Заказать услугу"]
P2["Платежный сервис"]
конец
Брокер подграфа ["Брокер сообщений"]
Q["Распределенный журнал событий"]
конец
подграф Потребители ["Потребители/Работники"]
C1["Исполнитель А"]
C2["Исполнитель Б"]
конец
P1 -- "Отправить заказ" --> Q
P2 — "Выдать платеж захвачен" —> Q
Вопрос-. «Неисправность/Повторная доставка».-> C1
Вопрос-. «Параллельная обработка».-> C2
Чтобы убедиться, что наши потребители правильно обрабатывают счетчики последовательностей, причинные зависимости и ключи идемпотентности в конвейерах с высокой пропускной способностью, мы разработали сценарий сквозной проверки. Однако развертывание и выполнение этого средства проверки я