फॉल्ट टॉलरेंस: Difference between revisions

From Vigyanwiki
(text edit)
(edit text)
Line 99: Line 99:
प्रतिकृतियों को [[ सिंक्रोनाइजेशन (कंप्यूटर साइंस) |सिंक्रोनस]](समकालिकता) में लाने के लिए उनकी आंतरिक संग्रहीत अवस्थाओं को समान बनाने की आवश्यकता होती है। उन्हें रीसेट की स्थिति(reset state)से शुरू किया जा सकता है। वैकल्पिक रूप से,एक प्रतिकृति की आंतरिक स्थिति को दूसरी प्रतिकृति में कॉपी किया जा सकता है।
प्रतिकृतियों को [[ सिंक्रोनाइजेशन (कंप्यूटर साइंस) |सिंक्रोनस]](समकालिकता) में लाने के लिए उनकी आंतरिक संग्रहीत अवस्थाओं को समान बनाने की आवश्यकता होती है। उन्हें रीसेट की स्थिति(reset state)से शुरू किया जा सकता है। वैकल्पिक रूप से,एक प्रतिकृति की आंतरिक स्थिति को दूसरी प्रतिकृति में कॉपी किया जा सकता है।


डीएमआर(DMR) का एक प्रकार '''जोड़ी और अतिरिक्त''' है।दो प्रतिकृति तत्व लॉकस्टेप में एक जोड़ी के रूप में काम करते हैं,एक विद्युत क्षृंखला के संचालन में किसी गलत अवतरण का पता लगाती है और त्रुटि का संकेत देती है। दूसरी जोड़ी ठीक उसी तरह काम करती है। अंतिम क्षृंखला जोड़ी के आउटपुट का चयन करती है जो यह घोषणा नहीं करती है कि यह त्रुटि में है। जोड़ी और अतिरिक्त टीएमआर(TMR) के तीन के बजाय चार प्रतिकृतियों की आवश्यकता होती है, लेकिन व्यावसायिक रूप से इसका उपयोग किया गया है।
डीएमआर(DMR) का एक प्रकार '''जोड़ी और अतिरिक्त''' है।दो प्रतिकृति तत्व लॉकस्टेप में एक जोड़ी के रूप में काम करते हैं,एक विद्युत क्षृंखला के संचालन में किसी गलत अवतरण का पता लगाती है और त्रुटि का संकेत देती है। दूसरी जोड़ी ठीक उसी तरह काम करती है।अंतिम क्षृंखला जोड़ी के आउटपुट का चयन करके त्रुटि की घोषणा नहीं करती है। '''जोड़ी और अतिरिक्त''' में तीन के बजाय चार प्रतिकृतियों के टीएमआर(TMR) की आवश्यकता होती है, लेकिन व्यावसायिक रूप से इसका उपयोग किया गया है।


===विफलता-अनभिज्ञ कंप्यूटिंग ===
===विफलता-अनभिज्ञ कंप्यूटिंग ===
''विफलता-अनभिज्ञ कंप्यूटिंग'' एक ऐसी तकनीक है जो [[ कंप्यूटर प्रोग्राम |कंप्यूटर प्रोग्राम]] को [[ डेटा हानि |त्रुटियों]] के बावजूद निष्पादन जारी रखने में सक्षम बनाती है।<ref>{{Cite journal|last1=Herzberg|first1=Amir|last2=Shulman|first2=Haya|date=2012|title=Oblivious and Fair Server-Aided Two-Party Computation|url=http://dx.doi.org/10.1109/ares.2012.28|journal=2012 Seventh International Conference on Availability, Reliability and Security|pages=75–84|publisher=IEEE|doi=10.1109/ares.2012.28|isbn=978-1-4673-2244-7|s2cid=6579295}}</ref> तकनीक को विभिन्न संदर्भों में लागू किया जा सकता है। सबसे पहले,यह प्रोग्राम में निर्मित परिमाण लौटाकर अमान्य मेमोरी रीड को संभाल सकता है,<ref>{{Citation|last1=Rigger|first1=Manuel|title=Context-Aware Failure-Oblivious Computing as a Means of Preventing Buffer Overflows|date=2018|url=http://dx.doi.org/10.1007/978-3-030-02744-5_28|work=Network and System Security|pages=376–390|place=Cham|publisher=Springer International Publishing|isbn=978-3-030-02743-8|access-date=2020-10-07|last2=Pekarek|first2=Daniel|last3=Mössenböck|first3=Hanspeter|doi=10.1007/978-3-030-02744-5_28|arxiv=1806.09026}}</ref> जो बदले में, निर्मित परिमाण का उपयोग करता है और उस पूर्व स्मृति परिमाण को अनदेखा करता है जिसे उसने एक्सेस करने का प्रयास किया था, यह [[ रैम समता |विशिष्ट मेमोरी चेकर्स]] के विपरीत है, जो त्रुटि के कार्यक्रम को सूचित करता है या निरस्त करता है। दूसरा, इसे उन अपवादों पर लागू किया जा सकता है जहां अप्रत्याशित अपवादों को पकड़ने के लिए कुछ कैच ब्लॉक लिखे या संश्लेषित किए जाते हैं।<ref>{{Cite journal|last1=Zhang|first1=Long|last2=Monperrus|first2=Martin|date=2019|title=TripleAgent: Monitoring, Perturbation and Failure-Obliviousness for Automated Resilience Improvement in Java Applications|url=https://arxiv.org/pdf/1812.10706|journal=2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)|location=Berlin, Germany|publisher=IEEE|pages=116–127|doi=10.1109/ISSRE.2019.00021|arxiv=1812.10706|isbn=978-1-7281-4982-0|s2cid=57189195}}</ref> इसके अलावा,ऐसा होता है कि कैस्केडिंग विफलताओं को रोकने के लिए निष्पादन को लगातार कई बार संशोधित किया जाता है।<ref name="DurieuxHamadi2018">{{cite book|last1=Durieux|first1=Thomas|last2=Hamadi|first2=Youssef|last3=Yu|first3=Zhongxing|last4=Baudry|first4=Benoit|last5=Monperrus|first5=Martin|title=2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST)|chapter=Exhaustive Exploration of the Failure-Oblivious Computing Search Space|year=2018|pages=139–149|doi=10.1109/ICST.2018.00023|arxiv=1710.09722|isbn=978-1-5386-5012-7|s2cid=4304123}}</ref>
''विफलता-अनभिज्ञ कंप्यूटिंग'' एक ऐसी तकनीक है जो [[ कंप्यूटर प्रोग्राम |कंप्यूटर प्रोग्राम]] को [[ डेटा हानि |त्रुटियों]] के बावजूद निष्पादन जारी रखने में सक्षम बनाती है।<ref>{{Cite journal|last1=Herzberg|first1=Amir|last2=Shulman|first2=Haya|date=2012|title=Oblivious and Fair Server-Aided Two-Party Computation|url=http://dx.doi.org/10.1109/ares.2012.28|journal=2012 Seventh International Conference on Availability, Reliability and Security|pages=75–84|publisher=IEEE|doi=10.1109/ares.2012.28|isbn=978-1-4673-2244-7|s2cid=6579295}}</ref> इस तकनीक को विभिन्न संदर्भों में लागू किया जा सकता है। सबसे पहले,यह प्रोग्राम अमान्य मेमोरी को रीड कर,<ref>{{Citation|last1=Rigger|first1=Manuel|title=Context-Aware Failure-Oblivious Computing as a Means of Preventing Buffer Overflows|date=2018|url=http://dx.doi.org/10.1007/978-3-030-02744-5_28|work=Network and System Security|pages=376–390|place=Cham|publisher=Springer International Publishing|isbn=978-3-030-02743-8|access-date=2020-10-07|last2=Pekarek|first2=Daniel|last3=Mössenböck|first3=Hanspeter|doi=10.1007/978-3-030-02744-5_28|arxiv=1806.09026}}</ref> उस मेमोरी वैल्यू को अनदेखा करता है जिसे उसने एक्सेस करने का प्रयास किया था,यह सामान्य मेमोरी चेकर्स के विपरीत प्रोग्राम को त्रुटि की सूचना देता है या प्रोग्राम को निरस्त कर देता है।दूसरा,इसे उन अपवादों पर लागू किया जा सकता है जहां अप्रत्याशित अपवादों को रोकने के लिए कुछ कैच ब्लॉक(catch blocks) लिखे या संश्लेषित किए जाते हैं।<ref>{{Cite journal|last1=Zhang|first1=Long|last2=Monperrus|first2=Martin|date=2019|title=TripleAgent: Monitoring, Perturbation and Failure-Obliviousness for Automated Resilience Improvement in Java Applications|url=https://arxiv.org/pdf/1812.10706|journal=2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)|location=Berlin, Germany|publisher=IEEE|pages=116–127|doi=10.1109/ISSRE.2019.00021|arxiv=1812.10706|isbn=978-1-7281-4982-0|s2cid=57189195}}</ref> इसके अलावा,कैस्केडिंग विफलताओं(cascading failures) को रोकने के लिए निष्पादन को कई बार संशोधित किया जाता है।<ref name="DurieuxHamadi2018">{{cite book|last1=Durieux|first1=Thomas|last2=Hamadi|first2=Youssef|last3=Yu|first3=Zhongxing|last4=Baudry|first4=Benoit|last5=Monperrus|first5=Martin|title=2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST)|chapter=Exhaustive Exploration of the Failure-Oblivious Computing Search Space|year=2018|pages=139–149|doi=10.1109/ICST.2018.00023|arxiv=1710.09722|isbn=978-1-5386-5012-7|s2cid=4304123}}</ref>


दृष्टिकोण में प्रदर्शन लागत है: क्योंकि तकनीक पते की वैधता के लिए गतिशील जांच डालने के लिए कोड को फिर से लिखती है, निष्पादन समय 80% से 500% तक बढ़ जाएगा।<ref>{{Citation
यह तकनीक गतिशील जांच के लिए कोड को फिर से लिखती है जिससेे निष्पादन समय 80% से 500% तक बढ़ जाता हैं।<ref>{{Citation
   | first = Angelos D.
   | first = Angelos D.
   | last = Keromytis
   | last = Keromytis
Line 123: Line 123:


=== रिकवरी शेपर्ड ===
=== रिकवरी शेपर्ड ===
रिकवरी शेपर्ड एक हल्की तकनीक है जो सॉफ़्टवेयर प्रोग्राम को घातक त्रुटियों से पुनर्प्राप्त करने में सक्षम बनाती है जैसे कि नल पॉइंटर डीरेफरेंस(अशक्त सूचक) और शून्य से विभाजित करना।<ref name=rcv>{{cite book
रिकवरी शेपर्ड एक प्रभावहीन तकनीक है जो सॉफ़्टवेयर प्रोग्राम को घातक त्रुटियों से बचने में सक्षम बनाती है जैसे कि नल पॉइंटर डीरेफरेंस(null pointer dereference)और शून्य से विभाजित करना।<ref name=rcv>{{cite book
|last1=Long
|last1=Long
|first1=Fan
|first1=Fan
Line 140: Line 140:
|doi=10.1145/2594291.2594337
|doi=10.1145/2594291.2594337
|s2cid=6252501
|s2cid=6252501
}}</ref> विफलता शून्यचित्त कंप्यूटिंग तकनीक की तुलना में, रिकवरी शेपर्ड सीधे संकलित प्रोग्राम बाइनरी पर काम करता है और इसे प्रोग्राम में पुन: संकलित करने की आवश्यकता नहीं होती है।
}}</ref> विफल कंप्यूटिंग तकनीक की तुलना में, रिकवरी शेपर्ड को पुन: संकलित करने की आवश्यकता नहीं होती,यह प्रोग्राम सीधे बाइनरी पर काम करता है।


यह [[ जस्ट-इन-टाइम संकलन |जस्ट-इन-टाइम]] [[ इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) |बाइनरी इंस्ट्रूमेंटेशन]] फ्रेमवर्क[[ पिन (कंप्यूटर प्रोग्राम) | पिन]] का उपयोग करता है। यह त्रुटि होने पर आवेदन प्रक्रिया से जुड़ जाता है, निष्पादन की मरम्मत करता है,निष्पादन जारी रहने पर मरम्मत प्रभावों को ट्रैक करता है, आवेदन प्रक्रिया के भीतर मरम्मत प्रभाव शामिल करता है,और प्रक्रिया की स्थिति से सभी मरम्मत प्रभावों को फ़्लश करने के बाद प्रक्रिया से अलग हो जाता है। यह कार्यक्रम के सामान्य निष्पादन में हस्तक्षेप नहीं करता है और इसलिए ऊपरी कार्य करता है।<ref name=rcv/> 18 में से 17 के लिए व्यवस्थित रूप से एकत्रित वास्तविक दुनिया नल-डीरेफरेंस और डिवाइड-बाय-जीरो त्रुटियों के लिए, एक प्रोटोटाइप कार्यान्वयन एप्लिकेशन को त्रुटि-ट्रिगर इनपुट पर अपने उपयोगकर्ताओं को स्वीकार्य आउटपुट और सेवा प्रदान करने के लिए निष्पादित करना जारी रखता है।<ref name=rcv/>
यह सही समय पर [[ इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) |बाइनरी इंस्ट्रूमेंटेशन]] फ्रेमवर्क[[ पिन (कंप्यूटर प्रोग्राम) | पिन]] का उपयोग करता है। यह त्रुटि होने पर आवेदन प्रक्रिया से जुड़कर निष्पादन की मरम्मत कर प्रभावों को ट्रैक करता है और आवेदन प्रक्रिया से सभी मरम्मत प्रभावों को फ़्लश करने के बाद प्रक्रिया से अलग हो जाता है।यह कार्यक्रम के निष्पादन में हस्तक्षेप नहीं करता है।<ref name=rcv/>18 में से 17 के लिए नल-डीरेफरेंस और डिवाइड-बाय-जीरो,एक प्रोटोटाइप कार्यान्वयन एप्लिकेशन अपने उपयोगकर्ताओं को आउटपुट और सेवा प्रदान करने के लिए निष्पादन करना जारी रखता है।<ref name=rcv/>


=== सर्किट ब्रेकर ===
=== सर्किट ब्रेकर ===
{{Main|Circuit breaker design pattern}}[[ सर्किट ब्रेकर डिजाइन पैटर्न | सर्किट ब्रेकर डिजाइन पैटर्न]] वितरित प्रणालियों में भयावह विफलताओं से बचने के लिए एक तकनीक है।
{{Main|Circuit breaker design pattern}}[[ सर्किट ब्रेकर डिजाइन पैटर्न | सर्किट ब्रेकर डिजाइन पैटर्न(circuit breaker design pattern]]) सिस्टम को भयावह विफलताओं से की एक तकनीक है।


== अतिरेक ==
== अतिरेक ==

Revision as of 13:09, 12 July 2022

फॉल्ट टॉलरेंस के द्वारा किसी प्रणाली (सिस्टम) को इसके कुछ घटकों में एक या अधिक दोषों की विफलता की स्थिति में भी ठीक से संचालन जारी रखने में सक्षम बनाता है। यदि इसकी परिचालन गुणवत्ता बिल्कुल भी कम हो जाती है, तो कमी विफलता की गंभीरता के समानुपाती होती है,एक सरलता से डिज़ाइन की गई प्रणाली की तुलना में, जिसमें एक छोटी सी विफलता भी विघटन का कारण बन सकती है। उच्च उपलब्धता, महत्वपूर्ण लक्ष्य, या यहां तक ​​कि जीवन महत्वपूर्ण प्रणाली में दोष सहिष्णुता (फॉल्ट टॉलरेंस) प्रणाली की विशेष रूप से मांग की जाती है। सिस्टम के कुछ हिस्सों के बिगड़ने पर कार्यक्षमता बनाए रखने की क्षमता को ही ग्रेसफुल डिग्रेडेशन कहा जाता है।[1]

एक दोष-सहनशील डिज़ाइन सिस्टम के संचालन को जारी रखने में सक्षम बनाता है, संभवतः इसके द्वारा, पूरी तरह से विफल होने के बजाय, सिस्टम का कुछ ही हिस्सा विफल हो जाता है। [2] इस शब्द का प्रयोग आमतौर पर कंप्यूटर सिस्टम का वर्णन करने के लिए किया जाता है, जिसे कम या ज्यादा पूरी तरह से चालू रखने के लिए डिज़ाइन किया गया है, शायद, कुछ आंशिक विफलता की स्थिति में प्रवाह क्षमतामें कमी या प्रतिक्रिया समय में वृद्धि होती है। अर्थात्, हार्डवेयर या सॉफ़्टवेयर में समस्याओं के कारण संपूर्ण रूप से सिस्टम बंद नहीं होता है। एक अन्य क्षेत्र में एक उदाहरण एक मोटर वाहन है जिसे डिज़ाइन किया गया है, इसलिए यदि टायरों में से एक पंचर हो गया है, या एक संरचना जो थकान, जंग, निर्माण दोष, या प्रभाव जैसे कारणों से होने वाली क्षति की उपस्थिति में अपनी अखंडता बनाए रखने में सक्षम हो, तो इसे चलाना जारी रहेगा।

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

इतिहास

पहला ज्ञात दोष-सहिष्णु(फॉल्ट टॉलरेंस) कंप्यूटर (SAPO) था,जिसे 1951 में चेकोस्लोवाकिया में एंटोनिन स्वोबोडा द्वारा बनाया गया था।[3]: 155  इसका मूल डिजाइन मेमोरी एरर डिटेक्शन ( ट्रिपल मॉड्यूलर रिडंडेंसी ) की वोटिंग विधि के साथ रिले के माध्यम से जुड़े चुंबकीय ड्रम थे। इस लाइन के साथ कई अन्य मशीनें विकसित की गईं, जो ज्यादातर सैन्य उपयोग के लिए थीं। आखिरकार, वे तीन अलग-अलग श्रेणियों में विभाजित हो गए: मशीनें जो बिना किसी रखरखाव के लंबे समय तक चलेंगी, जैसे कि नासा अंतरिक्ष जांच और उपग्रह पर उपयोग की जाने वाली मशीनें; ऐसे कंप्यूटर जो बहुत भरोसेमंद थे लेकिन उन्हें निरंतर निगरानी की आवश्यकता थी, जैसे कि परमाणु ऊर्जा संयंत्र या सुपरकोलाइडर प्रयोगों की निगरानी और नियंत्रण के लिए उपयोग किए जाने वाले कंप्यूटर; और अंत में, उच्च मात्रा में रनटाइम वाले कंप्यूटर जो भारी उपयोग में होंगे, जैसे कि बीमा कंपनियों द्वारा उनकी सम्भाविकी निगरानी के लिए उपयोग किए जाने वाले कई सुपर कंप्यूटर।

तथाकथित LLNM (लॉन्ग लाइफ,नो मेंटेनेंस) कंप्यूटिंग में अधिकांश विकास 1960 के दशक में अपोलो योजना और अन्य शोध पहलुओं की तैयारी के दौरान किया गया था।[4] पहली मशीन अंतरिक्ष प्रेक्षणगृह में गई और उनका दूसरा प्रयास JSTAR कंप्यूटर,समुद्रयात्रा में इस्तेमाल किया गया। मेमोरी रिकवरी विधियों का उपयोग करने के लिए इस कंप्यूटर में मेमोरी सरणियों का बैकअप था और इस प्रकार इसे जेपीएल सेल्फ-टेस्टिंग-एंड-रिपेयरिंग कंप्यूटर कहा जाता था। यह अपनी स्वयं की त्रुटियों का पता लगा सकता है और उन्हें ठीक कर सकता है या आवश्यकतानुसार अनावश्यक मॉड्यूल ला सकता है। 2022 की शुरुआत तक कंप्यूटर अभी भी काम कर रहा है।[5]

हाइपर-डिपेंडेबल कंप्यूटरों का संचालन ज्यादातर विमान निर्माताओं,परमाणु ऊर्जा कंपनियों और रेल उद्योग द्वारा किया गया था।[3]: 210  इन्हें भारी मात्रा में अपटाइम वाले कंप्यूटरों की आवश्यकता थी जो इस तथ्य पर भरोसा करते हुए कि कंप्यूटर आउटपुट को लगातार मनुष्यों द्वारा दोषों का पता लगाने के लिए मॉनिटर किया जाएगा। फिर से,आईबीएम (IBM) ने सैटर्न वी रॉकेट के मार्गदर्शन के लिए इस तरह का पहला कंप्यूटर विकसित किया, लेकिन बाद में बीएनएसएफ( BNSF), यूनिसिस और जनरल इलेक्ट्रिक ने अपना खुद का कंप्यूटर बनाया।[3]: 223 

1970 के दशक में इस क्षेत्र में बहुत काम हुआ है,[6][7][8] उदाहरण के लिए, एफ14 सीएडीसी मेंअंतर्निर्मित आत्म-परीक्षण किया गया था।[9]

सामान्य तौर पर, दोष-सहिष्णु डिजाइनों के शुरुआती प्रयास मुख्य रूप से आंतरिक निदान पर केंद्रित थे, जहां एक गलती से संकेत मिलता था कि कुछ विफल हो रहा था और एक कार्यकर्ता इसे बदल सकता है। उदाहरण के लिए, SAPO के पास एक तरीका था जिसके द्वारा दोषपूर्ण मेमोरी ड्रम विफलता से पहले एक शोर का उत्सर्जन करेगा।[10] बाद के प्रयासों से पता चला कि पूरी तरह से प्रभावी होने के लिए, सिस्टम को स्वयं-मरम्मत और निदान करना होगा - एक गलती को अलग करना और फिर मरम्मत की आवश्यकता को चेतावनी देते हुए एक अनावश्यक बैकअप को लागू करना। इसे एन-मॉडल अतिरेक के रूप में जाना जाता है, जहां दोष स्वत: सुरक्षित और ऑपरेटर को चेतावनी का कारण बनते हैं, और यह आज भी उपयोग में स्तर एक दोष-सहिष्णु डिजाइन का सबसे सामान्य रूप है।

वोटिंग एक और प्रारंभिक विधि थी, जैसा कि ऊपर चर्चा की गई है, जिसमें कई निरर्थक बैकअप लगातार काम कर रहे हैं और एक दूसरे के परिणामों की जांच कर रहे हैं, इस परिणाम के साथ कि यदि, उदाहरण के लिए, चार घटकों ने 5 के उत्तर की सूचना दी और एक घटक ने 6 के उत्तर की सूचना दी, तो अन्य चार "वोट" करेंगे कि पाँचवाँ घटक दोषपूर्ण था और इसे सेवा से बाहर कर दिया गया था। इसे N बहुमत वाले मतदान में से M कहा जाता है।

ऐतिहासिक रूप से, गति हमेशा एन-मॉडल(N-model) से आगे बढ़ने के लिए और एन(N) से एम(M) से अधिक तक आगे बढ़ने के लिए रही है क्योंकि सिस्टम की जटिलता और संक्रमणीय स्थिति को गलती-नकारात्मक से गलती-सकारात्मक तक सुनिश्चित करने की कठिनाई ने संचालन को बाधित नहीं किया।

टेंडेम और स्ट्रैटस ऑनलाइन लेनदेन प्रोसेसिंग के लिए दोष-सहनशील कंप्यूटर सिस्टम के डिजाइन में विशेषज्ञता वाली पहली कंपनियों में से थे।

उदाहरण

M2 मोबाइल वेब, ट्विटर का मूल मोबाइल वेब फ्रंट एंड, बाद में दिसंबर 2020 तक क्लाइंट के लिए बिना जावास्क्रिप्ट सपोर्ट और/या असंगत ब्राउज़र के फॉलबैक लीगेसी वर्जन के रूप में कार्य किया।

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

कंप्यूटर अनुप्रयोगों में दोष सहिष्णुता उल्लेखनीय रूप से सफल है। टेंडेम कंप्यूटर्स ने अपना पूरा व्यवसाय ऐसी मशीनों पर बनाया, जिन्होंने नॉनस्टॉप सिस्टम बनाने के लिए सिंगल-पॉइंट टॉलरेंस का इस्तेमाल किया, जिसमें अपटाइम मापा गया।

विफल-सुरक्षित आर्किटेक्चर में कंप्यूटर सॉफ़्टवेयर भी शामिल हो सकता है, उदाहरण के लिए प्रक्रिया प्रतिकृति द्वारा।

डेटा स्वरूपों को भी नष्ट करने के लिए डिज़ाइन किया जा सकता है। उदाहरण के लिए एचटीएमएल (HTML), को ऐसे डिज़ाइन किया गया है,जिससे वेब ब्राउज़र दस्तावेज़ को अनुपयोगी किए बिना नए और असमर्थित एचटीएमएल (HTML) इकाइयों को अनदेखा करने की इजाजत देता है। इसके अतिरिक्त, कुछ साइटें, जिनमें ट्विटर (Twitter) (दिसंबर 2020 तक) जैसे लोकप्रिय प्लेटफॉर्म शामिल हैं, जो जावास्क्रिप्ट(JavaScript) पर निर्भर नहीं है और इसमें न्यूनतम लेआउट है, जिसमे व्यापक उपलब्धता और पहुँच है,जैसे सीमित वेब ब्राउज़िंग क्षमताओं के साथ कार्य ढाँचा।[11][12]

शब्दावली

पारदर्शिता वाली छवि में डिज़ाइन द्वारा ग्रेसफुल डिग्रेडेशन का एक उदाहरण। शीर्ष दो छवियों में से प्रत्येक एक दर्शक में समग्र छवि को देखने का परिणाम है जो पारदर्शिता को पहचानता है। नीचे की दो छवियां एक ऐसे दर्शक का परिणाम हैं, जिसमें पारदर्शिता के लिए कोई समर्थन नहीं है। क्योंकि ट्रांसपेरेंसी मास्क (सेंटर बॉटम) को हटा दिया जाता है, केवल ओवरले (सेंटर टॉप) रहता है; बाईं ओर की छवि को इनायत से नीचा दिखाने के लिए डिज़ाइन किया गया है, इसलिए इसकी पारदर्शिता जानकारी के बिना अभी भी सार्थक है।

एक या अधिक घटक विफल होने पर भी दोष-सहिष्णु प्रणाली प्रदर्शन के समान स्तर पर जारी रह सकती है। उदाहरण के लिए,एक बैकअप विद्युत जनरेटर भवन दीवार के आउटलेट को समान वोल्टेज प्रदान करेगा,भले ही ग्रिड पावर विफल हो जाए।

एक प्रणाली जो सुरक्षित,या असफल-सुरक्षित, या विफल होने के लिए डिज़ाइन की गई है, चाहे वह कम स्तर पर कार्य करे या पूरी तरह से विफल हो, ऐसा इस तरह से करता है जो लोगों, संपत्ति या डेटा ( data) को चोट, क्षति ,घुसपैठ या प्रकटीकरण से बचाता है।कंप्यूटर में, एक त्रुटि का अनुभव करने के बाद डेटा अवमिश्रण को रोकने के लिए ग्रेसफुल एग्जिट (एक अनियंत्रित क्रैश के विपरीत) को निष्पादित करके एक प्रोग्राम विफल-सुरक्षित हो सकता है। इस तरह का अंतर "अच्छी तरह से विफल" और "बुरी तरह से विफल" के बीच किया जाता है।

विफल-घातक विपरीत रणनीति है, जिसका उपयोग हथियार प्रणालियों में किया जा सकता है जो लक्ष्य को मारने या घायल करने के लिए डिज़ाइन किए गए हैं, भले ही सिस्टम का हिस्सा क्षतिग्रस्त या नष्ट हो गया हो।

एक प्रणाली जिसे ग्रेसफुल डिग्रेडेशन का अनुभव करने के लिए डिज़ाइन किया गया है, या सॉफ्ट विफल (कंप्यूटिंग में उपयोग किया जाता है, असफल सुरक्षित के समान[13]) कुछ घटक विफलताओं के बाद प्रदर्शन के कम स्तर पर काम करता है। उदाहरण के लिए, एक इमारत कम स्तर पर प्रकाश और कम गति पर लिफ्ट संचालित कर सकती है यदि ग्रिड पावर विफल हो जाती है, तो लोगों को पूरी तरह से अंधेरे में फंसाने के बजाय पूरी शक्ति से काम करना जारी रखता है। ग्रेसफुल डिग्रेडेशन के एक उदाहरण की गणना में यह है कि यदि ऑनलाइन वीडियो स्ट्रीम करने के लिए अपर्याप्त नेटवर्क बैंडविड्थ उपलब्ध है, तो उच्च-रिज़ॉल्यूशन संस्करण के स्थान पर कम-रिज़ॉल्यूशन संस्करण को स्ट्रीम किया जा सकता है। प्रोग्रेसिव एन्हांसमेंट कंप्यूटिंग में एक उदाहरण है, जहां वेब पेज पुराने, छोटे स्क्रीन या सीमित क्षमता वाले वेब ब्राउज़र के लिए एक बुनियादी कार्यात्मक प्रारूप में उपलब्ध हैं, लेकिन अतिरिक्त तकनीकों को संभालने में सक्षम ब्राउज़रों के लिए एक उन्नत संस्करण में उपलब्ध हैं या बड़े डिस्प्ले वाले ब्राउज़र में उपलब्ध हैं।

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

उच्च विफलता पारदर्शिता के साथ एक प्रणाली उपयोगकर्ताओं को सचेत करेगी कि एक घटक विफलता हुई है, भले ही वह पूर्ण प्रदर्शन के साथ काम करना जारी रखे, ताकि विफलता की मरम्मत की जा सके या आसन्न पूर्ण विफलता प्रत्याशित हो।[14] इसी तरह, एक फेल-फास्ट घटक को विफलता के पहले बिंदु पर रिपोर्ट करने के लिए डिज़ाइन किया गया है, बजाय इसके कि डाउनस्ट्रीम घटकों को विफल होने और रिपोर्ट उत्पन्न करने की अनुमति दी जाए। यह अंतर्निहित समस्या का आसान निदान करने की अनुमति देता है, और विघटित स्थिति में अनुचित संचालन को रोक सकता है।

सिंगल फॉल्ट कंडीशन

सिंगल फॉल्ट की स्थिति एक ऐसी स्थिति है जहां किसी खतरे से बचाव का माध्यम दोषपूर्ण होता है।। यदि सिंगल फॉल्ट की स्थिति अपरिहार्य रूप से एक और एकल गलती की स्थिति में होती है, तो दो विफलताओं को एक एकल दोष स्थिति के रूप में माना जाता है।[15] एक स्रोत निम्नलिखित उदाहरण प्रस्तुत करता है:

मानदंड

प्रत्येक घटक के लिए दोष-सहनशील डिज़ाइन प्रदान करना सामान्य रूप से एक विकल्प नहीं है। एसोसिएटेड रिडंडेंसी कई दंड लाता है: वजन,आकार, बिजली की खपत, लागत में वृद्धि, साथ ही डिजाइन, सत्यापन और परीक्षण के लिए समय। इसलिए, यह निर्धारित करने के लिए कई विकल्पों की जांच की जानी चाहिए कि कौन से घटक दोष सहिष्णु होने चाहिए।[16]

  • घटक कितना क्रिटिकल है? कार में रेडियो क्रिटिकल नहीं होता है, इसलिए इस कंपोनेंट में फॉल्ट टॉलरेंस की जरूरत कम होती है।
  • घटक के विफल होने की कितनी संभावना है? कार में ड्राइव शाफ्ट जैसे कुछ घटकों के विफल होने की संभावना नहीं है, इसलिए किसी दोष सहिष्णुता की आवश्यकता नहीं है।
  • घटक फॉल्ट टॉलरेंट बनाना कितना महंगा है? एक निरर्थक कार इंजन की आवश्यकता, उदाहरण के लिए, आर्थिक रूप से और वजन और स्थान दोनों के मामले में बहुत महंगा होगा, जिस पर विचार किया जा सकता है।

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

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

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

मोटरसाइकिलों पर, समान स्तर की विफलता-सुरक्षा सरल विधियों द्वारा प्रदान की जाती है; सबसे पहले आगे और पीछे के ब्रेक सिस्टम पूरी तरह से अलग हैं, भले ही उनकी सक्रियता की विधि (जो केबल, रॉड या हाइड्रोलिक हो सकती है) की परवाह किए बिना, एक को पूरी तरह से विफल होने की अनुमति देता है जबकि दूसरे को अप्रभावित छोड़ देता है। दूसरे, स्वचालित की तुलना में पिछला ब्रेक अपेक्षाकृत मजबूत है, यहां तक ​​​​कि स्पोर्ट्स मॉडल पर एक शक्तिशाली डिस्क होने के बावजूद, सामान्य इरादा फ्रंट सिस्टम के लिए ब्रेकिंग बल का विशाल बहुमत प्रदान करना है; चूंकि समग्र वाहन का वजन अधिक केंद्रीय होता है, पिछला टायर आम तौर पर बड़ा और ग्रिपियर होता है, और सवार उस पर अधिक भार डालने के लिए पीछे की ओर झुक सकता है, इसलिए पहिया के लॉक होने से पहले अधिक ब्रेक बल लगाने की अनुमति देता है। सस्ती, धीमी उपयोगिता-श्रेणी की मशीनों पर, फ्रंट व्हील को अतिरिक्त ब्रेक बल और आसान पैकेजिंग के लिए हाइड्रोलिक डिस्क का उपयोग करना चाहिए, रियर आमतौर पर एक साधारण, कुछ हद तक निष्फल, लेकिन असाधारण रूप से मजबूत रॉड-एक्ट्यूएटेड ड्रम होगा,आसानी के लिए इस तरह से फुटपेडल को पहिया से जोड़ने और,इससे भी महत्वपूर्ण बात,विनाशकारी विफलता की लगभग असंभवता, भले ही बाकी मशीन, जैसे कि उनके पहले कुछ वर्षों के उपयोग के बाद कम कीमत वाली बाइक, उपेक्षित रखरखाव से पतन के बिंदु पर है।

आवश्यकताएँ

दोष सहिष्णुता को बुनियादी विशेषताओं की आवश्यकता है:

  1. विफलता का कोई एकल बिंदु नहीं - यदि कोई सिस्टम विफलता का अनुभव करता है, तो उसे मरम्मत प्रक्रिया के दौरान बिना किसी रुकावट के काम करना जारी रखना चाहिए।
  2. विफल घटक के लिए दोष अलग करना - जब कोई विफलता होती है,तो सिस्टम को विफल घटक को अलग करने में सक्षम होना चाहिए। इसके लिए विफलता पहचान तंत्र को जोड़ने की आवश्यकता है जो केवल त्रुटि अलग करने के उद्देश्य से मौजूद है। एक त्रुटि की स्थिति मे असफल घटक को वर्गीकृत करने की आवश्यकता होती है। राष्ट्रीय मानक और प्रौद्योगिकी संस्थान (NIST) स्थिति, कारण, अवधि और प्रभाव के आधार पर त्रुटियो को वर्गीकृत करता है।[clarification needed]
  3. विफलता के प्रसार को रोकने के लिए दोष नियंत्रण - कुछ विफल प्रक्रिया पूरे सिस्टम को विफल कर सकती हैं। इस तरह की विफलता का एक उदाहरण बेकार ट्रांसमीटर है जो एक सिस्टम में वैध संचार को प्रभावित कर सकता है और पूरे सिस्टम की विफलता का कारण बन सकता है। फ़ायरवॉल (Firewalls) या अन्य प्रक्रिया की आवश्यकता है,जो सिस्टम की सुरक्षा के लिए एक बेकार ट्रांसमी