GH GambleHub

सर्किट ब्रेकर और गिरावट

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

मुख्य लक्ष्य: कैस्केडिंग बूंदों के बजाय नियंत्रित विफलताओं के माध्यम से एसएलओ और उपयोगकर्ता अनुभव को संरक्षित करना।

1) कब लागू करें

निर्भरता अस्थिर है: p95/p99 ग्रोथ, टाइमआउट, गलत जवाब।

सख्त सीमा/दंड के साथ बाहरी एपीआई।

"हेवी" बैकएंड (खोज, सिफारिशें, रिपोर्ट), जहां रिट्रे तूफान को तेज करते हैं।

पूल (कनेक्शन, थ्रेड्स) की कमी के जोखिम वाले अत्यधिक भरे हुए क्षेत्र।

2) सीबी राज्य और संक्रमण

क्लासिक ट्रिपल:

1. बंद ट्रैफिक चला जाता है, त्रुटि/विलंबता मेट्रिक्स गिने जाते हैं।

2. ओपन - कॉल को तुरंत अस्वीकार कर दिया जाता है (फेल-फास्ट) और/या फॉलबैक में स्थानांतरित कर दिया जाता है।

3. हाफ-ओपन - "ट्रायल" अनुरोधों की एक सीमित संख्या यह निर्धारित करती है कि स्विच को बंद करना है या नहीं।

ओपनिंग ट्रिगर्स

प्रति विंडो त्रुटि/समयसमाप्ति सीमा (उदाहरण के लिए, अंतिम N का ≥ 50%).

विलंबता सीमा (उदा। p95> लक्ष्य)।

संयुक्त नीतियां (त्रुटियां ∧ टाइमआउट से अधिक)।

समय रखें (कूल-डाउन)

फिक्स्ड (उदाहरण के लिए, 10-60 सेकंड) या अनुकूली (बार-बार सक्रियताओं के साथ घातीय वृद्धि)।

3) टाइमआउट, रिट्रीट और जिटर

टाइमआउट हमेशा अपस्ट्रीम एसएलओ से छोटे होते हैं और समय सीमा प्रसार होते हैं।

रेट्राई केवल पहचान संचालन के लिए; ज्यादातर मामलों में 1-2 प्रयास पर्याप्त हैं

बैकऑफ + जिटर (पूर्ण जिटर) दोहराव की तुल्यकालिक तरंगों को रोकता है।

हेजिंग (अतिरिक्त अनुरोध) - किफायती और केवल बहुत महत्वपूर्ण पढ़ ने के लिए।

4) बल्कहेड-अलगाव और "फ्यूज"

डोमेन और ट्रैफिक प्रकार (वीआईपी, पृष्ठभूमि कार्य, सार्वजनिक एपीआई) द्वारा अलग कनेक्शन/कार्यकर्ता/कतार पूल।

"महंगे" संचालन के लिए संगामिति पर कैप।

प्रवेश नियंत्रण: कतार भरी होने पर निष्पादन से पहले आसान विफलता।

5) फॉलबैक और क्षरण परिदृश्य

विकल्प

कैश/स्टाइल प्रतिक्रियाएं: 'बासी-जबकि-पुनर्नवीनीकरण', L2/L3 कैश से डेटा वापस करना।

केवल पढ़ें: लेखन/कमांड का ब्लॉक, सुरक्षित रीड की अनुमति दें।

सरोगेट प्रतिक्रियाएं: अधूरा डेटा (जैसे, कोई सिफारिशें/अवतार नहीं)।

कार्यात्मक अक्षम: अस्थायी रूप से गैर महत्वपूर्ण विजेट/सुविधाएँ छुपाएँ.

फ्लैग्स: रिलीज के बिना व्यवहार का त्वरित परि

नियम

फॉलबैक डेटा से नियतात्मक, तेज और सुरक्षित होना चाहिए।

स्पष्ट रूप से लॉग/ट्रैक/मेट्रिक्स में अपमानित पथ को चिह्नित करें।

6) प्राथमिकता और यातायात को आकार देना

वीआईपी/भुगतान योजनाएं - कमी की स्थिति में उच्च प्राथमिकता/कोटा।

दर सीमा और थ्रॉटलिंग से अपमानित निर्भरता पर बोझ कम होता है।

शेड लोड: गुणवत्ता में नरम कमी (उदा। स्थिर होने तक कम परिणाम, काट दी गई छवियां)।

7) अवलोकन और संकेत

सीबी मैट्रिक्स

स्थिति (बंद/खुला/आधा-खुला) और राज्य में अवधि।

कारणों से विफलताओं का हिस्सा: सीबी-ओपन, टाइमआउट, 5xx, रीट्री-थका हुआ।

p95/p99 विलंबता "पहले" और "स्विच के बाद"।

फॉलबैक के माध्यम से निवेदन की संख्या/प्रतिशत।

ट्रेसिंग

स्पैन की एनोटेशन: 'सर्किट = खोला', 'फॉलबैक = कैश', 'प्रवेश = अस्वीकृत'।

सीमा (429/रेटलिमिट-), कतारें और कनेक्शन गोलियों के साथ सहसंबंध।

लॉग/लेखा परीक्षा

खोलने/बंद करने का कारण, थ्रेसहोल्ड, निर्भरता आईडी।

8) संविदा और प्रोटोकॉल

HTTP

फेल-फास्ट: 'रेट्री-आफ्टर' (या सीमा पर '429') के साथ '503 सेवा अनुपलब्ध'।

आंशिक सामग्री/बासी: गिरावट मेटाडेटा के साथ '200 '/' 206' (उदाहरण के लिए, 'एक्स-डिग्रेडेड: ट्रू')।

कैश नीतियां: 'कैश-कंट्रोल: बासी-यदि त्रुटि, बासी-जबकि-पुनर्नवीनीकरण'।

gRPC

'UNAVELABLE', 'DEADEMY _ EXCEEED', क्लाइंट/प्रॉक्सी नीतियों द्वारा रिट्रे शब्दार्थ।

अनुरोध संदर्भ पर समय सीमा/समय समाप्ति; श्रृंखला के नीचे समय सीमा फैलाना।

पहचान

'Idempotency-Key' for POST संचालन, सीमा पर कमी।

9) विशिष्ट कार्यान्वयन (छद्म कोड)

pseudo onRequest(req):
if circuit. isOpen(dep):
return fallbackOrFail(req)

with timeout(T):
try:
resp = call(dep, req)
circuit. recordSuccess(dep, latency=resp. latency)
return resp except TimeoutError or 5xx as e:
circuit. recordFailure(dep)
if circuit. shouldOpen(dep):
circuit. open(dep, coolDown=adaptive())
return fallbackOrFail(req)

अर्ध- खुला नमूना

pseudo onTimer():
if circuit. state(dep) == OPEN and coolDownExpired():
circuit. toHalfOpen(dep)

onRequestHalfOpen(req):
if circuit. allowTrial (dep): # e.g. 1 try: call -> success => close catch: reopen with longer coolDown else:
return fallbackOrFail(req)

10) थ्रेसहोल्ड सेट करना

अवलोकन विंडो: एन सेकंड/क्वेरी स्लाइडिंग।

त्रुटि सीमा: विंडो में 20-50% (प्रोफ़ाइल के आधार पर)।

विलंबता सीमा: p95 ≤ लक्ष्य SLO (जैसे, 300-500 ms); अतिरिक्त को सीबी के लिए "त्रुटि" के रूप में गिना जाता है।

अनुकूली कूल-डाउन: बार-बार सक्रियता के साथ 10 → 30 → 60 के दशक।

11) परीक्षण और अराजकता प्रथाओं

अराजकता: विलंबता/निर्भरता त्रुटि इंजेक्शन, डीएनएस टूटना, पैकेट ड्रॉप।

खेल के दिन: युद्ध जैसे वातावरण पर स्विच का "उद्घाटन" शुरू करना, फॉलबैक की जाँच करना।

कैनरी: यातायात के 1-5% के लिए पहले POC/गिरावट नीतियों को सक्षम करें।

SLO बजट: त्रुटि-बजट समाप्त होने तक प्रयोगों की अनुमति दें।

12) बहु-किरायेदारी के साथ एकीकरण

सीबी राज्य को प्रति-निर्भरता प्रति-किरायेदार (शोर किरायेदारों के लिए) या वैश्विक स्तर पर संग्रहीत किया जा सकता है - लोड प्रोफ़ाइल के आधार पर।

'किरायेदार _ id' द्वारा फॉलबैक डेटा और कैश को खंडित करें।

प्राथमिकताएं/कोटा - योजनाओं के अनुसार (वीआईपी को स्टार्टर व्यवहार से पीड़ित नहीं होना चाहिए)।

13) प्री-सेल चेकलिस्ट

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

14) विशिष्ट त्रुटियां

कोई टाइमआउट नहीं हैं - पीछे हटना "सभी तरह से" और कैस्केडिंग गिरता है।

चयनात्मक (समापन बिंदु/विधि द्वारा) के बजाय एकल वैश्विक सीबी - अनावश्यक विफलताएं।

फॉलबैक के बिना खोलें - अपमानित UX के बजाय "खाली" स्क्रीन।

अनुरोधों के बिना रेट्राई - तुल्यकालिक तूफान।

अल्पकालिक विफलताओं के साथ लंबे समय तक शांत या स्थिर के साथ बहुत कम - "फ्लिप-फ्लॉप" राज्य।

बल्कहेड की अनुपस्थिति - साझा पूल की कमी और "हेड-ऑफ-लाइन अवरुद्ध"।

15) त्वरित रणनीति चयन

उच्च महत्व के पढ़ें: बासी प्रतिक्रियाओं का सीबी + कैश + हेजिंग (किफायती)।

रिकॉर्ड/भुगतान: सख्त टाइमआउट, न्यूनतम रिट्रे, आइडेम्पोटेंसी कुंजी, कोई गंदा फॉलबैक नहीं।

बाहरी एपीआई: आक्रामक थ्रेसहोल्ड के साथ सीबी, अनुकूली कूल-डाउन, सख्त थ्रॉटलिंग।

स्पंदन लोड microservices: bulkheads, कैप प्रति संगति, वीआईपी प्राथमिकता।

निष्कर्ष

सर्किट ब्रेकर और प्रबंधित गिरावट वास्तुकला "बीमा" हैं: वे अराजक विफलताओं को अनुमानित व्यवहार में अनुवाद करते हैं। क्लियर टाइमआउट, सीमित जिटर रिट्रीट, पृथक पूल, विचारशील फॉलबैक पथ, और टेलीमेट्री सिस्टम को निर्भरता विफलताओं के लिए लचीला बनाते हैं और चोटी और दुर्घटना अवधि के दौरान भी एसएलओ को पकड़ ते हैं।

Contact

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

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

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

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

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

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