क्या "सुंदर गिरावट" है?


11

मैंने इस शब्द "ग्रेसफुल डिग्रेडेशन" के बारे में बहुत कुछ सुना है।

उदाहरण के लिए ,

 "An application server should gracefully degrage when it is under heavy load "

  "Graceful degradation of user interfaces.... "

यह शब्द मुझे एक अमूर्त चीज की तरह लगता है। इसका कोई ठोस उदाहरण क्या है?


5
इस विषय पर एक अच्छा लेख codinghorror.com/blog/2011/04/…
JF Dion

जवाबों:


10

यहाँ कुछ उदाहरण हैं:

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

5

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

ठोस उदाहरण: आपके आवेदन में दो डेटा स्रोत हैं, उनमें से एक में आप व्यक्तियों को स्टोर करते हैं, दूसरे में आप खाते स्टोर करते हैं। भले ही खाता डेटाबेस विफल हो जाता है, अगर आवेदन में एक नीचा मोड है, तो आपको अभी भी नए व्यक्ति बनाने में सक्षम होना चाहिए, भले ही उनके खातों के साथ बातचीत न करें।

उपयोगकर्ता इंटरफ़ेस के रूप में, इसका आमतौर पर मतलब है कि आप उपयोगकर्ता को स्पष्ट रूप से इंगित करते हैं कि कुछ सुविधाएँ अक्षम हैं, और कुछ चेतावनी संदेश प्रदर्शित करते हैं ताकि वह अंधेरे में बाहर न निकले क्योंकि कुछ अनुपलब्ध है।

इसके अलावा, दोष-सहिष्णु प्रणालियों से संबंधित विकिपीडिया प्रविष्टि है ।


2

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

एक प्रमुख उदाहरण वह <img>टैग है जिसमें वह altविशेषता होती है जो उन मामलों के लिए सहायक होती है जहाँ छवियां अवरुद्ध होती हैं या बंद हो जाती हैं, अब ये छवियों के लिए कुछ सार्थक संदर्भ देते हैं (केवल अगर हम निर्दिष्ट करते हैं)।

एक और उदाहरण मैं एक त्रुटि के मामले में स्टाइलशीट के बारे में सोच सकता हूं या अनुपलब्धता के कारण ब्राउज़र पृष्ठ को दिखाने / प्रदर्शित करने के लिए स्वयं का एक सामान्य संस्करण प्रदान करता है।

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


1

इसका मतलब है कि इनपुट और राज्य डिजाइन सीमा से अधिक होने पर, आउटपुट यथासंभव उचित और विश्वसनीय रहते हैं।

यदि यह एक ऐसा सर्वर है जिसे 100 युगपत कनेक्शनों को संभालने के लिए डिज़ाइन किया गया है, तो यह क्रैश नहीं होता है या पागल परिणाम 101 या 150 कनेक्शनों पर लौटना शुरू कर देता है - यह धीमा हो जाता है या शायद कुछ कनेक्शनों को गिरा देता है, लेकिन ज्यादातर काम करना जारी रखता है। यदि यह 1 बिलियन रिकॉर्ड को संभालने के लिए बनाया गया डेटाबेस है, तो यह अचानक 1.01 बिलियन की अनुपयोगी अवस्था में धीमा नहीं पड़ता है।


1

यदि आपके पास कोई ग्राफ़िकल सिस्टम नहीं है (जैसे कोई X11 सर्वर नहीं चल रहा है), तो आपके प्रोग्राम को कम से कम एक CLI प्रदान करना चाहिए, जैसे ncurses।

vi में एक डंब मोड है जिसमें यह पूर्व की तरह व्यवहार करता है, यदि टर्मिनल में बहुत कम विशेषताएं हैं।


1

जब आपकी साइट जावास्क्रिप्ट या फ्लैश पर निर्भर करती है या उपयोगकर्ता के पास ऐसी कोई तकनीक नहीं होती है, जिसे निष्क्रिय या अक्षम किया जाता है, तो वेब एप्स बनाते समय सुंदर गिरावट आती है।

तब आपको अभी भी केवल HTML के साथ कुछ बुनियादी कार्यक्षमता प्रदान करनी चाहिए या कम से कम एक संदेश क्यों साइट अपेक्षा के अनुरूप काम नहीं कर रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.