Проверяет понимание идемпотентности сообщений и механизмов дедупликации на стороне сервера при повторных отправках.
Когда клиент отправляет сообщение по сети, ответ может потеряться: сервер сохранил данные, но подтверждение не дошло. Клиент повторяет отправку, и без защиты на сервере появится дубликат. Чтобы этого избежать, вводится идентификатор, по которому сервер отличает новое сообщение от повтора уже сохранённого.
Сервер хранит множество уже обработанных ключей — в памяти, Redis или таблице БД с уникальным индексом. При приходе сообщения он проверяет ключ: если он есть, сообщение игнорируется и возвращается прежний результат; если нет — обрабатывается и ключ сохраняется.
// Пример на Node.js с Redis
async function handleMessage(msg) {
const key = msg.idempotencyKey;
const exists = await redis.set(key, '1', 'NX', 'EX', 86400);
if (!exists) {
return { status: 'duplicate' }; // уже обрабатывали
}
await saveToDb(msg);
return { status: 'ok' };
}
Итог: идентификатор — это контракт между клиентом и сервером, позволяющий безопасно повторять отправку. Применяйте такой подход в платежах, очередях и любых API, где важна идемпотентность.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию