प्लेबुक
अंततः वितरित लेन-देन से बेहतर संगति क्यों है? (Why Eventual Consistency Beats Distributed Transactions)
पीएसपी, ऑर्डर और वित्त के बीच 2पीसी स्थापित करना एक जाल है। सागा और सुलह वितरित भुगतान स्थिरता का वास्तविक उत्तर हैं।
वितरित भुगतान इंजन
भाग 16 का 22
वितरित भुगतान आर्किटेक्चर की एक श्रृंखला जो कैप्चर और पूर्ण के बीच के अंतर को पाटती है।
इन आठ अध्यायों में, हमने प्रदाता अमूर्तन के साथ शुरुआत की और सिमेंटिक घटनाओं, त्रुटि वर्गीकरण, पुनः प्रयास एल्गोरिदम, पट्टा, सुलह और अनाथ चार्ज अनुकूलन की ओर प्रगति की। उन सभी में अंतर्निहित सामान्य प्रश्न अब स्पष्ट रूप से पूछा जा सकता है: हम इतनी सारी जटिलताएँ क्यों झेलते हैं? हम पीएसपी, ऑर्डर और वित्तीय रिकॉर्ड को एक ही लेनदेन में क्यों नहीं जोड़ते और इन सभी समस्याओं को एक ही बार में हल नहीं करते?
उत्तर सरल और अंतिम है: पीएसपी कभी भी आपके लेनदेन में भाग नहीं ले सकता।```text 2PC'nin gerektirdiği Coordinator ←→ Participant 1 (Order DB) Coordinator ←→ Participant 2 (Finance DB) Coordinator ←→ Participant 3 (PSP??)
Gerçek dünyada PSP Kendi transaction protokolünü çalıştırmaz Kendi ağ sınırında, kendi tutarlılık modeliyle yaşar Sizin 'prepare' veya 'commit' sinyalinizi anlamaz
## पहले उल्लेख पर अवधारणाएँ```text
📦 Two-Phase Commit (2PC)
Birden fazla katılımcının bir işlemi ya tamamen kabul (commit) ya da tamamen reddetmesini (rollback) sağlayan protokol.
📦 Saga
Tek bir ACID transaction'a sığmayan bir iş akışını, her adımın kendi telafi (compensation) adımına sahip olduğu bir dizi yerel işleme bölen desen.
📦 Eventual Consistency
Sistemin her an tutarlı olmayabileceğini, ama belirli bir süre içinde tutarlı bir duruma yakınsayacağını kabul eden model.
📦 Reconciliation olarak backstop
Saga'nın telafi adımları başarısız olduğunda veya atlandığında, sistemi gerçek duruma geri getiren son güvenlik ağı.
```2PC के लिए सभी प्रतिभागियों के लिए समान समन्वयक, समान प्रोटोकॉल और समान नेटवर्क विश्वसनीयता धारणा की आवश्यकता होती है। पीएसपी इनमें से किसी भी धारणा को स्वीकार नहीं करता है - यह आपके नियंत्रण से बाहर एक प्रणाली है, जो अपने स्वयं के एसएलए, अपने स्वयं के एपीआई और अपने स्वयं के त्रुटि मॉडल पर चल रही है।
## PSP 2PC से क्यों नहीं जुड़ सकता
यहां तक कि अगर आप किसी पीएसपी को 'तैयार' अनुरोध भेजना चाहते हैं और फिर 'कमिट' या 'रोलबैक' भेजना चाहते हैं, तो पीएसपी इस दो-चरण प्रोटोकॉल का समर्थन नहीं करता है - क्योंकि कार्ड, बैंकिंग नेटवर्क और धोखाधड़ी जांच पहले से ही अपना स्वयं का (ज्यादातर एकल-चरण) निर्णय लेते हैं। पीएसपी का एपीआई आपको यह नहीं बताता कि 'रुको, मैं बाद में निर्णय लूंगा'; यह कहता है 'ऐसा हुआ' या 'ऐसा नहीं हुआ'। यदि आपके सिस्टम पर दूसरा चरण (प्रतिबद्धता) विफल हो जाता है, तो PSP द्वारा लेन-देन वापस करने की कोई अवधारणा नहीं है; हालाँकि, एक अलग रिफंड अनुरोध है - जो स्वयं एक अतुल्यकालिक, गैर-गारंटी वाला ऑपरेशन है।```text
2PC'nin varsaydığı dünya
Prepare → tüm katılımcılar 'hazırım' der → Commit → hepsi aynı anda kabul eder
PSP'nin gerçek dünyası
Charge isteği → PSP kendi kararını anında verir → sonuç kesindir
Geri almak istersen → ayrı bir Refund isteği, ayrı bir asenkron süreç
```## गाथा: स्थानीय निर्णयों की श्रृंखला
2PC को प्रतिस्थापित करने वाला दृष्टिकोण यह है कि प्रत्येक सिस्टम अपने स्वयं के स्थानीय लेनदेन को निष्पादित करता है और केवल घटना के साथ अगले चरण पर आगे बढ़ता है। यदि कोई चरण विफल हो जाता है, तो पिछले चरण पूर्ववत नहीं किए जाते हैं; प्रत्येक को अपनी स्वयं की प्रतिपूरक कार्रवाई द्वारा ठीक किया जाता है।```text
Charge PSP'de başarılı
→ sipariş oluştur (yerel transaction)
→ finans kaydı oluştur (yerel transaction)
Finans kaydı başarısız olursa
→ sipariş için telafi: siparişi iptal et
→ PSP için telafi: refund isteği gönder
```यह 'पकड़ना आसान है, अंतिम रूप देना कठिन है' सत्य का प्रत्यक्ष परिणाम है जो हमने इस श्रृंखला में पहले देखा था: अंतिम रूप देने की कठिनाई वास्तव में गाथा के मुआवजे के चरणों को डिजाइन करने की कठिनाई है।
## वाचा: गाथा का सुरक्षा जाल
सागा इस बात की गारंटी नहीं देता है कि मुआवजे के कदम हमेशा काम करेंगे - मुआवजे का अनुरोध विफल भी हो सकता है, नेटवर्क डाउन हो सकता है, कर्मचारी क्रैश हो सकता है। इसलिए पिछले अध्यायों में हमने जो कुछ भी स्थापित किया है (पट्टा, सर्वसम्मति कार्यकर्ता, अनाथ प्रभार सुधार) एक दूसरी परत है जो उन क्षणों को साफ करती है जब अकेले गाथा पर्याप्त नहीं होती है।```text
Saga (birincil yol)
→ adım adım ilerler, her adım kendi telafisine sahiptir
Reconciliation (ikincil güvenlik ağı)
→ saga'nın atladığı veya başarısız olduğu durumları periyodik olarak tarar ve düzeltir
```## अंतिम स्थिरता की वास्तविक लागत: खिड़की, स्थिरता नहीं
अंततः स्थिरता का मतलब यह नहीं है कि 'डेटा किसी समय गलत हो सकता है'; इसका मतलब है कि 'डेटा कुछ समय के लिए अधूरा या पुराना हो सकता है, लेकिन यह अवधि मापी और सीमित होती है।' यह विंडो उत्पाद पक्ष पर दिखाई देनी चाहिए: ग्राहक द्वारा भुगतान करने के बाद ऑर्डर की स्थिति प्रदर्शित होने में कितने सेकंड/मिनट लग सकते हैं? यह एक उत्पाद निर्णय है, तकनीकी नहीं, और यह उसका सार है जिसकी हम इस श्रृंखला की शुरुआत से वकालत कर रहे हैं: वितरित भुगतान प्रणाली में पूर्ण तात्कालिक स्थिरता एक भ्रम है; वास्तविक लक्ष्य विसंगति की एक छोटी, मापी गई और देखने योग्य खिड़की है।
| दृष्टिकोण | वारंटी | क्या यह वास्तव में संभव है |
| --- | --- | --- |
| 2पीसी (पीएसपी सहित) | तुरंत, पूर्ण स्थिरता | नहीं - पीएसपी भाग नहीं ले सकता |
| सागा + मुआवज़ा | चरण दर चरण प्रगति, पूर्वव्यापी सुधार | हाँ |
| सागा + सुलह | मध्यम, सीमित असंगति विंडो | हाँ - यह श्रृंखला जिस मॉडल की अनुशंसा करती है |
## अक्सर भ्रमित होने वाले भेद```text
❌ Eventual consistency = tutarsız sistem
✓ Eventual consistency = ölçülü, sınırlı bir pencere içinde tutarlılığa yakınsama
❌ Saga, 2PC'nin daha basit bir versiyonudur
✓ Saga farklı bir modeldir: geri alma yoktur, telafi vardır
❌ Mutabakat, saga'nın tasarım hatasını gösterir
✓ Mutabakat, dağıtık sistemin doğasında olan kalıcı bir güvenlik ağıdır, saga'nın eksikliği değil
```## 2पीसी और सागा+सुलह के बीच तुलना
| कसौटी | 2पीसी | सागा + सुलह |
| --- | --- | --- |
| पीएसपी की भागीदारी | आवश्यक लेकिन संभव नहीं | आवश्यक नहीं |
| तालाबंदी का समय | सभी प्रतिभागियों के बीच | कोई नहीं |
| आंशिक दोष सहनशीलता | निम्न | उच्च |
| परिचालन जटिलता | सिद्धांत में कम, व्यवहार में असंभव | उच्च लेकिन वास्तविक |
## इस मॉडल का मूल्यांकन करते समय चेकलिस्ट
1. क्या सिस्टम में प्रत्येक बाहरी निर्भरता (PSP सहित) समान लेनदेन प्रोटोकॉल में भाग ले सकती है? यदि 2पीसी में भाग लेने में असमर्थ हैं तो यह कोई विकल्प नहीं है।
2. क्या प्रत्येक गाथा चरण में स्पष्ट रूप से परिभाषित प्रतिपूरक कार्रवाई होती है?
3. जब उपचारात्मक कार्रवाई विफल हो जाती है तो क्या होता है - क्या यह चुपचाप गायब हो जाता है या इसे आम सहमति से पकड़ लिया जाता है?
4. क्या अंतिम स्थिरता विंडो को मापा जाता है और उत्पाद टीम के साथ साझा किया जाता है?
5. क्या सिस्टम का लक्ष्य 'हर समय सुसंगत' के भ्रम के बजाय 'अल्प समय में सुसंगत' की वास्तविकता है?
## इन आठ अध्यायों से आपको क्या याद रखना चाहिए
1. पीएसपी एक बाहरी प्रणाली है और यह कभी भी आपके लेनदेन प्रोटोकॉल में भाग नहीं ले सकती है; इसीलिए 2पीसी एक जाल है।
2. सागा एक यथार्थवादी विकल्प है जहां प्रत्येक चरण अपने स्वयं के स्थानीय लेनदेन और अपनी स्वयं की क्षतिपूर्ति कार्रवाई को निष्पादित करता है।
3. सर्वसम्मति गाथा की कमी नहीं है, बल्कि वितरित प्रणालियों में निहित एक स्थायी सुरक्षा जाल है।
4. अंततः स्थिरता, असंगति नहीं; यह अभिसरण की एक मापी गई, अवलोकनीय खिड़की है।
> किसी वितरित भुगतान प्रणाली में पूर्ण तात्कालिक स्थिरता की अपेक्षा नहीं की जाती है; जो चाहा गया है वह यह जानना है कि विसंगति कितने समय तक रहेगी।
यह आठ-भाग वाले पथ का निष्कर्ष है जो प्रदाता अमूर्तन के साथ शुरू हुआ: एसडीके लीक को रोकना, सिमेंटिक घटनाओं को उत्पन्न करना, त्रुटियों को सही ढंग से वर्गीकृत करना, पुन: प्रयास को अनुशासित बनाना, पट्टों के साथ सुरक्षित रूप से काम करना, आम सहमति के साथ बहाव को पकड़ना, और सबूत के साथ अनाथ शुल्क का इलाज करना - सभी एक ही सत्य की सेवा करते हैं: एक वितरित भुगतान प्रणाली का लक्ष्य पूर्णता नहीं है, बल्कि नियंत्रित और देखने योग्य असंगतता है।
FAQ
Frequently asked questions
दो-चरणीय प्रतिबद्धता (2पीसी) क्या है?
एक प्रोटोकॉल जो कई प्रतिभागियों को लेनदेन को या तो पूरी तरह से स्वीकार (प्रतिबद्ध) करने या पूरी तरह से अस्वीकार (रोलबैक) करने की अनुमति देता है।
सागा क्या है?
एक पैटर्न जो एक वर्कफ़्लो को विभाजित करता है जो एक एकल एसीआईडी लेनदेन में फिट नहीं हो सकता है, उसे स्थानीय लेनदेन की एक श्रृंखला में विभाजित करता है जहां प्रत्येक चरण का अपना मुआवजा चरण होता है।
क्या "अंतिम संगति = असंगत प्रणाली" सही है?
अंततः स्थिरता = एक रूढ़िवादी, सीमित विंडो के भीतर स्थिरता के लिए अभिसरण
यह अनुभाग क्या ठीक करता है?
वास्तविक दुनिया में, PSP अपना स्वयं का लेनदेन प्रोटोकॉल नहीं चलाता है। यह अपने स्वयं के नेटवर्क सीमा पर, अपने स्वयं के स्थिरता मॉडल के साथ रहता है। यह आपके 'तैयार' या 'प्रतिबद्ध' सिग्नल को नहीं समझता है। ```पीएसपी एक बाहरी प्रणाली है और यह कभी भी आपके लेनदेन प्रोटोकॉल में भाग नहीं ले सकती है; इसीलिए 2पीसी एक जाल है। इन आठ अध्यायों में, हमने प्रदाता अमूर्तन के साथ शुरुआत की और सिमेंटिक घटनाओं, त्रुटि वर्गीकरण, पुनः प्रयास एल्गोरिदम, पट्टा, सुलह और अनाथ चार्ज अनुकूलन की ओर प्रगति की। उन सभी में अंतर्निहित सामान्य प्रश्न अब स्पष्ट रूप से पूछा जा सकता है: हम इतनी सारी जटिलताएँ क्यों झेलते हैं? हम पीएसपी, ऑर्डर और वित्तीय रिकॉर्ड को एक ही लेनदेन में क्यों नहीं जोड़ते और इन सभी समस्याओं को एक ही बार में हल नहीं करते?
इंजीनियरिंग सिद्धांत सीखे गए
- PSP कभी भी आपके लेनदेन प्रोटोकॉल में भाग नहीं ले सकता; इसीलिए 2पीसी एक जाल है।
- सागा पूर्ववत नहीं करता है, यह क्षतिपूर्ति करता है - यह एक अलग मॉडल है।
- अंततः स्थिरता असंगति नहीं है, बल्कि अभिसरण की एक मापी गई और देखने योग्य खिड़की है।
जारी रखें पढ़ रहे हैं
जारी रखें पढ़ रहे हैं
श्रृंखला में अगला
वेबहुक के अंतर्गत आशावादी समवर्तीता
जब वेबहुक के साथ समकालिक प्रतिक्रिया एक ही समय में समान भुगतान को छूती है तो संस्करण टोकन और लीज़ दौड़ को कैसे हल करते हैं? टर्मिनल भुगतान में बासी पढ़ने…
श्रृंखला में अगला
भुगतान किया गया लेकिन कोई ऑर्डर नहीं: सुधार
घटना प्रतिक्रिया गाइड: ग्राहक से शुल्क लिया गया लेकिन कोई ऑर्डर नहीं दिया गया; बहु-इरादतन टोकरी अव्यवस्था; डिडअप को सावधानीपूर्वक साफ करना।
वही सिलसिला
भुगतान समाधान कार्यकर्ता निर्माण
सफ़ाईकर्मी बहाव में सुधार कैसे करते हैं: जबकि पीएसपी सफल है, स्थानीय पंजीकरण समाप्त हो सकता है; वृद्धावस्था को कैसे पुनर्प्राप्त करें फाइनलाइज पेंडिंग।