جلوگیری از درخواستهای تکراری با Idempotency
یکی از مشکلات رایج در سیستمها اینه که ممکنه یک درخواست بیشتر از یک بار ارسال بشه. مثلا کاربر روی دکمه پرداخت دوبار کلیک کنه، یا پرداخت با موفقیت انجام بشه ولی پاسخ به خاطر مشکل شبکه به کلاینت نرسه و کاربر دوباره درخواست پرداخت بفرسته.
اینجا Idempotency کمک میکنه یک درخواست حتی اگر چند بار ارسال بشه، فقط یک بار پردازش بشه. برای این کار معمولا یک Idempotency Key همراه درخواست ارسال میکنیم. سرور این کلید رو ذخیره میکنه و اگر دوباره همون کلید رو ببینه، به جای پردازش مجدد نتیجه درخواست قبلی رو برمیگردونه.
یکی از راههای ساده برای پیادهسازی این موضوع استفاده از Unique Constraint دیتابیسه. درخواست اول با موفقیت رکورد مربوط به کلید رو ثبت میکنه. ولی اگر درخواست دوم با همون کلید برسه، ثبت رکورد به خاطر تکراری بودن کلید fail میشه و سرور میفهمه که این درخواست قبلا پردازش شده.
#system_design_interview_volume_2
@techstuff100
Post #306
1.68K

- ❤ 7
- 👏 2