GH GambleHub

संगतता को आगे बढ़ाएँ

आगे संगतता क्या है

फॉरवर्ड संगतता एक सिस्टम की क्षमता है जो नए ग्राहकों या डेटा के साथ सही ढंग से काम करने की क्षमता है जिसके लिए इसे मूल रूप से डिज़ाइन किया गया था। सरल: नया क्लाइंट आने पर पुराना सर्वर नहीं टूटता है; पुराने उपभोक्ता एक नए संदेश का सामना करने पर नहीं गिरते हैं।

फॉरवर्ड जिम्मेदारी की दिशा में पिछड़े संगतता (जब नई प्रणाली पुराने ग्राहकों का समर्थन करती है) से भिन्न होती है: हम प्रोटोकॉल और ग्राहकों को इस तरह से डिजाइन करते हैं जैसे कि पूरे पारिस्थितिकी तंत्र के कुल उन्नहीं।

मूल सिद्धांत

1. सहिष्णु पाठक और सहिष्णु लेखक

रीडर अज्ञात फ़ील्ड/हेडर को अनदेखा करता है और सही फॉलबैक के साथ नए एनम मान देता है।

लेखक कुछ भी नहीं भेजता है जिसे सर्वर ने स्पष्ट रूप से समर्थित (क्षमताओं) के रूप में घोषित नहीं किया है।

2. क्षमता वार्ता

हैंडशेक चरण में क्षमताओं (फीचर/संस्करण/मीडिया प्रकार) का स्पष्ट आदान-प्रदान। क्लाइंट अपने व्यवहार को सर्वर अनुक्रिया के अनुकूल बनाता है।

3. डिफ़ॉल्ट गिरावट

नई विशेषताओं को वैकल्पिक माना जाता है: यदि सर्वर/उपभोक्ता उनका समर्थन नहीं करता है, तो स्क्रिप्ट अभी भी एक उपयोगी न्यूनतम (एमजीसी) के साथ समाप्त हो जाएगी।

4. स्थिर कोर (एमजीसी)

न्यूनतम वारंटी अनुबंध अपरिवर्तित है; नवाचार एक्सटेंशन के रूप में रहते हैं।

5. प्रोटोकॉल के हिस्से के रूप में त्रुटि अनुबंध

पूर्वानुमानित कोड/कारण ("सुविधा समर्थित नहीं है", "मीडिया प्रकार अज्ञात") क्लाइंट को स्वचालित रूप से एक समर्थित मोड में वापस रोल करने की अनु

6. आश्चर्य के बिना संस्करण

प्रमुख लाइनें अलग हो गईं; मामूली एक्सटेंशन के लिए सर्वर/उपभोक्ता अपग्रेड की आवश्यकता नहीं

यह कहाँ मायने रखता है

लंबे समय तक जीवित एकीकरण (मोबाइल अनुप्रयोगों में भागीदार, एसडीके) के साथ सार्वजनिक एपीआई।

कई स्वतंत्र उपभोक्ताओं के साथ इवेंट

मोबाइल क्लाइंट जो बैकेंड की तुलना में अधिक धीरे-धीरे

एज/IoT, जहां डिवाइस बेड़े का हिस्सा शायद ही कभी चमकता है।

शैली द्वारा कार्यान्वयन पैटर्न

REST/HTTP

वार्ता:
  • पैरामीटर के साथ 'स्वीकारें '/मीडिया प्रकार (' अनुप्रयोग/vnd. उदाहरण। आदेश + json; v = 1; प्रोफाइल = जोखिम ')।
  • 'प्राथमिकता: शामिल करें =... 'फोर वैकल्पिक ब्लॉक।
  • शीर्षक 'एक्स-क्षमताएं: risk_score,item_details_v2'।
क्लाइंट व्यवहार:
  • एक मूल प्रारूप, एक्सटेंशन में एक अनुरोध भेजता है - केवल तभी जब सर्वर ने क्षमता की पुष्टि की है (विकल्प/डेस्क/लीड एंडपॉइंट के माध्यम से)।
  • जब '415/406/501' स्वतः एक समर्थित प्रारूप/विधि में वापस लुढ़का जाता है।
  • सर्वर अनुक्रिया: अज्ञात पैरामीटर - अनदेखा; अतिरिक्त क्षेत्रों की अनु स्थिर त्रुटि प्रारूप ('प्रकार/कोड/विवरण/ट्रेस _ आईडी')।

gRPC/Protobuf

स्थिर सेवाएं: नए तरीके/क्षेत्र - योज्य; पुराना सर्वर चुपचाप अज्ञात अनुरोध क्षेत्रों की अनदेखी करता है।

सुविधा खोज: 'गेटकैपेबिलिटीज़ ()' विधि सुविधाओं/सीमाओं की सूची देती है। जब तक सर्वर इसे घोषित नहीं करता तब तक क्लाइंट v2 विधि को कॉल नहीं करता है।

स्ट्रीमिंग: संदेशों के न्यूनतम सेट के क्रम को ठीक करें; एक्सटेंशन/प्रकारों के साथ नए "फ्रेम" को चिह्नित करें जो पुराने क्लाइंट की अनदेखी करते हैं।

ग्राफ़क्यूएल

फॉरवर्ड-फ्रेंडली: सर्वर पर नए फ़ील्ड/प्रकार दिखाई देते हैं - पुराने क्लाइंट बस उनसे अनुरोध नहीं करते

अनुमान निषिद्ध हैं: ग्राहक को योजना (आत्मनिरीक्षण/कोडोजन) रखना चाहिए और अज्ञात निर्देश/चर नहीं भेजना चाहिए।

क्षरण: यदि सर्वर कस्टम/फीचर निर्देश नहीं जानता है, तो क्लाइंट इसके बिना एक अनुरोध बनाता है।

इवेंट-चालित (काफ्का/एनएटीएस/पल्सर, एवरो/जेएसएन/प्रोटो)

रजिस्ट्री में योजना की फॉरवर्ड संगतता: पुराने उपभोक्ता नई योजना द्वारा लिखित संदेश पढ़ सकते हैं।

चूक के साथ योगात्मक क्षेत्र: नए उत्पादक पुराने उपभोक्ताओं को नहीं तोड़ ते

कोर बनाम समृद्ध: कर्नेल समान रहता है, नई जानकारी '.enriched' या वैकल्पिक क्षेत्रों के रूप में प्रकाशित होती है।

डिजाइन अभ्यास

1. न्यूनतम अनुरोध संविदा (एमजीसी)

ऑपरेशन में एक "संकीर्ण गर्दन" होनी चाहिए जो सभी सर्वर कई वर्षों तक समर्थन करेंगे।

2. अनुबंध स्तर पर फ्लैग्स की सुवि

नामित सुविधाओं के रूप में वर्णित करें: 'जोखिम _ स्कोर', 'मूल्य निर्धारण _ v2', 'मजबूत _ idempotency'। ग्राहक उन्हें स्पष्ट रूप से शामिल करता है।

3. "समर्थित नहीं" के लिए स्पष्ट त्रुटि कोड

HTTP: '501 नॉट क्रियान्वित', '415 असमर्थित मीडिया प्रकार', детальные 'समस्या + json'।

gRPC: 'UNIMPLEMENTED '/' FELED _ PRECONDITION'।

घटनाएँ: DLQ में मार्ग 'reason = असमर्थित _ feature' के साथ।

4. अनुक्रम/पूर्ण सूची पर भरोसा न करें

क्लाइंट को नए एनम मूल्यों, कोई नया क्षेत्र और "अतिरिक्त" गुणों के लिए तैयार होना चाहिए।

5. स्थिर पहचानकर्ता और प्रारूप

पंक्ति के भीतर आईडी/पार्टिशनिंग कुंजियों के प्रारूप को न बदलें - यह पाठकों के पक्ष में आगे टूटता है।

6. "मशीन-पढ़ने योग्य" प्रलेखन

मेजबान विवरणकर्ता: OpenAPI/AsyncAPI/प्रोटो विवरणकर्ता/GraphQL SDL। ग्राहक सुविधा के लिए समर्थन सत्यापित कर सकते हैं।

संगतता परीक्षण अग्रेषित करें

फॉरवर्ड/फुल मोड में स्कीमा-डिफ़: नया स्कीमा पुराने उपभोक्ता/सर्वर को मान्य करता है।

क्लाइंट कॉन्ट्रैक्ट टेस्ट: एक नए क्लाइंट को पुराने सर्वर के खिलाफ निष्पादित किया जाता है जिसमें सुविधाएँ सक्षम/अक्षम होती हैं।

गोल्डन अनुरोध: "नए" अनुरोधों का एक सेट "पुराने" सर्वर के माध्यम से चलाया जाता है; महत्वपूर्ण त्रुटियों के बिना अपेक्षित गिरावट

अराजकता/विलंबता: टाइमआउट/रिट्रे चेक - नए क्लाइंट को पुराने सर्वर के सबसे खराब एसएलए से सही ढंग से बचना चाहिए।

कैनरी: कुछ नए क्लाइंट पिछले सर्वर संस्करण के साथ काम करते हैं - हम त्रुटियों/गिरावट की टेलीमेट्री एकत्र करते हैं।

अवलोकन और परिचालन मैट्रिक्स

असमर्थित सुविधाओं और उनके स्वचालित रोलबैक के साथ अनुरोध/संदेशों का प्रतिशत।

क्लाइंट संस्करणों द्वारा वितरण (उपयोगकर्ता-एजेंट/मेटाडेटा/दावे)।

DLQ में 'UNIMPLEMENTED/501/415' त्रुटियां और मार्ग 'असमर्थित _ फीचर' के साथ।

गिरावट का समय: MGC बनाम "विस्तारित" प्रतिक्रिया के लिए p95/p99।

स्कीमा रजिस्ट्री में संगतता मोड

फॉरवर्ड: नई प्रविष्टि पुराने पाठक के साथ संगत है (चूक की आवश्यकता है, वैकल्पिकता)।

पूर्ण: и फॉरवर्ड, и बैकवर्ड; सार्वजनिक अनुबंधों के लिए सुविधाजनक।

सिफारिश: घटनाओं के लिए - उत्पादक के लिए बैकवर्ड और उपभोक्ता के लिए फॉरवर्ड (एक सहिष्णु पाठक के माध्यम से), बाहरी एपीआई के लिए - पूर्ण।

उदाहरण

REST (क्षमताएं + गिरावट)

1. क्लाइंट 'GET/मेटा/क्षमताओं' → '{"जोखिम _ स्कोर": गलत, "price_v2": true}' बनाता है।

2. 'POST/ऑर्डर' पर आधार क्षेत्र भेजता है; 'risk _ score' अनुरोध नहीं करता है, क्योंकि सर्वर ऐसा नहीं कर सकता है.

3. यदि गलती से 'प्राथमिकता: = जोखिम _ स्कोर' भेजा जाता है, तो सर्वर 'जोखिम _ स्कोर' फ़ील्ड (या 'वरीयता-एप्लाइड: कोई नहीं') के बिना 200 के साथ जवाब देता है - क्लाइंट दुर्घटनाग्रस्त नहीं होता है।

जीआरपीसी (खोज)

'गेटकैपेबिलिटीज ()' लौटाई गई विधि सूची/सुविधा। यदि यह मौजूद नहीं है तो क्लाइंट 'CapchearV2' को नहीं बुलाता है - इसके बजाय 'कैप्चर' का उपयोग करना और स्थानीय रूप से इनपुट को एक समर्थित दृश्य में परिवर्तित करना।

घटनाएँ (रजिस्ट्री में अग्रेषित)

निर्माता ने 'जोखिम _ स्कोर' क्षेत्र (डिफ़ॉल्ट के साथ शून्य) जोड़ा। पुराने उपभोक्ता उसे अनदेखा करते हैं; इसका तर्क केवल स्थिर कर्नेल क्षेत्रों का उपयोग कर

एंटीपैटर्न

हार्ड क्लाइंट: व्हाइटलिस्ट फ़ील्ड्स द्वारा प्रतिक्रिया को फ़िल्टर करता है और एक अपरिचित

निहित विशेषताएं: क्लाइंट क्षमताओं की जाँच किए बिना एक नया पैरामीटर भेजना शुरू करता है।

पंक्ति के भीतर आईडी/कुंजी प्रारूपों को बदलना → पुराने सर्वर/उपभोक्ता अब नए अनुरोधों/संदेशों को नहीं समझते हैं।

पूर्ण एनम सूची के बारे में हार्डवायर्ड मान्यताएँ (डिफ़ॉल्ट के बिना स्विच करें)।

प्रवाह नियंत्रण के रूप में लॉगिंग: अनुबंध कोड के बजाय त्रुटि स्ट्रिंग पार्सिंग।

कार्यान्वयन जाँच सूची

  • एमजीसी परिभाषित; नई सुविधाओं को वैकल्पिक के रूप में चिह्नि
  • क्षमता वार्ता (समापन बिंदु/मेटाडेटा/हैंडशेक) का वर्णन और कार्यान्वयन किया गया है।
  • ग्राहक अपरिचित क्षेत्रों की अनदेखी करते हैं और नए एनम (फॉलबैक) को सही ढंग से संभालते हैं।
  • त्रुटि अनुबंध अनुमानित रूप से "समर्थित नहीं" कैप्चर करते हैं (HTTP/gRPC/घटना)।
  • स्कीमा रजिस्ट्री संबंधित कलाकृतियों के लिए फॉरवर्ड/फुल पर सेट है।
  • ऑटोटेस्ट: स्कीमा-डिफ़ (फॉरवर्ड), क्लाइंट बनाम पुराने सर्वर अनुबंध परीक्षण, कैनरी।
  • मेट्रिक्स: क्लाइंट संस्करण, फीचर विफलता, गिरावट दर, p95 MGC।
  • प्रलेखन/एसडीके विशेषताओं और गिरावट के उदाहरणों की एक सूची प्रकाशित करते हैं।

FAQ

व्यवहार में आगे पिछड़े से कैसे भिन्न है?

बैकवर्ड: नया सर्वर पुराने क्लाइंट को नहीं तोड़ ता है. फॉरवर्ड: पुराना सर्वर नए क्लाइंट (या नए संदेशों से पुराने उपभोक्ता) से नहीं टूटता है। आदर्श रूप से, आप पूर्ण पहुंचते हैं।

क्या मुझे हमेशा क्षमताओं में प्रवेश करने की आवश

यदि आप तुल्यकालिक रिलीज के बिना सक्रिय एवोल्यूशन की उम्मीद करते हैं, हाँ। यह दर्जनों प्रमुख लाइनों को पकड़ ने से सस्ता है।

सुरक्षा के बारे में क्या?

नई सुविधाओं के लिए अलग स्कोप/दावों की आवश्यकता होनी चाहिए यदि सर्वर उनका समर्थन नहीं करता है, तो क्लाइंट को सुरक्षा को कम नहीं करना चाहिए, लेकिन सुविधा को छोड़ देना चाहिए

क्या सर्वर संस्करण द्वारा "अनुमान" समर्थन संभव है?

अवांछनीय। स्पष्ट रूप से (क्षमताएं) पूछना या मीडिया प्रकार/योजना को देखना बेहतर है।

कुल

फारवर्ड इंटरऑपरेबिलिटी अवसरों पर बातचीत करने और सुरक्षित रूप से अपमानित करने का अनुशासन है। एक स्थिर कोर, क्षमता वार्ता, योगात्मक एक्सटेंशन और पूर्वानुमानित कीड़े नए ग्राहकों और डेटा को पुराने सर्वरों और उपभोक्ताओं के साथ-साथ बड़े पैमाने पर रिलीज और रात के पलायन के बिना प्रा

Contact

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

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

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

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

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

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