प्लेबुक

भुगतान कर्मियों के लिए एल्गोरिदम पुनः प्रयास करें (Retry Algorithms For Payment Workers)

एक्सपोनेंशियल बैकऑफ़, जिटर, कैप, डिफर बनाम रिट्री डिफरेंस, और सर्किट ब्रेकर - पिछले सेक्शन से टैक्सोनॉमी को वर्किंग कोड में अनुवाद करें।

वितरित भुगतान इंजन

भाग 12 का 22

वितरित भुगतान आर्किटेक्चर की एक श्रृंखला जो कैप्चर और पूर्ण के बीच के अंतर को पाटती है।

Distributed payment engine architecture diagram

हमने पिछले अनुभाग में चार त्रुटि श्रेणियां परिभाषित की थीं। यह खंड उन तीन श्रेणियों के लिए वास्तविक एल्गोरिदम सेट करता है जो पुन: प्रयास योग्य हैं (पोस्ट-टाइमआउट क्वेरी, दर सीमित, बुनियादी ढांचा): कितनी देर तक इंतजार करना है, कितनी बार प्रयास करना है, कब पूरी तरह से रुकना है और सर्किट ब्रेकर चालू करना है।```text Attempt 1 → başarısız → bekle (backoff) → Attempt 2 → başarısız → bekle (daha uzun) → Attempt 3 → başarısız → cap'e ulaşıldı → defer / dead-letter


## पहले उल्लेख पर अवधारणाएँ```text
📦 Exponential Backoff
Her denemede bekleme süresini katlayarak artıran strateji: base * 2^attempt.

📦 Jitter
Backoff süresine eklenen rastgele sapma; çok sayıda worker'ın aynı anda tekrar denemesini (thundering herd) önler.

📦 Cap
Bekleme süresinin ve/veya deneme sayısının üst sınırı; sonsuz retry döngüsünü engeller.

📦 Circuit Breaker
Bir bağımlılık sürekli başarısız olduğunda istekleri tamamen durduran, zamanla yeniden deneyen koruma mekanizması.
```जिटर-मुक्त बैकऑफ़ के कारण एक ही समय में विफल होने वाली सैकड़ों नौकरियां एक ही मिलीसेकंड में पुनः प्रयास करने में विफल हो जाती हैं - पहले से ही तनावग्रस्त पीएसपी को और भी बदतर स्थिति में डाल देती है।

## बैकऑफ़ फ़ॉर्मूला और लगातार इंतज़ार करना पर्याप्त क्यों नहीं है

निर्धारित 1-सेकंड प्रतीक्षा सरल है, लेकिन इसमें दो समस्याएं हैं: यदि पीएसपी शॉर्ट बर्स्ट से गुजर रहा है तो 1 सेकंड पर्याप्त नहीं हो सकता है; यदि पीएसपी पहले ही ठीक हो चुका है, तो 1 सेकंड अनावश्यक सुस्ती है। पहले प्रयासों में घातीय बैकऑफ़ तेज़ है और बाद के प्रयासों में अधिक सतर्क है:```text
delay = min(cap, base * 2^attempt) + random(0, jitterRange)

attempt 0 → ~200ms
attempt 1 → ~400ms
attempt 2 → ~800ms
attempt 3 → ~1600ms
...
attempt N → cap'e ulaşır (örn. 30s)
```घबराहट को शामिल किए बिना, यह फॉर्मूला खतरनाक है: एक ही समय में विफल होने वाले सभी कर्मचारी ठीक 200ms, 400ms, 800ms के बाद फिर से प्रयास करते हैं और PSP को समकालिक तरंगों में हिट करते हैं। एक यादृच्छिक राशि (`full jitter` या `decorrelated jitter`) जोड़ने से यह तरंग उत्सर्जित होती है।

## पुनः प्रयास और स्थगित के बीच अंतर

**पुनः प्रयास करें**, कार्यकर्ता थोड़ी प्रतीक्षा के बाद उसी प्रक्रिया में उसी अनुरोध को पुनः प्रयास करता है - आमतौर पर सेकंड के भीतर। **डिफ़र** तब होता है जब कार्य को डेटाबेस या कतार में वापस डाल दिया जाता है और एक निश्चित अवधि (मिनट या घंटे) के बाद फिर से लिया जाता है। दर सीमित त्रुटि का समाधान आमतौर पर पुनः प्रयास द्वारा किया जाता है; लेकिन अगर पीएसपी स्वयं बड़े पैमाने पर आउटेज का अनुभव कर रहा है, तो मिनटों के लिए पुनः प्रयास लूप में रहने से कार्यकर्ता और संसाधन खत्म हो जाएंगे - जिस बिंदु पर कार्य को थोड़ी देर के लिए 'सोने' के लिए स्थगित करना एक सुरक्षित तरीका है।```text
Rate limited → retry (saniyeler, backoff ile)
Uzun süreli PSP kesintisi → defer (dakikalar, ayrı bir zamanlanmış tekrar)
```## सर्किट ब्रेकर: कब प्रयास करना पूरी तरह से बंद कर देना चाहिए

जब किसी निर्भरता के लिए अनुरोध बार-बार विफल होते हैं, तो प्रत्येक नया अनुरोध पहले से ज्ञात परिणाम को पुन: उत्पन्न करने के अलावा और कुछ नहीं करता है; यह केवल संसाधनों का उपभोग करता है और विलंबता को बढ़ाता है। सर्किट ब्रेकर तीन अवस्थाओं में संचालित होता है:```text
Closed   → istekler normal şekilde gönderilir
  │ hata eşiği aşıldı
  ▼
Open     → istekler hemen reddedilir, PSP'ye hiç gitmez
  │ soğuma süresi geçti
  ▼
Half-Open → sınırlı sayıda deneme istek gönderilir
  ├─ başarılı → Closed
  └─ başarısız → Open
```सर्किट ब्रेकर पुनः प्रयास का स्थान नहीं लेता; यह एक ऊपरी परत है जो उस क्षण का पहले ही पता लगा लेती है जब पुनः प्रयास से अपशिष्ट उत्पन्न होता है। जब ब्रेकर चालू हो, तो श्रमिकों को खुद को स्थगित कतार में ले जाना चाहिए और व्यर्थ प्रयास जारी नहीं रखना चाहिए।

## कितने प्रयास, कितनी कैप

ये संख्याएँ मनमानी नहीं होनी चाहिए; यह पीएसपी के अपने एसएलए और कार्य के व्यावसायिक मूल्य के अनुरूप होना चाहिए। उच्च-मूल्य भुगतान के लिए, 8-10 प्रयास और 5 मिनट की कुल अवधि उचित हो सकती है; कम प्राथमिकता वाली पृष्ठभूमि प्रक्रिया के लिए, 3 प्रयास पर्याप्त हो सकते हैं।

## अक्सर भ्रमित होने वाले भेद```text
❌ Retry = defer
✓ Retry saniyeler içinde aynı process'te olur; defer işi dakikalarca bekletir

❌ Jitter isteğe bağlı bir iyileştirmedir
✓ Jitter'sız backoff, thundering herd riskini gerçek hale getirir

❌ Circuit breaker retry'ın alternatifidir
✓ Circuit breaker, retry'ı ne zaman durduracağını söyleyen üst katmandır
```## पूर्ण घबराहट बनाम घबराहट मुक्त बैकऑफ़

| कसौटी | घबराहट मुक्त | पूर्ण घबराहट |
| --- | --- | --- |
| तुल्यकालिक तरंग जोखिम | उच्च | निम्न |
| पीएसपी पर लोड पैटर्न | अचानक चोटियाँ | बिखरा हुआ |
| अनुप्रयोग जटिलता | निम्न | कम उच्चतर |

## पुन: प्रयास एल्गोरिदम सेट करते समय चेकलिस्ट

1. क्या बैकऑफ़ फ़ॉर्मूले में कोई सीमा है, या सैद्धांतिक रूप से कूलडाउन अनिश्चित काल तक बढ़ सकता है?
2. क्या जिटर लागू किया गया है या सभी कर्मचारी एक ही समय में पुनः प्रयास कर रहे हैं?
3. क्या दर सीमित और दीर्घकालिक रुकावट के बीच पुनः प्रयास/स्थगित के बीच कोई अंतर किया गया है?
4. क्या सर्किट ब्रेकर चालू होने पर कर्मचारी वास्तव में पीएसपी को अनुरोध भेजना बंद कर देते हैं?
5. क्या प्रयासों की संख्या और कुल विंडो कार्य के वास्तविक कार्य मूल्य द्वारा निर्धारित की गई थी, या यह एक यादृच्छिक संख्या है?
6. क्या सर्किट ब्रेकर के खुले/आधे खुले/बंद ट्रांजिशन की मीट्रिक तरीके से निगरानी की जाती है?

## इस लेख से आपको क्या याद रखना चाहिए

1. अकेले घातीय बैकऑफ़ पर्याप्त नहीं है; बिना किसी झटके के समकालिक तरंगें उत्पन्न करता है।
2. पुनः प्रयास करें और स्थगित करें एक ही क्रिया नहीं हैं: एक सेकंड के लिए है, दूसरा मिनट-घंटे के लिए है।
3. सर्किट ब्रेकर पुनः प्रयास करने का विकल्प नहीं है, बल्कि सुरक्षा की एक परत है जो पहले ही बता देती है कि कब पुनः प्रयास करना बेकार हो जाता है।
4. कार्य के वास्तविक मूल्य के अनुसार प्रयासों की संख्या और सीमा को सचेत रूप से चुना जाना चाहिए।

> एक अच्छा पुनः प्रयास एल्गोरिथ्म विफलता को छिपाता नहीं है; यह विफलता की लागत को नियंत्रित करता है।

अगले भाग में, हम उस ज़मीन पर पहुँचते हैं जहाँ ये पुनर्प्रयास काम करते हैं: डेटाबेस-समर्थित कार्य कतार और लीज़ तंत्र एक ही कार्य को एक ही समय में दो श्रमिकों द्वारा संसाधित होने से कैसे रोकता है?

FAQ

Frequently asked questions

एक्सपोनेंशियल बैकऑफ़ क्या है?

वह रणनीति जो प्रत्येक प्रयास के साथ प्रतीक्षा समय को तेजी से बढ़ाती है: आधार * 2^प्रयास।

घबराना क्या है?

बैकऑफ़ समय में यादृच्छिक विचलन जोड़ा गया; यह कई श्रमिकों को एक ही समय में दोबारा प्रयास करने से रोकता है (झुंड गरजते हुए)।

क्या "पुनःप्रयास=स्थगित" सही है?

पुनः प्रयास उसी प्रक्रिया में सेकंड के भीतर होता है; स्थगित करने से कार्य को मिनटों तक इंतजार करना पड़ता है

यह अनुभाग क्या ठीक करता है?

यहां दो अलग-अलग क्रियाओं को भ्रमित नहीं किया जाना चाहिए: एक ही कार्यकर्ता के भीतर तुरंत पुनः प्रयास करने के लिए **पुनः प्रयास करें**; यदि **स्थगित** करें, तो कार्य को कुछ समय तक प्रतीक्षा में रखें और फिर उसे वापस कतार में रख दें। वे दोनों 'फिर से प्रयास करें' जैसे लगते हैं लेकिन समय और जिम्मेदारी अलग-अलग हैं। अकेले घातीय बैकऑफ़ पर्याप्त नहीं है; बिना किसी झटके के समकालिक तरंगें उत्पन्न करता है। हमने पिछले अनुभाग में चार त्रुटि श्रेणियां परिभाषित की थीं। यह खंड उन तीन श्रेणियों के लिए वास्तविक एल्गोरिदम सेट करता है जो पुन: प्रयास योग्य हैं (पोस्ट-टाइमआउट क्वेरी, दर सीमित, बुनियादी ढांचा): कितनी देर तक इंतजार करना है, कितनी बार प्रयास करना है, कब पूरी तरह से रुकना है और सर्किट ब्रेकर चालू करना है।

इंजीनियरिंग सिद्धांत सीखे गए

  • जिटर-मुक्त बैकऑफ़ समकालिक विफलता तरंगें उत्पन्न करता है।
  • पुनः प्रयास करना सेकंड है, स्थगित करना मिनट-घंटे है - समान क्रिया नहीं।
  • जब यह बेकार हो जाता है तो सर्किट ब्रेकर पुनः प्रयास को जल्दी रोक देता है।

जारी रखें पढ़ रहे हैं

जारी रखें पढ़ रहे हैं

श्रृंखला में अगला

निबंध

डेटाबेस समर्थित लीज के साथ काम करता है

सशर्त अद्यतन के साथ लीजिंग, वॉचर जो फंसी हुई नौकरियों को बचाता है और सिर्फ संदेश भेजना ही उत्पादन के लिए भुगतान करने के लिए पर्याप्त क्यों नहीं है।

श्रृंखला में अगला

निबंध

भुगतान त्रुटि वर्गीकरण

टाइमआउट, 429, 5xx, व्यापार में गिरावट और बुनियादी ढांचे की त्रुटि एक ही बात नहीं है। प्रत्येक श्रेणी के लिए एक अलग पुनः प्रयास नीति की आवश्यकता होती है।

वही सिलसिला

निबंध

भुगतान समाधान कार्यकर्ता निर्माण

सफ़ाईकर्मी बहाव में सुधार कैसे करते हैं: जबकि पीएसपी सफल है, स्थानीय पंजीकरण समाप्त हो सकता है; वृद्धावस्था को कैसे पुनर्प्राप्त करें फाइनलाइज पेंडिंग।

Paylaş