विषयसूची[लुकाउनुहोस्][देखाउनु]
व्हाट्सएप एक सामाजिक सन्देश कार्यक्रम हो जसले प्रयोगकर्ताहरूलाई एक अर्कासँग सन्देशहरू आदानप्रदान गर्न अनुमति दिन्छ।
के तपाईंले कहिल्यै व्हाट्सएप कसरी काम गर्दछ भनेर विचार गर्नुभएको छ?
यसको सृष्टि र सञ्चालनमा आधारित अवधारणाहरू के हुन्?
यो लेख व्हाट्सएपको आधारभूत कुराहरूमा जानेछ प्रणाली डिजाइन.
हामी व्हाट्सएपको सामान्य वास्तुकला मार्फत पनि जानेछौं, जुन कुनै पनि प्रकारको च्याट सफ्टवेयर निर्माण गर्न प्रयोग गर्न सकिन्छ।
त्यसोभए, थप विज्ञापन बिना, व्हाट्सएपको प्रणाली डिजाइनमा हेरौं!
1. प्रमुख आवश्यकताहरू
व्हाट्सएप एक उच्च स्केलेबल टेक्नोलोजी हो जुन संसारभरका धेरै मानिसहरू द्वारा प्रयोग गरिन्छ। नतिजाको रूपमा, यो लगभग सधैं भरोसेमंद र कार्यशील हुन राम्रोसँग डिजाइन हुनुपर्छ।
नतिजाको रूपमा, प्रणालीको महत्वपूर्ण आवश्यकताहरू निर्धारण गर्नु महत्त्वपूर्ण छ।
यी व्हाट्सएप मेसेन्जरका लागि न्यूनतम आवश्यकताहरू हुन्:
- एक-मा-एक अन्तरक्रिया को सुविधा को लागी सक्षम।
- सन्देश स्वीकृति र अन्तिम पटक हेरिएको दुवै सम्भव छ (पठाइएको, डेलिभर गरिएको, र पढ्नुहोस्)।
- अन्त-देखि-अन्त इन्क्रिप्सन र मिडिया समर्थन (छवि/भिडियो) लाई अनुमति दिनुहोस्।
हाम्रो आवश्यक सेवालाई कति क्षमता चाहिन्छ पत्ता लगाउनुहोस्।
2. अनुमानित क्षमता
हाम्रो उद्देश्य ठूलो मात्रामा ट्राफिक ह्यान्डल गर्न सक्षम प्लेटफर्म सिर्जना गर्नु हो। मान्नुहोस् कि प्रति दिन 10 बिलियन एसएमएस पठाइन्छ। हामीले पायौ:
- हरेक दिन, एक अर्ब मानिसहरूले 10 अरब एसएमएस पठाउँछन्।
- शिखर ट्राफिकमा (प्रति सेकेन्ड), 700,000 व्यक्ति सक्रिय थिए (6X औसत)
- अधिकतम प्रयोगको समयमा, प्रति सेकेन्ड 40 मिलियन सन्देशहरू प्रसारण हुन्छन्।
- सन्देशको औसत लम्बाइ 160 वर्णहरू हो: 10B * 160 = 1.6TB डाटा प्रत्येक दिन उत्पन्न हुन्छ।
- उदाहरणको रूपमा दस वर्षको सेवा लिनुहोस्: 10 * 1.6B * 365 PB
- सम्पूर्ण एप्लिकेसन माइक्रोसर्भिसेसहरू मिलेर बनाइनेछ, जसमध्ये प्रत्येकले एउटा विशेष कार्य कार्यान्वयन गर्नेछ। मान्नुहोस् कि सन्देश पठाउन 20 मिलिसेकेन्ड लाग्छ र प्रति सर्भर 100 समवर्ती जडानहरू छन्। नतिजाको रूपमा, च्याट सर्भरहरूको अपेक्षित संख्या आवश्यक छ = (प्रति सेकेन्ड विलम्बता सन्देशहरू)/ समवर्ती जडानहरू प्रति सर्भर = 40M * 20ms / 100 = 8000 सर्भरहरू।
3. उच्च स्तरको वास्तुकला
यो प्रणाली दुई मुख्य सेवाहरूमा निर्मित छ। च्याट सेवा र ट्रान्जिटरी सेवा, उदाहरणका लागि। च्याट सेवाले प्रयोगकर्ताहरूको अनलाइन सन्देशहरूद्वारा उत्पन्न हुने सबै ट्राफिकहरू ह्यान्डल गर्छ। साथै, प्रयोगकर्ता अफलाइन हुँदा अस्थायी सेवाले ट्राफिक ह्यान्डल गर्दछ।
यदि प्रयोगकर्ता अनलाइन छ भने, च्याट सेवा सन्देशहरू डेलिभर गर्ने जिम्मामा छ।
यसले सन्देशको प्रापक अनलाइन छ वा छैन भनी प्रमाणित गर्नेछ; यदि प्राप्तकर्ता अनलाइन छ भने, यो सेवाले तुरुन्त सन्देश पठाउनेछ; यदि प्राप्तकर्ता अनलाइन छैन भने, तिनीहरू अनलाइन फर्किएपछि ट्रान्जिटरी सेवाले तिनीहरूलाई सन्देश पठाउनेछ।
ट्रान्जिटरी सेवाले अफलाइन प्रयोगकर्ता पुन: जडान नभएसम्म अस्थायी रूपमा पहुँचयोग्य डेटा राख्नको लागि छुट्टै भण्डारण क्षेत्र राख्छ।
उच्च-स्तर API हरू डिजाइन गर्दै
यो सेवामा सन्देशहरू पठाउन र पढ्नको लागि दुई उच्च-स्तरीय कार्य API हरू छन्। प्रणाली REST वास्तुकला प्रयोग गरेर लागू गर्न सकिन्छ।
सन्देशहरू पठाउनका लागि प्यारामिटरहरू
यो API दुई प्रयोगकर्ताहरू बीच सन्देशहरू प्रसारण गर्न प्रयोग गरिनेछ।
कुराकानीको प्यारामिटरहरू
यो API थ्रेडेड च्याटहरू प्रदर्शन गर्न प्रयोग गरिन्छ। तपाईले व्हाट्सएप खोल्दा तपाईले देख्नु भएको पहिलो कुरालाई विचार गर्नुहोस्। हामी एउटै एपीआई क्वेरीमा एक प्रयोगकर्ताका लागि केही सन्देशहरू मात्र प्राप्त गर्न चाहन्छौं। यसलाई ह्यान्डल गर्न, अफसेट र सन्देश गणना प्यारामिटरहरू आवश्यक छ।
पछिल्लो पटक हेरिएको, एकल टिक र डबल टिक जस्ता सुविधाहरूको कार्यहरू के के हुन्?
यी सेवाहरूको प्रयोगमा महत्त्वपूर्ण भूमिका स्वीकृति सेवा हो। यस सेवाले स्वीकृति जवाफहरू उत्पन्न र प्रमाणीकरण गर्न जारी राखेकोले यी सुविधाहरू विकसित गरिएका हुन्।
- एकल टिक: जब प्रयोगकर्ता A बाट सन्देश प्रयोगकर्ता B मा पुग्छ, सर्भरले सन्देश प्रसारित भएको स्वीकार गर्दै एकल टिक पठाउँछ।
- डबल टिक: सर्भरको सन्देश प्रयोगकर्ता B लाई उचित जडान मार्फत पठाइएपछि, प्रयोगकर्ता B ले सर्भरमा सन्देशको प्राप्ति स्वीकार गर्नेछ। सर्भरले त्यसपछि प्रयोगकर्ता A लाई अर्को स्वीकृति प्रदान गर्नेछ। नतिजाको रूपमा, एक नक्कल टिक देखा पर्नेछ।
- निलो टिक: प्रयोगकर्ता B ले सन्देश जाँच गरेपछि सर्भरमा अर्को स्वीकृति पठाउनेछ। सर्भरले त्यसपछि प्रयोगकर्ता A लाई थप स्वीकृति सन्देश पठाउनेछ। त्यसपछि प्रयोगकर्ता A को स्क्रिनमा निलो टिक देखा पर्नेछ।
- अन्तिम पटक देखिएको: मुटुको धड्कन संयन्त्र अन्तिम देखिएको सुविधाको लागि पूर्ण रूपमा जिम्मेवार छ। प्रत्येक 5 सेकेन्डमा, सर्भरमा मुटुको धड्कन पठाइन्छ, जसले प्रत्येक प्रयोगकर्ताको पछिल्लो पटक हेरिएको स्थितिको ट्र्याक राख्छ जुन कुनै पनि अन्य प्रयोगकर्ताद्वारा सजिलै पहुँच गर्न सकिन्छ।
4. मुख्य सुविधाहरू डिजाइन गर्दै
निजीकृत अन्तरक्रिया
यो च्याट सेवा को एक आवश्यक भाग हो। एक प्रयोगकर्ताले यो सेवा प्रयोग गरेर अर्को प्रयोगकर्तालाई सन्देश पठाउन सक्छ। यो कसरी काम गर्छ एक नजर राखौं:
मान्नुहोस् जय आयुषसँग कुराकानी गर्न चाहन्छ। जे एक च्याट सर्भरसँग जोडिएको छ जसको साथ उसले सन्देश प्राप्त गर्दछ। जेले च्याट सर्भरबाट सन्देश पठाइएको पुष्टिकरण प्राप्त गर्दछ। च्याट सर्भरले अब डेटा स्टोरबाट आयुष जडान भएको च्याट सर्भरको बारेमा जानकारी अनुरोध गरिरहेको छ। जयको च्याट सर्भरले अब आयुषको च्याट सर्भरमा सन्देश पठाउँछ, र आयुषले पुश मेकानिजम मार्फत सन्देश प्राप्त गर्दछ। आयुषले अब जयको च्याट सर्भरमा एक स्वीकृति पठाउँदछ, जसले सन्देश डेलिभर भएको जयलाई सूचित गर्दछ। यदि आयुषले फेरि म्यासेज पढे भने, सन्देश पढेको नयाँ स्वीकृति जयलाई पठाइयो।
प्रयोगकर्ता गतिविधिको स्थिति
पछिल्लो पटक एक व्यक्ति सक्रिय हुनु भनेको तत्काल सन्देशवाहकहरूको नियमित सुविधा हो।
क्लाइन्ट र सर्भर बीचको जडान कायम राख्नको लागि प्रणाली यस रेखाचित्रमा चित्रण गरिएको छ। वेब सकेटहरू सर्भर र ग्राहक बीच द्विदिशीय जडान स्थापना गर्न प्रयोग गरियो। यी जडानहरूले हृदयघातहरू पठाउँछन्, जुन प्रयोगकर्ताको गतिविधि स्थिति निगरानी गर्न प्रयोग गरिन्छ।
अन्त-देखि-अन्त गोपनीयता
अन्त-देखि-अन्त इन्क्रिप्सन एक प्रमुख विशेषता हो जसले यो सुनिश्चित गर्दछ कि कुराकानी गर्ने प्रयोगकर्ताहरूले मात्र सञ्चारहरू पढ्न सक्छन्। सार्वजनिक कुञ्जी संचारमा संलग्न सबै प्रयोगकर्ताहरू बीच साझा गरिएको छ र अन्त्य-देखि-अन्त इन्क्रिप्सनलाई दिगो बनाउनको लागि महत्त्वपूर्ण छ। मान्नुहोस् कि च्यानलमा दुई जना प्रयोगकर्ताहरू छन्, जय र आयुष, जसले एकअर्कासँग कुराकानी गर्छन्।
जयसँग आयुषको सार्वजनिक साँचो छ, र आयुषसँग जयको सार्वजनिक कुञ्जीका साथै तिनीहरूको साझा नगरिएको निजी कुञ्जी छ। नतिजाको रूपमा, जयले सन्देश पठाउँदा, उसले आयुषको सार्वजनिक कुञ्जीसँग इन्क्रिप्ट गर्छ, जुन आयुषको निजी कुञ्जीबाट मात्र डिकोड गर्न सकिन्छ।
त्यसैगरी जयले आयुषको कम्युनिकेशन डिकोड गर्न मात्र सक्षम हुनेछन्। नतिजाको रूपमा, केवल जय र Aaysuh एक अर्काको संचार हेर्न सक्षम हुनेछन्, र सर्भरले सम्पूर्ण प्रक्रियामा गेटवेको रूपमा काम गर्नेछ।
5. बाधाहरू
प्रत्येक प्रणाली खराबी को लागी प्रवण छ। यति ठूलो मात्रामा ट्राफिक व्यवस्थापन गर्न, सेवा सधैं सञ्चालन र त्रुटि-सहनशील रहनु पर्छ अवरोधहरूबाट बच्न। किनभने हाम्रो सेवा च्याट र क्षणिक सर्भरहरूमा पूर्ण रूपमा निर्भर छ, हामीले तिनीहरूको सञ्चालनबाट उत्पन्न हुने सबै समस्याहरू समाधान गर्नुपर्छ।
च्याट सर्भरको विफलता: यो हाम्रो प्रणालीको मुटु हो। जब प्रयोगकर्ताहरू अनलाइन हुन्छन्, यो सन्देशहरू व्यवस्थापन र डेलिभरीको लागि जिम्मेवार हुन्छ। नतिजाको रूपमा, यो प्रणालीले यसको प्रयोगकर्ताहरूसँग लिङ्कहरू कायम राख्छ।
नतिजाको रूपमा, यदि यो सेवा असफल भयो भने, सम्पूर्ण वास्तुकला प्रभावित हुनेछ। च्याट सर्भरको विफलता व्यवस्थापन गर्न दुईवटा दृष्टिकोणहरू छन्। एउटा विधि भनेको TCP जडानहरूलाई अर्को सर्भरमा स्थानान्तरण गर्नु हो, जबकि अर्को तरिका भनेको जडान हराएको अवस्थामा प्रयोगकर्ताहरूलाई स्वचालित रूपमा जडानहरू सुरु गर्न अनुमति दिनु हो।
क्षणिक भण्डारणको विफलता: असफलताको खतरा हुने अर्को कम्पोनेन्ट जसले अन्ततः सम्पूर्ण सेवालाई हानि पुर्याउन सक्छ त्यो क्षणिक भण्डारण हो। यदि यो सेवा असफल भयो भने अफलाइन प्रयोगकर्ताहरूलाई मार्गमा सन्देशहरू हराउँछन्।
हामी प्रत्येक प्रयोगकर्ताको अस्थायी भण्डारण प्रतिकृति बनाएर सन्देश हराउन रोक्न सक्छौं। नतिजाको रूपमा, प्रतिकृतिलाई कार्यहरू प्रशोधन गर्न प्रयोग गर्न सकिन्छ जब प्रयोगकर्ता अनलाइन फर्कन्छ। यदि मूल सर्भर पहुँचयोग्य हुन्छ भने, प्रयोगकर्ताको ट्रान्जिटरी भण्डारणको मौलिक र प्रतिकृति उदाहरणहरू एकल स्टोरमा जोडिन्छन्।
6. अनुकूलन प्रविधिहरू
विलम्बता: निर्बाध र सुधारिएको ग्राहक अनुभव प्रदान गर्न, मेसेन्जर सेवा वास्तविक समय हुनुपर्छ। नतिजाको रूपमा, प्रायः पहुँच गरिएको डाटाको अंश क्यास गरेर विलम्बता घटाउनु पर्छ। हामी Redis जस्तै वितरित क्यास प्रयोग गरेर मेमोरीमा प्रयोगकर्ता गतिविधि स्थिति र भर्खरका कुराकानीहरू क्यास गर्न सक्छौं।
उपलब्धता: हामीलाई हाम्रो सेवा अधिकांश समय उपलब्ध हुन आवश्यक छ। हाम्रो प्रणाली गल्ती-सहिष्णु हुनुपर्छ, यसैले हामी ट्रान्जिटरी सन्देशहरूको धेरै प्रतिलिपिहरू राख्न सक्छौं ताकि हराएको कुनै पनि सन्देश यसको डुप्लिकेटहरूबाट द्रुत रूपमा पुन: प्राप्त गर्न सकिन्छ। नतिजाको रूपमा, प्रणालीको उपलब्धतालाई खतरामा पार्न सकिँदैन।
निष्कर्ष
हाम्रो प्रणालीले अब केही क्षमताहरूलाई मात्र समर्थन गर्दछ, तर हामी सजिलैसँग धेरै व्यक्तिहरूलाई सन्देशहरू वितरण गर्न समूह च्याटहरू थप्न विस्तार गर्न सक्छौं। तपाईं भिडियो र फोन कल क्षमताहरू पनि प्रदान गर्न सक्नुहुन्छ। यो प्रणाली पनि विकसित गर्न सकिन्छ कि प्रयोगकर्ताहरूले स्थिति अद्यावधिकहरू वा कथाहरू प्रकाशित गर्न सक्छन् र एक अर्कालाई पढ्न सक्छन्।
मैले तपाईंलाई WhatsApp प्रणाली डिजाइनको उच्च-स्तरको सिंहावलोकन प्रदान गर्न कडा मेहनत गरें। मलाई आशा छ कि तपाईंले यसलाई रमाइलो गर्नुभयो र यसलाई राम्रो प्रयोगमा राख्नुहुनेछ।
जवाफ छाड्नुस्