अनुक्रमणिका[लपवा][दाखवा]
WhatsApp हा एक सामाजिक संदेशन कार्यक्रम आहे जो वापरकर्त्यांना एकमेकांशी संदेशांची देवाणघेवाण करण्यास अनुमती देतो.
व्हॉट्सअॅप कसे काम करते याचा तुम्ही कधी विचार केला आहे का?
त्याची निर्मिती आणि ऑपरेशन कोणत्या संकल्पना आहेत?
हा लेख WhatsApp च्या मूलभूत गोष्टींवर जाईल सिस्टम डिझाइन.
आम्ही WhatsApp च्या सामान्य वास्तुकला देखील पाहू, ज्याचा वापर कोणत्याही प्रकारचे चॅट सॉफ्टवेअर तयार करण्यासाठी केला जाऊ शकतो.
तर, अधिक त्रास न करता, चला व्हॉट्सअॅपच्या सिस्टम डिझाइनवर एक नजर टाकूया!
1. मुख्य आवश्यकता
WhatsApp हे एक अत्यंत मापनीय तंत्रज्ञान आहे जे जगभरातील अनेक लोक वापरतात. परिणामी, ते अक्षरशः नेहमीच विश्वासार्ह आणि कार्यरत राहण्यासाठी चांगले डिझाइन केलेले असावे.
परिणामी, सिस्टमच्या गंभीर गरजा निश्चित करणे महत्वाचे आहे.
WhatsApp मेसेंजरसाठी या किमान आवश्यकता आहेत:
- एकमेकांशी संवाद साधण्यास सक्षम.
- संदेशाची पोचपावती आणि शेवटचे पाहिले दोन्ही शक्य आहेत (पाठवलेले, वितरित केलेले आणि वाचलेले).
- एंड-टू-एंड एन्क्रिप्शन आणि मीडिया सपोर्ट (इमेज/व्हिडिओ) ला अनुमती द्या.
आपल्या आवश्यक सेवेसाठी किती क्षमतेची आवश्यकता आहे ते शोधूया.
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 थ्रेडेड चॅट प्रदर्शित करण्यासाठी वापरले जाते. जेव्हा तुम्ही WhatsApp उघडता तेव्हा तुम्हाला पहिली गोष्ट दिसेल याचा विचार करा. एका API क्वेरीमध्ये एका वापरकर्त्यासाठी आम्ही फक्त काही संदेश प्राप्त करू इच्छितो. हे हाताळण्यासाठी, ऑफसेट आणि संदेश संख्या मापदंड आवश्यक आहेत.
शेवटचे पाहिले, सिंगल टिक आणि डबल टिक यासारख्या वैशिष्ट्यांचे कार्य काय आहेत?
या सेवांच्या उपयोजनामध्ये महत्त्वाची भूमिका म्हणजे पोचपावती सेवा. ही वैशिष्ट्ये विकसित केली गेली आहेत कारण ही सेवा पोचपावती उत्तरे व्युत्पन्न आणि पडताळत आहे.
- सिंगल टिक: जेव्हा वापरकर्ता A कडील संदेश वापरकर्ता B पर्यंत पोहोचतो, तेव्हा सर्व्हर संदेश प्रसारित झाला आहे हे मान्य करून एकच टिक पाठवतो.
- डबल टिक: सर्व्हरचा संदेश योग्य कनेक्शनद्वारे वापरकर्ता B ला पाठवल्यानंतर, वापरकर्ता B सर्व्हरला संदेशाची पावती देईल. सर्व्हर नंतर वापरकर्ता A ला दुसरी पोचपावती देईल. परिणामी, एक डुप्लिकेट टिक दिसेल.
- ब्लूटिक: संदेश तपासल्यानंतर वापरकर्ता B सर्व्हरला दुसरी पोचपावती पाठवेल. सर्व्हर नंतर वापरकर्ता A ला अतिरिक्त पोचपावती संदेश पाठवेल. त्यानंतर यूजर A च्या स्क्रीनवर ब्लू टिक दिसेल.
- शेवटचे पाहिलेले: हृदयाचा ठोका यंत्रणा शेवटच्या दिसलेल्या वैशिष्ट्यासाठी पूर्णपणे जबाबदार आहे. प्रत्येक 5 सेकंदाला, हृदयाचा ठोका सर्व्हरवर प्रसारित केला जातो, जो प्रत्येक वापरकर्त्याच्या शेवटच्या पाहिल्या गेलेल्या स्थितीचा मागोवा ठेवतो ज्यामध्ये इतर कोणत्याही वापरकर्त्याद्वारे सहज प्रवेश केला जाऊ शकतो.
4. मुख्य वैशिष्ट्ये डिझाइन करणे
वैयक्तिक संवाद
चॅट सेवेचा हा एक आवश्यक भाग आहे. ही सेवा वापरून वापरकर्ता दुसऱ्या वापरकर्त्याला फक्त संदेश पाठवू शकतो. हे कसे कार्य करते ते पाहू या:
गृहीत धरा की जयला आयुषशी संवाद साधायचा आहे. जय एका चॅट सर्व्हरशी जोडलेला आहे ज्याद्वारे त्याला संदेश प्राप्त होतो. जयला चॅट सर्व्हरकडून पुष्टी मिळते की संदेश पाठवला गेला होता. चॅट सर्व्हर आता डेटा स्टोअरकडून आयुष कनेक्ट केलेल्या चॅट सर्व्हरबद्दल माहिती मागवत आहे. जयचा चॅट सर्व्हर आता आयुषच्या चॅट सर्व्हरवर संदेश प्रसारित करतो आणि आयुषला पुश यंत्रणेद्वारे संदेश प्राप्त होतो. आयुष आता जयच्या चॅट सर्व्हरवर पोचपावती पाठवतो, जे संदेश वितरित झाल्याचे जयला सूचित करते. आयुषने तो मेसेज पुन्हा वाचला तर, मेसेज वाचला असल्याची ताजी कबुली जयला देण्यात आली.
वापरकर्ता क्रियाकलाप स्थिती
शेवटच्या वेळी एखादी व्यक्ती सक्रिय होती हे इन्स्टंट मेसेंजर्सचे नियमित वैशिष्ट्य आहे.
क्लायंट आणि सर्व्हरमधील कनेक्शन राखण्यासाठी एक प्रणाली या आकृतीमध्ये दर्शविली आहे. सर्व्हर आणि क्लायंट दरम्यान द्विदिशीय कनेक्शन स्थापित करण्यासाठी वेब सॉकेटचा वापर केला गेला. हे कनेक्शन हृदयाचे ठोके पाठवतात, जे वापरकर्त्याच्या क्रियाकलाप स्थितीचे परीक्षण करण्यासाठी वापरले जातात.
एंड-टू-एंड गोपनीयता
एन्ड-टू-एंड एन्क्रिप्शन हे एक प्रमुख वैशिष्ट्य आहे जे केवळ संभाषण करणारे वापरकर्ते संप्रेषण वाचू शकतात याची खात्री करते. एक सार्वजनिक की संप्रेषणामध्ये सामील असलेल्या सर्व वापरकर्त्यांमध्ये सामायिक केली जाते आणि एंड-टू-एंड एन्क्रिप्शन टिकवून ठेवण्यासाठी महत्त्वपूर्ण आहे. असे गृहीत धरा की चॅनेलवर दोन वापरकर्ते आहेत, जय आणि आयुष, जे एकमेकांशी संवाद साधतात.
जयकडे आयुषची सार्वजनिक की आहे आणि आयुषकडे जयची सार्वजनिक की तसेच त्यांची नॉन-सामायिक खाजगी की आहे. परिणामी, जेव्हा जय संदेश प्रसारित करतो, तेव्हा तो तो आयुषच्या सार्वजनिक कीसह एन्क्रिप्ट करतो, जो केवळ आयुषच्या खाजगी कीसह डीकोड केला जाऊ शकतो.
त्याचप्रमाणे जय केवळ आयुषचा संवाद डीकोड करू शकेल. परिणामी, फक्त जय आणि आयसुह एकमेकांचे संप्रेषण पाहण्यास सक्षम असतील आणि सर्व्हर संपूर्ण प्रक्रियेत फक्त एक प्रवेशद्वार म्हणून कार्य करेल.
5. अडथळे
प्रत्येक यंत्रणा खराब होण्याची शक्यता असते. एवढ्या मोठ्या प्रमाणात रहदारी व्यवस्थापित करण्यासाठी, अडथळे टाळण्यासाठी सेवा नेहमी कार्यरत आणि दोष-सहिष्णु राहणे आवश्यक आहे. आमची सेवा पूर्णपणे चॅट आणि ट्रान्झिएंट सर्व्हरवर अवलंबून असल्यामुळे, आम्ही त्यांच्या ऑपरेशनमुळे उद्भवलेल्या सर्व समस्यांचे निराकरण केले पाहिजे.
चॅट सर्व्हरमध्ये बिघाड: हे आपल्या व्यवस्थेचे हृदय आहे. जेव्हा वापरकर्ते ऑनलाइन असतात, तेव्हा ते संदेश व्यवस्थापित करण्यासाठी आणि वितरित करण्यासाठी जबाबदार असतात. परिणामी, ही प्रणाली आपल्या वापरकर्त्यांशी दुवे कायम ठेवते.
परिणामी, ही सेवा निकामी झाल्यास संपूर्ण वास्तूला फटका बसणार आहे. चॅट सर्व्हरच्या अपयशाचे व्यवस्थापन करण्यासाठी दोन पद्धती आहेत. एक पद्धत म्हणजे TCP कनेक्शन दुसर्या सर्व्हरवर शिफ्ट करणे, तर दुसरी पद्धत म्हणजे कनेक्शन गमावल्यास वापरकर्त्यांना स्वयंचलितपणे कनेक्शन सुरू करण्याची परवानगी देणे.
क्षणिक स्टोरेजमध्ये अपयश: अयशस्वी होण्याची शक्यता असलेला आणखी एक घटक जो अखेरीस संपूर्ण सेवेला हानी पोहोचवू शकतो तो म्हणजे क्षणिक स्टोरेज. ही सेवा अयशस्वी झाल्यास ऑफलाइन वापरकर्त्यांसाठी मार्गावरील संदेश गमावले जातात.
आम्ही प्रत्येक वापरकर्त्याच्या तात्पुरत्या स्टोरेजची प्रतिकृती बनवून संदेश गमावणे टाळू शकतो. परिणामी, जेव्हा वापरकर्ता ऑनलाइन परत येतो तेव्हा फंक्शन्सवर प्रक्रिया करण्यासाठी प्रतिकृती वापरली जाऊ शकते. मूळ सर्व्हर प्रवेशयोग्य झाल्यास, वापरकर्त्याच्या ट्रान्झिटरी स्टोरेजची मूळ आणि प्रतिकृती दोन्ही उदाहरणे एकाच स्टोअरमध्ये एकत्रित केली जातात.
6. ऑप्टिमायझेशन तंत्र
लेटेंसी: अखंड आणि सुधारित क्लायंट अनुभव देण्यासाठी, मेसेंजर सेवा रिअल-टाइम असणे आवश्यक आहे. परिणामी, बर्याचदा ऍक्सेस केलेल्या डेटाचा काही भाग कॅश करून विलंबता कमी करणे आवश्यक आहे. आम्ही Redis सारख्या वितरित कॅशेचा वापर करून वापरकर्ता क्रियाकलाप स्थिती आणि अलीकडील संभाषणे मेमरीमध्ये कॅशे करू शकतो.
उपलब्धता: आम्हाला आमची सेवा बहुतेक वेळा उपलब्ध असणे आवश्यक आहे. आमची प्रणाली दोष-सहिष्णु असणे आवश्यक आहे, अशा प्रकारे आम्ही क्षणभंगुर संदेशांच्या अनेक प्रती ठेवू शकतो जेणेकरून हरवलेला कोणताही संदेश त्याच्या डुप्लिकेटमधून त्वरीत पुनर्प्राप्त केला जाऊ शकतो. परिणामी, प्रणालीची उपलब्धता धोक्यात येऊ शकत नाही.
निष्कर्ष
आमची सिस्टीम आता फक्त काही क्षमतांना समर्थन देते, परंतु आम्ही अनेक व्यक्तींना संदेश वितरीत करण्यासाठी गट चॅट जोडण्यासाठी सहजपणे विस्तार करू शकतो. तुम्ही व्हिडिओ आणि फोन कॉल क्षमता देखील प्रदान करू शकता. ही प्रणाली अशा प्रकारे विकसित केली जाऊ शकते की वापरकर्ते स्थिती अद्यतने किंवा कथा प्रकाशित करू शकतात आणि एकमेकांना वाचू शकतात.
मी तुम्हाला WhatsApp सिस्टम डिझाइनचे उच्च-स्तरीय विहंगावलोकन प्रदान करण्यासाठी कठोर परिश्रम केले. मला आशा आहे की तुम्ही त्याचा आनंद घेतला असेल आणि त्याचा चांगला उपयोग कराल.
प्रत्युत्तर द्या