चरण 1: मामलों और बाधाओं का उपयोग करें आवश्यकताओं को इकट्ठा करें और समस्या को हल करें। उपयोग के मामलों और बाधाओं को स्पष्ट करने के लिए प्रश्न पूछें। मान्यताओं पर चर्चा करें।
साक्षात्कारकर्ता के बिना स्पष्ट प्रश्नों को संबोधित करने के लिए, हम कुछ उपयोग मामलों और बाधाओं को परिभाषित करेंगे।
बक्सों का इस्तेमाल करें हम केवल निम्नलिखित उपयोग के मामलों को संभालने के लिए समस्या को हल करेंगे उपयोगकर्ता एक वित्तीय खाते से जुड़ता है सेवा खाते से लेनदेन निकालती है अपडेट रोजाना लेन-देन को वर्गीकृत करता है उपयोगकर्ता द्वारा मैनुअल श्रेणी को ओवरराइड करने देता है कोई स्वचालित पुन: वर्गीकरण नहीं है श्रेणी के आधार पर मासिक खर्च का विश्लेषण करता है सेवा बजट की सिफारिश करती है उपयोगकर्ताओं को मैन्युअल रूप से एक बजट निर्धारित करने की अनुमति देता है बजट के निकट या उससे अधिक होने पर सूचनाएं भेजता है सेवा की उच्च उपलब्धता है
दायरे से बाहर सेवा अतिरिक्त लॉगिंग और एनालिटिक्स करती है
अड़चनें और धारणाएँ राज्य की धारणाएँ यातायात समान रूप से वितरित नहीं किया जाता है खातों का स्वचालित दैनिक अद्यतन केवल पिछले 30 दिनों में सक्रिय उपयोगकर्ताओं पर लागू होता है वित्तीय खातों को जोड़ना या निकालना अपेक्षाकृत दुर्लभ है बजट सूचनाओं को तत्काल होने की आवश्यकता नहीं है 10 मिलियन उपयोगकर्ता प्रति उपयोगकर्ता 10 बजट श्रेणियां = 100 मिलियन बजट आइटम
उदाहरण श्रेणियां: आवास = $ 1,000 भोजन = $ 200 गैस = $ 100 लेन-देन श्रेणी निर्धारित करने के लिए विक्रेताओं का उपयोग किया जाता है 50,000 विक्रेता 30 मिलियन वित्तीय खाते प्रति माह 5 बिलियन का लेनदेन प्रति माह 500 मिलियन रीड अनुरोध 10: 1 अनुपात पढ़ने के लिए लिखें भारी-भरकम, उपयोगकर्ता दैनिक लेनदेन करते हैं, लेकिन कुछ लोग साइट पर रोज़ जाते हैं
उपयोग की गणना करें अपने साक्षात्कारकर्ता के साथ स्पष्ट करें कि क्या आपको बैक-ऑफ-द-लिफाफा उपयोग गणनाओं को चलाना चाहिए।
प्रति लेनदेन आकार: user_id - 8 बाइट्स create_at - 5 बाइट्स विक्रेता - 32 बाइट्स राशि - 5 बाइट्स कुल: ~ ५० बाइट्स प्रति माह नए लेनदेन की 250 जीबी सामग्री प्रति लेनदेन 50 बाइट्स * प्रति माह 5 बिलियन लेनदेन 3 वर्षों में 9 नए लेनदेन की टीबी सामग्री मान लें कि मौजूदा वाले अपडेट के बजाय अधिकांश नए लेनदेन हैं 2,000 प्रति सेकंड औसतन लेनदेन औसत पर प्रति सेकंड 200 रीड अनुरोध
आसान रूपांतरण गाइड:
2.5 मिलियन सेकंड प्रति माह 1 प्रति सेकंड अनुरोध = प्रति माह 2.5 मिलियन अनुरोध 40 प्रति सेकंड अनुरोध = प्रति माह 100 मिलियन अनुरोध प्रति माह 400 अनुरोध = प्रति माह 1 बिलियन अनुरोध चरण 2: एक उच्च स्तरीय डिज़ाइन बनाएं सभी महत्वपूर्ण घटकों के साथ एक उच्च स्तरीय डिजाइन की रूपरेखा।
Imgur
चरण 3: डिजाइन कोर घटक प्रत्येक मुख्य घटक के लिए विवरण में गोता लगाएँ।
मामले का उपयोग करें: उपयोगकर्ता एक वित्तीय खाते से जुड़ता है हम एक रिलेशनल डेटाबेस में 10 मिलियन उपयोगकर्ताओं पर जानकारी स्टोर कर सकते हैं। हमें SQL या NoSQL को चुनने के बीच उपयोग के मामलों और ट्रेडऑफ पर चर्चा करनी चाहिए।
क्लाइंट एक रिवर्स प्रॉक्सी के रूप में चल रहा है, वेब सर्वर के लिए एक अनुरोध भेजता है वेब सर्वर खाता API सर्वर के अनुरोध को आगे बढ़ाता है खाता API सर्वर नए दर्ज खाता जानकारी के साथ SQL डेटाबेस खाता तालिका को अद्यतन करता है अपने साक्षात्कारकर्ता के साथ स्पष्ट करें कि आपको कितने कोड लिखने की उम्मीद है।
खाता तालिका में निम्न संरचना हो सकती है:
आईडी int नहीं AUTO_INCREMENT create_at डेटाटाइम नहीं NULL last_update डेटाइम नॉट NULL account_url varchar (255) शून्य नहीं है account_login varchar (32) पूरा नहीं account_password_hash char (64) पूर्ण नहीं user_id इंट नॉट नल प्राथमिक कुंजी (आईडी) उपयोगकर्ता कुंजी (user_id) संदर्भ उपयोगकर्ता (आईडी) हम लुकअप को पूरा करने के लिए आईडी, user_id, और create_at पर एक इंडेक्स बनाएंगे (संपूर्ण तालिका को स्कैन करने के बजाय लॉग-टाइम) और डेटा को स्मृति में रखने के लिए। मेमोरी से 1 एमबी क्रमिक रूप से पढ़ने में लगभग 250 माइक्रोसेकंड लगते हैं, जबकि एसएसडी से पढ़ने में 4x लगते हैं और डिस्क से 80x5 मिनट लगते हैं
हम सार्वजनिक REST API का उपयोग करेंगे:
$ कर्ल -X POST --data '{"user_id": "foo", "account_url": "bar", \ "account_login": "baz", "account_password": "qux"} '\ " https://mint.com/api/v1/account आंतरिक संचार के लिए, हम दूरस्थ प्रक्रिया कॉल का उपयोग कर सकते हैं।
अगला, सेवा खाते से लेनदेन निकालती है।
मामले का उपयोग करें: सेवा खाते से लेनदेन निकालती है हम इन मामलों में एक खाते से जानकारी निकालना चाहते हैं:
उपयोगकर्ता पहले खाता लिंक करता है उपयोगकर्ता खाता मैन्युअल रूप से ताज़ा करता है पिछले 30 दिनों में सक्रिय होने वाले उपयोगकर्ताओं के लिए स्वचालित रूप से प्रत्येक दिन डाटा प्रवाह:
क्लाइंट वेब सर्वर के लिए एक अनुरोध भेजता है वेब सर्वर खाता API सर्वर के अनुरोध को आगे बढ़ाता है अकाउंट्स एपीआई सर्वर एक कतार पर काम करता है जैसे कि अमेज़न SQS या RabbitMQ लेन-देन निकालने में कुछ समय लग सकता है, हम शायद इसे एक कतार के साथ अतुल्यकालिक रूप से करना चाहते हैं, हालांकि यह अतिरिक्त जटिलता का परिचय देता है लेन-देन निष्कर्षण सेवा निम्नलिखित करती है: क्यू से खींचता है और वित्तीय संस्थान से दिए गए खाते के लिए लेनदेन निकालता है, ऑब्जेक्ट स्टोर में कच्चे लॉग फाइल के रूप में परिणाम जमा करता है प्रत्येक लेनदेन को श्रेणीबद्ध करने के लिए श्रेणी सेवा का उपयोग करता है श्रेणी द्वारा कुल मासिक खर्च की गणना करने के लिए बजट सेवा का उपयोग करता है बजट सेवा उपयोगकर्ताओं को यह बताने के लिए अधिसूचना सेवा का उपयोग करती है कि वे अपने बजट को पार कर रहे हैं या पार कर चुके हैं SQL डेटाबेस लेनदेन तालिका को वर्गीकृत लेनदेन के साथ अद्यतन करता है SQL डेटाबेस मासिक अद्यतन करता है


