GH GambleHub

प्रतिकृति और अंतिम स्थिरता

प्रतिकृति और अंतिम स्थिरता

1) अंतिम स्थिरता क्यों

जब सिस्टम को ज़ोन/क्षेत्रों द्वारा वितरित किया जाता है, तो हर जगह तुल्यकालिक रिकॉर्डिंग नेटवर्क विफलताओं के मामले में उच्च विलंबता और कम उपलब्धता देती अंतिम स्थिरता (EC) के लिए प्रतिकृतियों के अस्थायी मिसलिग्नमेंट की अनुमति देता है:
  • कम रिकॉर्डिंग देरी (स्थानीय स्वागत),
  • नेटवर्क विभाजन के दौरान बेहतर उपलब्धता,
  • क्षैतिज स्केलिंग।

प्रमुख कार्य नियंत्रित शिथिलता है: उपयोगकर्ता "काफी ताजा" डेटा देखता है, डोमेन अपरिवर्तनों को संरक्षित किया जाता है, संघर्षों का पता लगाया जाता है और अनुमानित रूप से हल किया जाता है।


2) संगति मॉडल - हम ग्राहक से क्या वादा करते हैं

मजबूत: पढ़ ना तुरंत अंतिम प्रविष्टि देखता है।

बाध्य बासी/पढ़ा-नहीं-पुराना-से (RNOT): निशान (LSN/संस्करण/समय) से अधिक पुराना नहीं पढ़ें।

कारण: एक "कारण" संबंध (ए से बी) बनाए रखा जाता है।

रीड-योर-राइट्स: एक ग्राहक अपनी हालिया रिकॉर्डिंग देखता है।

मोनोटोनिक रीड्स: हर अगला पढ़ा "वापस लुढ़का हुआ नहीं है।"

सत्र: एक सत्र में गारंटी का एक सेट।

अंततः यदि कोई नई प्रविष्टियाँ नहीं हैं, तो सभी प्रतिकृतियाँ अभिसरण करती हैं।

अभ्यास: महत्वपूर्ण रास्तों पर सत्र + आरएनओटी और स्टोरफ्रंट/कैश पर अंतिम संयोजन करें।


3) प्रतिकृति: यांत्रिकी और एंटी-एन्ट्रापी

सिंक्रोनस (कोरम/आरएएफटी): एन नोड्स द्वारा पुष्टि के बाद रिकॉर्ड को सफल माना जाता है; न्यूनतम RPO, p99 से ऊपर।

अतुल्यकालिक: नेता स्थानीय रूप से प्रतिबद्ध है, बाद में लॉग वितरित करता है; कम विलंबता, RPO> 0।

भौतिक (WAL/binlog): तेज, सजातीय।

तार्किक/सीडीसी: पंक्ति/घटना स्तर परिवर्तन प्रवाह, लचीला रूटिंग, फ़िल्टर।

एंटी-एन्ट्रापी: आवधिक सुलह और मरम्मत (मर्कल पेड़, हैश तुलना, पृष्ठभूमि फिर से सिंक)।


4) संस्करण पहचानकर्ता और कारण आदेश

मोनोटोन संस्करण: वृद्धि/एलएसएन/युग; सरल, लेकिन समानतावाद को एनकोड नहीं करते हैं।

लैम्पोर्ट टाइमस्टैम्प: तार्किक घड़ी द्वारा आंशिक क्रम।

सदिश घड़ी: समानांतर शाखाओं को ठीक करता है और आपको परस्पर विरोधी अद्यतन (समवर्ती) का पता लगाने की अनुमति देता है।

हाइब्रिड/ट्रूटाइम/क्लॉक-एसआई: वैश्विक व्यवस्था के लिए "टी से पहले नहीं" तर्क।

सिफारिश: सीआरडीटी/परस्पर विरोधी अपडेट के लिए - वेक्टर घड़ी; "पुराने नहीं" के लिए - एलएसएन/जीटीआईडी।


5) संघर्ष: डिस्कवरी और रिज़ॉल्यूशन

विशिष्ट स्थितियां: दो क्षेत्रों से एक ही वस्तु तक रिकॉर्डिंग।

रणनीतियाँ:

1. अंतिम-राइट-विन्स (LWW) घंटे/तार्किक स्टांप द्वारा - सरल, लेकिन अपडेट "खो" सकता है।

2. डोमेन तर्क द्वारा फ़ंक्शन मिलाएँ:
  • काउंटर फ़ील्ड जोड़े जाते हैं (जी-काउंटर/पीएन-काउंटर),
  • सेट को "ऐड-विन/रिक्त-जीत" के साथ जोड़ा जाता है,
  • मात्रा/शेष - केवल लेनदेन पत्रिकाओं के माध्यम से, एक साधारण LWW के माध्यम से नहीं।
  • 3. CRDT (अभिसरण प्रकार): जी-काउंटर, या-सेट, LWW-रजिस्टर, सूचियों के लिए RGA।
  • 4. परिचालन परिवर्तन (शायद ही कभी डेटाबेस के लिए, संपादकों के लिए अधिक बार)।
  • 5. मैनुअल रिज़ॉल्यूशन: "इनबॉक्स" में संघर्ष, उपयोगकर्ता सही संस्करण का चयन करता है।

नियम: डोमेन आक्रमणकारी रणनीति तय करते हैं। पैसे/शेष के लिए - LWW से बचें; क्षतिपूरित लेन - देन/घटनाओं का उपयोग करें।


6) रिकॉर्ड वारंटी और पहचान

कमांड पर पहचान कुंजियाँ (भुगतान, निकालना, बनाना) → रीट्री सुरक्षित है।

इनबॉक्स और आउटबॉक्स डीडुप्लिकेशन द्वारा पहचान कुंजी/सीरियल नंबर।

बिल्कुल एक बार मजबूत परिसर के बिना अप्राप्य है; कम से कम-एक बार + पहचान का अभ्यास करें।

आउटबॉक्स/इनबॉक्स पैटर्न: डेटाबेस को लिखना और घटना को प्रकाशित करना परमाणु (स्थानीय लेनदेन) है, जो प्राप्तकर्ता प्रक्रियाओं को पहचान-कुंजी द्वारा करता है।


7) कोई पुराना एक्स रीड नहीं (RNOT)

तकनीशियन:
  • LSN/GTID गेट: क्लाइंट न्यूनतम संस्करण (राइट रिस्पांस से) प्रसारित करता है, राउटर/प्रॉक्सी प्रतिकृति को भेजता है जो LSN ≥ X के साथ पकड़ा जाता है, अन्यथा - नेता को।
  • समय-सीमा: "2 सेकंड से अधिक पुराना नहीं" - संस्करणों के बिना एक सरल एसएलए।
  • सत्र पिनिंग: एन सेकंड रिकॉर्ड करने के बाद, हम केवल नेता (रीड-योर-राइट्स) पढ़ ते हैं।

8) प्रवाह और कैश बातचीत बदलें

सीडीसी → इवेंट बस (काफ्का/पल्सर) → उपभोक्ता (कैश, इंडेक्स, स्टोरफ्रंट)।

कैश विकलांगता: विषय 'अमान्य: {ns}: {id}'; पहचान प्रसंस्करण।

पुनर्निर्माण/बैकफिल: यदि समन्वयन से बाहर, घटना लॉग से अनुमानों को फिर से इकट्ठा करें।


9) सागा और मुआवजे (अंतर-सेवा लेनदेन)

ईसी की दुनिया में, लंबे समय तक चलने वाले कार्यों को प्रतिपूरक कार्यों के साथ चरणों में विभाजित किया जाता है:
  • ऑर्केस्ट्रेशन: समन्वयक चरणों और उनके मुआवजे को बुलाता है।
  • कोरियोग्राफी: कदम घटनाओं पर प्रतिक्रिया करते हैं और खुद को प्रकाशित करते हैं।

इनवेरिएंट्स (उदाहरण): "बैलेंस ≥ 0" - चरण सीमाओं पर जाँच करें + विचलन के लिए मुआवजा।


10) बहु-क्षेत्र और नेटवर्क विभाजन

स्थानीय-लेखन, असिंक-प्रतिकृति: स्थानीय क्षेत्र + अन्य (ईसी) पर लिखें।

भू-बाड़लगाना: डेटा क्षेत्र के लिए "चिपका हुआ" है (कम विलंबता, कम संघर्ष)।

सीपी डेटा के लिए कोरम डेटाबेस (रफ); कैश/स्टोरफ्रंट - एपी/ईसी।

स्प्लिट-ब्रेन प्लान: यदि संचार खो जाता है, तो क्षेत्र डोमेन सीमा (बाड़लगाना, कोटा लिखना) के भीतर काम करना जारी रखते हैं, फिर सामंजस्य


11) अवलोकन और एसएलओ

मेट्रिक्स:
  • प्रतिकृति अंतराल: समय/एलएसएन-दूरी/ऑफसेट (p50/p95/p99)।
  • गतिरोध: प्रतिक्रियाओं का प्रतिशत जो सीमा से ऊपर हैं (उदाहरण के लिए,> 2s या LSN
  • संघर्ष दर: संघर्षों की दर और सफल विलय।
  • अभिसरण समय: शिखर के बाद प्रतिकृतियों का अभिसरण समय।
  • सामंजस्य बैकलॉग: वॉल्यूम/लैगिंग बैचों का समय।
  • डेटा श्रेणी (सीपी/एपी) द्वारा आरपीओ/आरटीओ।
अलर्ट:
  • लैग> लक्ष्य, संघर्ष में वृद्धि, असंभवता की "लंबी" खिड़कियां।

12) ईसी डेटा स्कीम डिजाइन

प्रत्येक प्रविष्टि में स्पष्ट संस्करण/वेक्टर (कॉलम 'संस्करण', 'vc')।

महत्वपूर्ण अपरिवर्तनों (संतुलन, अभिवृद्धि) के लिए केवल लॉग-लॉग जोड़ें।

आदेश और कमी के लिए घटना पहचानकर्ता (स्नोफ्लेक/यूएलआईडी)।

कम्यूटेटिव फील्ड्स (काउंटर, सेट) → सीआरडीटी उम्मीदवार।

एपीआई डिजाइन: इफ-मैच/एटैग के साथ पुट, पूर्व शर्त के साथ पैच।


13) भंडारण और पठन पैटर्न

मॉडल/CQRS पढ़ें: "स्रोत" को लिखना, अनुमानों से पढ़ ना (प्रदर्शन "अद्यतन"... के पीछे पिछड़ सकता है)।

बासी-ओके मार्ग (कैटलॉग/टेप) बनाम स्ट्रिक्ट (बटुआ/सीमा)।

अनुरोध में स्टिकी/बाउंडेड-बासी झंडे (हेडर 'एक्स-रीड-स्थिरता')।


14) कार्यान्वयन चेकलिस्ट (0-45 दिन)

0-10 दिन

डेटा को वर्गीकृत करें: सीपी-क्रिटिकल (पैसा, ऑर्डर) बनाम ईयू/स्टील-ओके (कैटलॉग, सर्च इंडेक्स)।

स्टील एसएलओ को परिभाषित करें (उदा। "2s से पुराना नहीं"), लक्ष्य लैग्स।

API में ऑब्जेक्ट वर्शनिंग और पहचान कुंजी सक्षम करें.

11-25 दिन

सीडीसी और आउटबॉक्स/इनबॉक्स, कैश विकलांगता मार्गों को लागू करें।

RNOT (LSN गेट) और सत्र पिनिंग को लिखने के लिए महत्वपूर्ण पथ जोड़ें.

कम से कम एक मर्ज रणनीति (LWW/CRDT/डोमेन) और संघर्ष लॉग को लागू करें।

26-45 दिन

एंटी-एन्ट्रापी (सुलह/मरम्मत) और स्टाइल रिपोर्ट स्वचालित करें।

खेल-दिवस बिताएं: नेटवर्क अलगाव, संघर्षों में वृद्धि, वसूली।

डैशबोर्ड पर दृश्य: अंतराल, गतिशीलता, संघर्ष दर, अभिसरण।


15) एंटी-पैटर्न

महत्वपूर्ण अपरिवर्तनों के लिए ब्लाइंड LWW (धन/अंक का नुकसान)।

पुनर्मुद्रण के दौरान संचालन के दोहराव → पहचान की कमी।

पूरे "मजबूत" मॉडल पर अत्यधिक p99 पूंछ और विफलताओं के मामले में नाजुकता।

कोई RNOT/सत्र → UX "ब्लिंक" की गारंटी नहीं देता है, "उपयोगकर्ता" अपने परिवर्तनों को नहीं देखते हैं।

छुपा हुआ कैश और स्रोत मिसलिग्नमेंट (कोई सीडीसी/विकलांगता नहीं)।

एक सामंजस्य/एंटी-एन्ट्रापी टूल की कमी - डेटा "सदियों के लिए" विचलन।


16) परिपक्वता मैट्रिक्स

प्रतिकृति अंतराल p95 ≤ लक्ष्य (उदाहरण के लिए, एक क्षेत्र के भीतर ≤ 500 ms, ≤ 2 s अंतर-क्षेत्र)।

स्टेलेस एसएलओ "सख्त" मार्गों पर ≥ 99% अनुरोध किया जाता है।

संघर्ष समाधान सफलता ≥ 99। 9%, औसत रिज़ॉल्यूशन समय ≤ 1 मिनट।

चोटियों के बाद अभिसरण समय - मिनट, घंटे नहीं।

"मनी" लेनदेन का 100% पहचान कुंजी और आउटबॉक्स/इनबॉक्स द्वारा कवर किया जाता है।


17) व्यंजनों (स्निपेट्स)

इफ- मिलान/ETag (HTTP)


PUT /profile/42
If-Match: "v17"
Body: { "email": "new@example.com" }

यदि संस्करण बदल गया है - '412 पूर्व शर्त विफल' - क्लाइंट विरोध को हल करता है।

क्वेरी "LSN से पुराना नहीं" (छद्म)


x-min-lsn: 16/B373F8D8

राउटर 'replay _ lsn-x-min-lsn' के साथ एक प्रतिकृति चुनता है, अन्यथा यह नेता है।

सीआरडीटी जी-काउंटर (विचार)

प्रत्येक क्षेत्र अपना काउंटर रखता है; कुल - सभी घटकों का योग प्रतिकृति - ऑपरेशन कम्यूटेटिव है।


18) निष्कर्ष

अंततः स्थिरता गुणवत्ता का समझौता नहीं है, लेकिन एक सचेत अनुबंध है: कहीं न कहीं हम गति और उपलब्धता के लिए ताजगी का भुगतान करते हैं, लेकिन हम डोमेन रणनीतियों और उपकरणों के साथ महत्वपूर्ण आक्रमणकारियों की रक्षा करते हैं। संस्करण, पहचान, आरएनओटी/सत्र वारंटी, सीडीसी और एंटी-एन्ट्रापी दर्ज करें, माप लैग/गतिशीलता/संघर्ष - और आपकी वितरित प्रणाली तेज, स्थिर और अनुमानित रूप से ग्लिच और पीक लोड के तहत भी परिवर्तित होगी।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।