Що означає «idempotency» у контексті подій?
Idempotency (ідемпотентність) у контексті подій означає, що обробка однієї й тієї самої події кілька разів дає однаковий результат, без повторних побічних ефектів.
Навіщо це потрібно
У подієвих системах те саме повідомлення може бути доставлене повторно, наприклад через мережевий збій, тайм-аут чи повторну публікацію брокером. Якщо споживач не ідемпотентний, дубльована подія може:
- двічі створити замовлення,
- двічі списати гроші,
- двічі надіслати сповіщення.
Як досягається
- Унікальний ідентифікатор події (
event_id). Перед обробкою перевіряється, чи не оброблялася вона раніше. - Зберігання історії оброблених подій (таблиця «processed_events»).
- Перевірка стану перед дією, наприклад «якщо замовлення вже оплачене, не повторювати».
- Ідемпотентні операції в базі:
INSERT ... ON CONFLICT DO NOTHING,UPSERT,SETзамістьADD.
Приклад
Подія PaymentReceived приходить двічі.
Сервіс перевіряє payment_id у таблиці: якщо вже оброблено, просто ігнорує дублікат.
Підсумок:
Idempotency захищає подієву архітектуру від дубльованих повідомлень. Вона гарантує, що навіть за повторної доставки результат залишиться коректним, а система - узгодженою.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.