Idempotency అంటే ఒక ఆపరేషన్ను అనేకసార్లు చేయడం ఒకసారి చేసిన అదే ప్రభావాన్ని కలిగి ఉంటుంది. ఇది ముఖ్యం ఎందుకంటే networks నమ్మదగనివి: ఒక client ఒక request పంపి response ఎప్పటికీ రాకపోతే, server దాన్ని ప్రాసెస్ చేసిందో లేదో చెప్పలేదు. అది retry చేస్తే, ఒక non-idempotent ఆపరేషన్ రెండుసార్లు నడవవచ్చు.
సమస్య
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, , సహజంగా idempotent, కాబట్టి వాటిని retry చేయడం సురక్షితం. — నకిలీ charges మరియు నకిలీ orders సరిగ్గా ఇక్కడి నుండి వస్తాయి.
