फॉल्ट टॉलरेंस

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

इसके अलावा, दोष-सहिष्णुता (फॉल्ट टॉलरेंस) प्रणालियों को नियोजित जाँच आउटेज और अनियोजित जाँच आउटेज दोनों के संदर्भ में चित्रित किया गया है। इन्हें आमतौर पर एप्लिकेशन स्तर(application level) पर  मापा जाता है,न कि हार्डवेयर स्तर पर। योग्यता के आंकड़े को उपलब्धता कहा जाता है और इसे प्रतिशत के रूप में व्यक्त किया जाता है। उदाहरण के लिए,फाइव नाइन ( five nines) प्रणाली सांख्यिकीय रूप से 99.999% उपलब्धता प्रदान करेगी।

दोष- सहिष्णुता (फॉल्ट टॉलरेंस) प्रणालियाँ आमतौर पर अतिरेक की अवधारणा पर आधारित होती हैं।

दोष सहिष्णुता तकनीक
महत्वपूर्ण प्रणालियों के लिए अनुसंधान में बड़ी मात्रा में बहुविषयक अध्यययन शामिल हैं। प्रणाली जितनी अधिक जटिल होगी,उतनी ही सावधानी से सभी संभावित अंतःक्रियाओं पर विचार करना होगा और इसके लिए तैयार रहना होगा। परिवहन,सार्वजनिक उपयोगिताओं और सेना में उच्च-मूल्य वाली प्रणालियों के महत्व को ध्यान में रखते हुए,अनुसंधान में संबंधित विषयों का क्षेत्र बहुत विस्तृत है: इसमें सॉफ्टवेयर मॉडलिंग( software modeling)या हार्डवेयर डिजाइन(hardware design) जैसे स्पष्ट विषय शामिल हो सकते हैं,जैसे स्टोकेस्टिक(stochastic ) मॉडल, ग्राफ सिद्धांत ,औपचारिक तर्क,समानांतर प्रसंस्करण(parallel processing), रिमोट डेटा ट्रांसमिशन,और बहुत कुछ।

स्पेयर कंपोनेंट्स (अतिरिक़्त घटक) फॉल्ट टॉलरेंस की पहली मूलभूत विशेषता को तीन तरीकों से संबोधित करते हैं:
RAID 0 को छोड़कर,RAID (रेडंडान्त ऐरे ऑफ़ इनएक्सपेंसिवे डिसकस ) एक दोष-सहिष्णुता स्टोरेज डिवाइस(storage device) के उदाहरण हैं जो डेटा अतिरेक का उपयोग करता है।
 * प्रतिकृति: एक ही सिस्टम या सबसिस्टम के कई समान उदाहरण प्रदान करना,उन सभी के कार्यों या अनुरोधों को निर्देशित करना,और निर्दिष्ट संख्या के आधार पर सही परिणाम चुनना।
 * अतिरेक: एक ही प्रणाली के कई समान उदाहरण प्रदान करना और विफलता के मामले में शेष उदाहरणों में से एक पर स्विच करना।
 * विविधता: एक ही विनिर्देश के कई 'अलग' कार्यान्वयन प्रदान करना,और एक विशिष्ट कार्यान्वयन में त्रुटियों से निपटने के लिए प्रतिकृति प्रणालियों की तरह उनका उपयोग करना।

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

लॉकस्टेप दोष-सहिष्णुता मशीनों को आसानी से सिंक्रोनस (समकालिक) बनाता है, प्रतिकृति के प्रत्येक गेट के साथ घड़ी के एक ही किनारे पर परिवर्तन होता है,और प्रतिकृति के लिए घड़ियां बिल्कुल चरण में होती हैं। हालांकि,इसके बिना लॉकस्टेप सिस्टम बनाना संभव है।

प्रतिकृतियों को सिंक्रोनस(समकालिकता) में लाने के लिए उनकी आंतरिक संग्रहीत अवस्थाओं को समान बनाने की आवश्यकता होती है। उन्हें रीसेट की स्थिति(reset state)से शुरू किया जा सकता है। वैकल्पिक रूप से,एक प्रतिकृति की आंतरिक स्थिति को दूसरी प्रतिकृति में कॉपी किया जा सकता है।

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

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

यह तकनीक गतिशील जांच के लिए कोड को फिर से लिखती है जिससेे निष्पादन समय 80% से 500% तक बढ़ जाता हैं।

रिकवरी शेपर्ड
रिकवरी शेपर्ड एक प्रभावहीन तकनीक है जो सॉफ़्टवेयर प्रोग्राम को घातक त्रुटियों से बचने में सक्षम बनाती है जैसे कि नल पॉइंटर डीरेफरेंस(null pointer dereference)और शून्य से विभाजित करना। विफल कंप्यूटिंग तकनीक की तुलना में, रिकवरी शेपर्ड को पुन: संकलित करने की आवश्यकता नहीं होती,यह प्रोग्राम सीधे बाइनरी पर काम करता है।

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

सर्किट ब्रेकर
सर्किट ब्रेकर डिजाइन पैटर्न(circuit breaker design pattern) सिस्टम को भयावह विफलताओं से की एक तकनीक है।

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

दो प्रकार की अतिरेक संभव है, अंतरिक्ष अतिरेक और समय अतिरेक।अंतरिक्ष अतिरेक अतिरिक्त घटक,कार्य या डेटा आइटम प्रदान करता है जो त्रुटि मुक्त संचालन के लिए अनावश्यक हैं।अंतरिक्ष अतिरेक को हार्डवेयर,सॉफ्टवेयर और सूचना अतिरेक में वर्गीकृत किया जाता है,जो सिस्टम में जोड़े गए अनावश्यक संसाधनों के प्रकार पर निर्भर करता है।समय के अतिरेक में गणना या डेटा ट्रांसमिशन दोहराया जाता है और परिणाम की तुलना पिछले परिणाम की संग्रहीत प्रति(stored copy)से की जाती है। इस तरह के परीक्षण को 'इन सर्विस फॉल्ट टॉलरेंस टेस्टिंग (ISFTT) कहा जाता है।

नुकसान
दोष-सहिष्णुता डिजाइन के फायदे स्पष्ट हैं, जबकि इसके कोई नुकसान नहीं हैं:


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

संबंधित शब्द
दोष सहिष्णुता और उन प्रणालियों में अंतर है जिनमें शायद ही कभी समस्याएं होती हैं। उदाहरण के लिए,वेस्टर्न इलेक्ट्रिक क्रॉसबार(Western Electric crossbar) सिस्टम "दोष प्रतिरोधी" थे क्योंकि इसमे विफलता दर प्रति चालीस वर्षों में दो घंटे थी। लेकिन जब कोई त्रुटि हुई तो सिस्टम ने काम करना बंद कर दिया,और इसलिए यह 'दोष सहिष्णु' नहीं थे।

यह भी देखे

 * Byzantine fault tolerance
 * Control reconfiguration
 * Damage tolerance
 * Data redundancy
 * Defence in depth
 * Elegant degradation
 * Error detection and correction
 * Error-tolerant design (human error-tolerant design)
 * Failure semantics
 * Fall back and forward
 * Graceful exit
 * Intrusion tolerance
 * List of system quality attributes
 * Resilience (ecology)
 * Progressive enhancement
 * Resilience (network)
 * Robustness (computer science)
 * Rollback (data management)
 * Safe-life design
 * Self-management (computer science)
 * Software diversity