रिवर्स पिरामिड मॉडल
वास्तुकला में "रिवर्स पिरामिड मॉडल" क्या है
रिवर्स पिरामिड मॉडल सिस्टम और प्रोटोकॉल डिजाइन करने का एक तरीका है जिसमें सबसे महत्वपूर्ण और कम से कम आवश्यक जानकारी/कार्यक्षमता पहले और गारंटी दी जाती है, और कम महत्वपूर्ण विवरण उत्तरोत्तर और वैकल्पिक रूप से जोड़े जाते हैं। यह शब्द पत्रकारिता से एक विचार उधार लेता है (मुख्य बात पहली बार में है), लेकिन इंजीनियरिंग कार्यों के लिए अनुकूलित है: महत्वपूर्ण पथ किसी भी स्थिति में काम करता है, बाकी सब कुछ "संवर्धन की परतें" है।
सहज चित्र: शीर्ष पर संकीर्ण शीर्ष "न्यूनतम वारंटी अनुबंध" (एमजीसी) है, नीचे एक्सटेंशन, अनुकूलन और समृद्ध विशेषताएं हैं जो सिस्टम लागू होती हैं यदि संसाधन/संगतता हैं।
जहां यह लागू होता है
नेटवर्क प्रोटोकॉल और एपीआई: REST/gRPC/GraphQL, वेबहूक, इवेंट ब्रोकर।
स्ट्रीमिंग चैनल: वेबसॉकेट, एसएसई, काफ्का/एनएटीएस, आरटीसी।
सेवा वास्तुकला: महत्वपूर्ण पथ बनाम साइड इफेक्ट्स (ऑडिट, एनालिटिक्स, कैश वार्मिंग)।
मोबाइल/वेब क्लाइंट: पहले "कंकाल" यूआई और प्रमुख डेटा, फिर मीडिया और सिफारिशों का आलसी लोडिंग।
भुगतान और जोखिम श्रृंखलाएं: प्राधिकरण/आरक्षण - प्राथमिकता में; विरोधी धोखाधड़ी/विश्लेषण - अतुल्यकालिक, समय सीमा के साथ।
अवलोकन: हमेशा लॉग/न्यूनतम स्तर मीट्रिक; ट्रेस/प्रोफाइलिंग - नमूना द्वारा।
मॉडल सिद्धांत
1. न्यूनतम वारंटी संविदा (एमजीसी)
क्षेत्रों और संक्रियाओं का एक सेट जिसके बिना स्क्रिप्ट का कोई मतलब नहीं है। यह स्थिर, पिछड़ा-संगत है और पहले गुजरता है।
2. प्रगतिशील संवर्धन
अतिरिक्त फ़ील्ड/फ़ंक्शन वैकल्पिक एक्सटेंशन (क्षमताओं/फ़ीचर फ़्लैग/बातचीत) के रूप में वितरित किए
3. विफलता के बिना गिरावट
जब ओवरलोड या आंशिक रूप से अनुपलब्ध होता है, तो सिस्टम एमजीसी को चालू रखते हुए वैकल्पिक परतों को छोड़ देता है।
4. स्पष्ट प्राथमिकता और एसएलए
प्रत्येक परत का अपना SLO (विलंबता, उपलब्धता), कतारें और सेवा की कक्षाएं (QoS) होती हैं।
5. सर्किट का योगात्मक विकास
नए क्षेत्रों को शून्य/वैकल्पिक के रूप में जोड़ा जाता है, ग्राहकों को न तोड़ें; कठिन परिवर्तन - केवल नए संस्करण के माध्
6. परत द्वारा अवलोकन
मेट्रिक्स और लॉग को आलोचना द्वारा चिह्नित किया जाता है: 'कोर। ',' enh। ',' बैच। 'यह देखने के लिए कि सिस्टम लोड के तहत क्या बलिदान करता है।
"क्लासिक" परत पिरामिड के साथ तुलना
शास्त्रीय वास्तुकला (बॉटम्स - बेस, टॉप्स - यूआई) निर्भरता पर जोर देता है।
रिवर्स पिरामिड डिलीवरी के महत्व और क्रम पर जोर देता है: पहले "कोर", फिर "अच्छा-से-अच्छा"।
मॉडल प्रोटोकॉल डिजाइन
1) REST/HTTP
एमजीसी: न्यूनतम संसाधन/समापन बिंदु और आवश्यक क्षेत्र।
एक्सटेंशन:- सामग्री नकारात्मक ('स्वीकार करें', 'प्राथमिकता'),
- पैरामीटर '? शामिल = '/'? फ़ील्ड्स = 'चयनात्मक दानेदारी के लिए,
- इनलाइन के बजाय "भारी" संलग्नक (पूर्व-हस्ताक्षरित URL) से लिंक।
- गिरावट: जब समय समाप्त हो जाता है, तो एमजीसी को घोंसले वाले संग्रह के बिना दें; 206 बड़े निकायों के लिए आंशिक सामग्री
- संस्करण: पुराने अनुबंधों को बदले बिना योगात्मक क्षेत्र; केवल परिवर्तनों को तोड़ ने के लिए
2) जीआरपीसी
प्रोटो: सुरक्षित टैग नंबरिंग के साथ नए 'वैकल्पिक' क्षेत्र; हटाए गए टैग का पुन: उपयोग न करें।
सर्वर-साइड डेडलाइन और प्रति-विधि QoS (प्राथमिकता से अधिक महत्वपूर्ण RPC)।
स्ट्रीमिंग: पहले संदेश - हेडर/योग, फिर चंक द्वारा विवरण।
3) इवेंट बसें (काफ्का/एनएटीएस)
ईवेंट-कोर: 'इवेंट _ type', 'id', 'hease _ at', न्यूनतम व्यावसायिक क्षेत्र।
संवर्धन: हम आउटबॉक्स/सीडीसी और व्यक्तिगत विषयों '-enriched' में बाहर ले जाते हैं।
पहले योग करें, बाद में विवरण: उपभोक्ता कोर द्वारा व्यवसाय प्रक्रिया को पूरा कर सकते हैं, और विवरण अतुल्यकालिक रूप से लोड किए जाते हैं।
पैटर्न जो रिवर्स पिरामिड के साथ अच्छी तरह से फिट होते हैं
क्रिटिकल पाथ फर्स्ट: अतुल्यकालिक दुष्प्रभावों से अलग तुल्यकालिक "अनिवार्य"।
लिखें-आगे/आउटबॉक्स: घटना के तथ्य को रिकॉर्ड करें, बाकी पृष्ठभूमि वितरण है।
आलसी और वृद्धिशील लाभ: पृष्ठभूमि, कर्सर, 'इफ-संशोधित-क्योंकि '/ETag।
क्षमताएं डिस्कवरी - सर्वर/क्लाइंट स्पष्ट रूप से संचार करते हैं जो एक्सटेंशन समर्थन करते हैं।
बैकप्रेशर और बजट: समय सीमा, सीपीयू/आईओ प्रति परत सीमित; लोड के तहत द्वितीयक कार्यों को रद्द करना।
SLO-Scoped Caching: हम "कोर" को अधिक आक्रामक, संवर्धन - छोटा/पतला कैश करते हैं।
कार्यान्वयन एल्गोरिथ्म
1. परिदृश्य मानचित्रण: उपयोगकर्ता यात्रा को लिखें और "मूल्य के क्षण" को उजागर करें।
2. MGC परिभाषित करें: मूल्य प्राप्त करने के लिए न्यूनतम क्षेत
3. परतों में विभाजित करें: 'कोर', 'विस्तारित', 'एनालिटिक्स/बैच'।
4. प्रत्येक परत के लिए SLO/SLA और QoS सेट करें।
5. डिजाइन गिरावट: हम N% विफलता/p95 वृद्धि पर क्या त्याग करते हैं?
6. योजनाओं का विकास: संस्करण नीति, योगात्मक-पहला।
7. अवलोकन: मेट्रिक्स/लॉग/ट्रैक में परत टैग, "कोर" पर अलर्ट।
8. परीक्षण: परत द्वारा अराजकता-इंजीनियरिंग और गलती-इंजेक्शन।
9. लॉन्च और प्रतिक्रिया: ficheflags पर एक्सटेंशन चालू करें और कैनरी पर रोल आउट करें।
परत द्वारा मेट्रिक्स और एसएलओ
कोर: p95/p99 विलंबता, सफल महत्वपूर्ण संचालन का प्रतिशत, गिरावट के दौरान गलती सहिष्णुता।
विस्तारित: समृद्ध प्रतिक्रियाओं का प्रतिशत, औसत लोडिंग समय।
बैच/एनालिटिक्स: वास्तविक समय से अंतराल, प्रति विंडो संसाधित घटनाओं का अनुपात।
व्यवसाय मैट्रिक्स: बनाम अधिभार पर "मूल्य के बिंदु" में रूपांतरण सामान्य है।
एंटी-पैटर्न
"सब कुछ कोर है": एक्सटेंशन अनिवार्य हो जाते हैं, गिरावट असंभव हो जाती है।
नए प्रमुख संस्करण के बिना एमजीसी को तोड़ ना।
छिपी हुई नाजुकता: महत्वपूर्ण पथ बाहरी "माध्यमिक" निर्भरता पर निर्भर करता है (उदाहरण के लिए, तुल्यकालिक विरोधी धोखाधड़ी कॉल)।
निहित एक्सटेंशन: ग्राहक नहीं जानते कि क्या सक्षम/अक्षम किया जा सकता है।
अवलोकन की कमी: सिस्टम "चुपचाप" अपमानित करता है, और आप यह नहीं देखते कि कहां है।
उदाहरण
ए। उपयोगकर्ता प्रोफ़ाइल (REST)
MGC: 'id', 'display _ name', 'avatar _ url', 'tier'.
एक्सटेंशन: 'बैज []', 'social _ links []', 'हालिया _ activity []' by '? शामिल = '।
गिरावट: समय समाप्त होने पर, एमजीसी और साझा संसाधनों (HATEOAS/URL) को लिंक दें।
बी। भुगतान प्राधिकरण
एमजीसी: प्राधिकरण परिणाम (अनुमोदित/अस्वीकृत), 'लेनदेन _ आईडी', 'राशि', 'मुद्रा'।
एक्सटेंशन: 3DS टेलीमेट्री, रिस्क रेट, जियो, पार्टनर एट्रिब्यूशन - इवेंट 'पेमेंट द्वारा अतुल्यकालिक। अधिकृत '।
गिरावट: यदि एनालिटिक्स विफल हो जाता है, तो भुगतान चला जाता है, और ऑडिट/स्कोरिंग कैच अप होता है।
बी। स्ट्रीम उद्धरण
एमजीसी: नवीनतम मूल्य "स्नैपशॉट"।
एक्सटेंशन: ग्लास डेप्थ, एग्रीगेटेड इंडिकेटर - स्नैपशॉट के बाद स्ट्रीम।
गिरावट: लोड के तहत, विस्तार अपडेट की आवृत्ति गिरती है, लेकिन स्नैपशॉट स्थिर है।
वर्शनिंग और एवोल्यूशन
अतिरिक्त-पहला: नए क्षेत्र 'वैकल्पिक/शून्य', पुराने बने हुए हैं।
शब्दार्थ संस्करण: कर्नेल के लिए 'v1'; 'v1। x '- एक्सटेंशन;' v2 '- जब MGC बदलता है।
कोड में अनुबंध: JSON स्कीमा/Protobuf + CI "नॉन-ब्रेकिंग" डिफ्यूज़का सत्यापन।
सुरक्षा और अनुपालन
एमजीसी हस्ताक्षरित/प्रमाणित: क्षेत्रों के न्यूनतम सेट में क्रिप्टोग्राफिक अखंडता है।
कम से कम विशेषाधिकार: व्यक्तिगत स्कोप द्वारा संवर्धन तक पहुंच।
पीआईआई/वित्तीय डेटा: एक्सटेंशन, कुंजी पृथक्करण और टीटीएल में टेक-आउट।
अवलोकन और डिबगिंग
मीट्रिक उपसर्ग: 'कोर। अनुरोध। अवधि ',' enh। संलग्न करें। load_time', 'बैच। अंतराल '।
नमूना: कोर त्रुटियों के लिए 100% लॉग; नमूना एक्सटेंशन।
फ्लैग टेलीमेट्री: आप देख सकते हैं कि कौन से एक्सटेंशन सक्षम हैं जिनके लिए ग्राहक हैं।
कार्यान्वयन चेकलिस्ट (संक्षिप्त)
- एमजीसी परिभाषित और प्रलेखित।
- एक्सटेंशन क्षमताओं/झंडे के माध्यम से घोषित किए जाते हैं।
- परत द्वारा एसएलओ/क्यूओएस/कतारों को कॉन्फ़िगर किया।
- अराजकता परीक्षणों द्वारा परीक्षण किया गया।
- योजनाओं का विकास केवल "ब्रेक" के बिना योज्य है।
- मेट्रिक्स/ट्रेल्स/लॉग स्तरित हैं।
- एक्सटेंशन सक्षम करने के लिए ग्राहकों के लिए प्रलेखन।
एफएक्यू
क्या रिवर्स पिरामिड स्तरित वास्तुकला की जगह लेता है?
नहीं, यह नहीं है। यह एक ऑर्थोगोनल सिद्धांत है: परिचित परतों पर कार्यक्षमता को कैसे वितरित और प्राथमिकता दें।
जब आवेदन नहीं करना है?
ऑफ़ लाइन पैकेजों में, जहां आंशिक वितरण अर्थहीन है (परमाणु के साथ क्रिप्टो प्रोटोकॉल), या जब सभी क्षेत्र समान रूप से महत्वपूर्ण हैं।
सुंदर गिरावट से क्या अलग है?
रिवर्स पिरामिड शुरू में न्यूनतम पर्याप्त अनुबंध और इसकी प्राथमिकताओं को प्रोजेक्ट करता है, और पहले से ही ओवरलोडेड सिस्टम को "तथ्य के बाद" बचाने की कोशिश नहीं
परिणाम
रिवर्स पिरामिड मॉडल वास्तुकला में मदद करता है और प्रोटोकॉल किसी भी भार के तहत उपयोगी रहते हैं: मुख्य बात पहले और निश्चित रूप से है; यदि संभव हो तो बाकी। यह महत्वपूर्ण पथ की उपलब्धता को बढ़ाता है, सुविधाओं के प्रदर्शन को गति देता है और बिना टूटे विकास को सरल बनाता है।