સામગ્રીનું કોષ્ટક[છુપાવો][બતાવો]
વ્હોટ્સએપ એ એક સામાજિક મેસેજિંગ પ્રોગ્રામ છે જે વપરાશકર્તાઓને એકબીજા સાથે સંદેશાઓની આપ-લે કરવાની મંજૂરી આપે છે.
શું તમે ક્યારેય વિચાર્યું છે કે WhatsApp કેવી રીતે કામ કરે છે?
તેના સર્જન અને સંચાલનને આધાર આપતા ખ્યાલો શું છે?
આ લેખ WhatsApp ની મૂળભૂત બાબતો પર જશે સિસ્ટમ ડિઝાઇન.
અમે WhatsAppના સામાન્ય આર્કિટેક્ચરમાંથી પણ જઈશું, જેનો ઉપયોગ કોઈપણ પ્રકારના ચેટ સોફ્ટવેર બનાવવા માટે થઈ શકે છે.
તેથી, વધુ અડચણ વિના, ચાલો WhatsAppની સિસ્ટમ ડિઝાઇન પર એક નજર કરીએ!
1. મુખ્ય આવશ્યકતાઓ
WhatsApp એ એક ઉચ્ચ સ્કેલેબલ ટેક્નોલોજી છે જેનો સમગ્ર વિશ્વમાં ઘણા લોકો ઉપયોગ કરે છે. પરિણામે, તે વર્ચ્યુઅલ રીતે હંમેશા ભરોસાપાત્ર અને કાર્યક્ષમ બનવા માટે સારી રીતે ડિઝાઇન થયેલ હોવું જોઈએ.
પરિણામે, સિસ્ટમની નિર્ણાયક જરૂરિયાતો નક્કી કરવી મહત્વપૂર્ણ છે.
WhatsApp મેસેન્જર માટે આ ન્યૂનતમ આવશ્યકતાઓ છે:
- એક-એક-એક ક્રિયાપ્રતિક્રિયાની સુવિધા આપવામાં સક્ષમ.
- સંદેશની સ્વીકૃતિ અને છેલ્લે જોવાયેલ બંને શક્ય છે (મોકલેલ, વિતરિત અને વાંચો).
- એન્ડ-ટુ-એન્ડ એન્ક્રિપ્શન અને મીડિયા સપોર્ટ (છબીઓ/વીડિયો)ને મંજૂરી આપો.
ચાલો જાણીએ કે આપણી જરૂરી સેવા માટે કેટલી ક્ષમતાની જરૂર છે.
2. અંદાજિત ક્ષમતા
અમારો ઉદ્દેશ્ય એવા પ્લેટફોર્મ બનાવવાનો છે જે મોટા પ્રમાણમાં ટ્રાફિકને હેન્ડલ કરી શકે. ધારો કે દરરોજ 10 અબજ SMS મોકલવામાં આવે છે. અમારી પાસે છે:
- દરરોજ, એક અબજ લોકો દ્વારા 10 અબજ SMS મોકલવામાં આવે છે.
- પીક ટ્રાફિક પર (પ્રતિ સેકન્ડ), 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 નો ઉપયોગ થ્રેડેડ ચેટ્સ પ્રદર્શિત કરવા માટે થાય છે. જ્યારે તમે વોટ્સએપ ખોલો છો ત્યારે તમે સૌથી પહેલા આ વસ્તુને ધ્યાનમાં લો. અમે એક API ક્વેરીમાંથી માત્ર એક વપરાશકર્તા માટે થોડા સંદેશા મેળવવા માંગીએ છીએ. આને હેન્ડલ કરવા માટે, ઓફસેટ અને મેસેજ કાઉન્ટ પેરામીટરની જરૂર છે.
છેલ્લે જોયું, સિંગલ ટિક અને ડબલ ટિક જેવી સુવિધાઓના કાર્યો શું છે?
આ સેવાઓની જમાવટમાં મહત્વની ભૂમિકા સ્વીકૃતિ સેવાની છે. આ સુવિધાઓ વિકસાવવામાં આવી છે કારણ કે આ સેવા સ્વીકૃતિ જવાબો જનરેટ અને ચકાસવાનું ચાલુ રાખે છે.
- એક ટિક: જ્યારે વપરાશકર્તા A તરફથી સંદેશ વપરાશકર્તા B સુધી પહોંચે છે, ત્યારે સર્વર એક ટિક મોકલે છે અને સ્વીકારે છે કે સંદેશ પ્રસારિત થયો છે.
- ડબલ ટિક: સર્વરનો સંદેશ યોગ્ય કનેક્શન દ્વારા વપરાશકર્તા B ને મોકલવામાં આવ્યા પછી, વપરાશકર્તા B સર્વરને સંદેશની રસીદ સ્વીકારશે. સર્વર પછી વપરાશકર્તા A ને બીજી સ્વીકૃતિ પ્રદાન કરશે. પરિણામે, ડુપ્લિકેટ ટિક દેખાશે.
- બ્લુ ટિક: યુઝર B મેસેજ ચેક કર્યા પછી સર્વરને બીજી સ્વીકૃતિ મોકલશે. સર્વર પછી વપરાશકર્તા A ને વધારાનો સ્વીકૃતિ સંદેશ મોકલશે. તે પછી યુઝર Aની સ્ક્રીન પર બ્લુ ટિક દેખાશે.
- છેલ્લે દેખાયું: હાર્ટબીટ મિકેનિઝમ છેલ્લી વાર જોવા મળેલી સુવિધા માટે સંપૂર્ણપણે જવાબદાર છે. દર 5 સેકન્ડે, સર્વર પર હૃદયના ધબકારા પ્રસારિત થાય છે, જે દરેક વપરાશકર્તાની છેલ્લે જોયેલી સ્થિતિનો એક ટેબલમાં ટ્રૅક રાખે છે જે અન્ય કોઈપણ વપરાશકર્તા દ્વારા સરળતાથી ઍક્સેસ કરી શકાય છે.
4. મુખ્ય લક્ષણો ડિઝાઇન
વ્યક્તિગત ક્રિયાપ્રતિક્રિયા
આ ચેટ સેવાનો આવશ્યક ભાગ છે. વપરાશકર્તા આ સેવાનો ઉપયોગ કરીને અન્ય વપરાશકર્તાને સંદેશા મોકલી શકે છે. ચાલો જોઈએ કે આ કેવી રીતે કાર્ય કરે છે:
ધારો કે જય આયુષ સાથે વાતચીત કરવા માંગે છે. જય એક ચેટ સર્વર સાથે જોડાયેલો છે જેનાથી તેને મેસેજ મળે છે. જયને ચેટ સર્વર તરફથી પુષ્ટિ મળે છે કે સંદેશ મોકલવામાં આવ્યો હતો. ચેટ સર્વર હવે ડેટા સ્ટોર પાસેથી આયુષ જે ચેટ સર્વર સાથે જોડાયેલ છે તેની માહિતી માંગી રહ્યું છે. જયનું ચેટ સર્વર હવે આયુષના ચેટ સર્વર પર સંદેશ પ્રસારિત કરે છે, અને આયુષ પુશ મિકેનિઝમ દ્વારા સંદેશ પ્રાપ્ત કરે છે. આયુષ હવે જયના ચેટ સર્વર પર એક સ્વીકૃતિ મોકલે છે, જે જયને સૂચના આપે છે કે સંદેશ વિતરિત કરવામાં આવ્યો છે. જો આયુષે ફરીથી મેસેજ વાંચ્યો, તો જયને મેસેજ વાંચવામાં આવ્યો હોવાની નવી સ્વીકૃતિ આપવામાં આવી.
વપરાશકર્તા પ્રવૃત્તિની સ્થિતિ
છેલ્લી વખત વ્યક્તિ સક્રિય હતી તે ઇન્સ્ટન્ટ મેસેન્જર્સનું નિયમિત લક્ષણ છે.
ક્લાયંટ અને સર્વર વચ્ચે જોડાણ જાળવવા માટેની સિસ્ટમ આ રેખાકૃતિમાં દર્શાવવામાં આવી છે. વેબ સોકેટ્સનો ઉપયોગ સર્વર અને ક્લાયંટ વચ્ચે દ્વિપક્ષીય જોડાણ સ્થાપિત કરવા માટે થતો હતો. આ જોડાણો હૃદયના ધબકારા મોકલે છે, જેનો ઉપયોગ વપરાશકર્તાની પ્રવૃત્તિની સ્થિતિનું નિરીક્ષણ કરવા માટે થાય છે.
એન્ડ-ટુ-એન્ડ ગોપનીયતા
એન્ડ-ટુ-એન્ડ એન્ક્રિપ્શન એ એક મુખ્ય લક્ષણ છે જે ખાતરી કરે છે કે માત્ર વાતચીત કરનારા વપરાશકર્તાઓ જ સંચાર વાંચી શકે છે. એક સાર્વજનિક કી સંચારમાં સામેલ તમામ વપરાશકર્તાઓ વચ્ચે શેર કરવામાં આવે છે અને એન્ડ-ટુ-એન્ડ એન્ક્રિપ્શનને ટકાવી રાખવા માટે મહત્વપૂર્ણ છે. ધારો કે ચેનલ પર બે વપરાશકર્તાઓ છે, જય અને આયુષ, જેઓ એકબીજા સાથે વાતચીત કરે છે.
જય પાસે આયુષની સાર્વજનિક ચાવી છે, અને આયુષ પાસે જયની સાર્વજનિક કી તેમજ તેમની બિન-શેર કરેલ ખાનગી કી છે. પરિણામે, જ્યારે જય સંદેશ પ્રસારિત કરે છે, ત્યારે તે તેને આયુષની સાર્વજનિક કી વડે એન્ક્રિપ્ટ કરે છે, જે આયુષની ખાનગી કી વડે જ ડીકોડ કરી શકાય છે.
તેવી જ રીતે, જય માત્ર આયુષના સંચારને ડીકોડ કરી શકશે. પરિણામે, માત્ર જય અને આયસુહ એકબીજાના સંચારને જોઈ શકશે, અને સર્વર સમગ્ર પ્રક્રિયામાં માત્ર એક ગેટવે તરીકે કાર્ય કરશે.
5. અડચણો
દરેક સિસ્ટમ ખામીયુક્ત છે. ટ્રાફિકના આટલા મોટા જથ્થાને મેનેજ કરવા માટે, અડચણો ટાળવા માટે સેવા હંમેશા કાર્યરત અને ખામી-સહિષ્ણુ રહેવી જોઈએ. કારણ કે અમારી સેવા સંપૂર્ણપણે ચેટ અને ક્ષણિક સર્વર્સ પર નિર્ભર છે, અમારે તેમના ઓપરેશનથી ઉદ્ભવતા તમામ મુદ્દાઓને ઉકેલવા જોઈએ.
ચેટ સર્વરની નિષ્ફળતા: આ આપણી સિસ્ટમનું હૃદય છે. જ્યારે વપરાશકર્તાઓ ઓનલાઈન હોય છે, ત્યારે તે સંદેશાઓનું સંચાલન કરવા અને પહોંચાડવા માટે જવાબદાર છે. પરિણામે, આ સિસ્ટમ તેના વપરાશકર્તાઓ સાથે લિંક્સ જાળવી રાખે છે.
પરિણામે, જો આ સેવા નિષ્ફળ જશે, તો સમગ્ર આર્કિટેક્ચરને નુકસાન થશે. ચેટ સર્વરની નિષ્ફળતાને મેનેજ કરવા માટે બે અભિગમો છે. એક પદ્ધતિ TCP કનેક્શન્સને બીજા સર્વર પર શિફ્ટ કરવાની છે, જ્યારે બીજી પદ્ધતિ એ છે કે કનેક્શન ખોવાઈ જવાની સ્થિતિમાં વપરાશકર્તાઓને આપમેળે કનેક્શન શરૂ કરવાની મંજૂરી આપવી.
ક્ષણિક સંગ્રહની નિષ્ફળતા: નિષ્ફળતાની સંભાવના ધરાવતા અન્ય ઘટક જે આખરે સમગ્ર સેવાને નુકસાન પહોંચાડી શકે છે તે છે ક્ષણિક સંગ્રહ. જો આ સેવા નિષ્ફળ જાય તો ઑફલાઇન વપરાશકર્તાઓના માર્ગમાં સંદેશાઓ ગુમ થઈ જાય છે.
અમે દરેક વપરાશકર્તાના કામચલાઉ સ્ટોરેજની નકલ કરીને સંદેશના નુકસાનને અટકાવી શકીએ છીએ. પરિણામે, જ્યારે પણ વપરાશકર્તા ઓનલાઈન પરત આવે છે ત્યારે પ્રતિકૃતિને કાર્યોની પ્રક્રિયા કરવા માટે કાર્યરત કરી શકાય છે. જો મૂળ સર્વર સુલભ બને છે, તો વપરાશકર્તાના ટ્રાન્ઝીટરી સ્ટોરેજના મૂળ અને પ્રતિકૃતિ બંને ઉદાહરણો એક જ સ્ટોરમાં જોડવામાં આવે છે.
6. ઑપ્ટિમાઇઝેશન તકનીકો
લેટન્સી: સીમલેસ અને સુધારેલ ક્લાયન્ટ અનુભવ આપવા માટે, મેસેન્જર સેવા રીઅલ-ટાઇમ હોવી આવશ્યક છે. પરિણામે, વારંવાર એક્સેસ કરાયેલા ડેટાના ભાગને કેશ કરીને લેટન્સી ઘટાડવી આવશ્યક છે. અમે Redis જેવા વિતરિત કેશનો ઉપયોગ કરીને વપરાશકર્તાની પ્રવૃત્તિની સ્થિતિ અને તાજેતરની વાતચીતોને મેમરીમાં કેશ કરી શકીએ છીએ.
ઉપલબ્ધતા: અમને અમારી સેવા મોટાભાગનો સમય ઉપલબ્ધ રહેવાની જરૂર છે. અમારી સિસ્ટમ ખામી-સહિષ્ણુ હોવી જોઈએ, આમ અમે ક્ષણિક સંદેશાઓની ઘણી નકલો રાખી શકીએ છીએ જેથી ખોવાઈ ગયેલો કોઈપણ સંદેશ તેના ડુપ્લિકેટમાંથી ઝડપથી પાછો મેળવી શકાય. પરિણામે, સિસ્ટમની ઉપલબ્ધતા જોખમમાં મૂકી શકાતી નથી.
ઉપસંહાર
અમારી સિસ્ટમ હવે માત્ર થોડી ક્ષમતાઓને જ સપોર્ટ કરે છે, પરંતુ અમે તેને સરળતાથી વિસ્તરણ કરી શકીએ છીએ જેથી કરીને ઘણા લોકોને સંદેશા વિતરિત કરી શકાય. તમે વિડિયો અને ફોન કૉલ ક્ષમતાઓ પણ પ્રદાન કરી શકો છો. આ સિસ્ટમને એવી રીતે પણ વિકસાવવામાં આવી શકે છે કે વપરાશકર્તાઓ સ્ટેટસ અપડેટ્સ અથવા વર્ણનો પ્રકાશિત કરી શકે અને એકબીજાને વાંચી શકે.
મેં તમને WhatsApp સિસ્ટમ ડિઝાઇનની ઉચ્ચ-સ્તરની ઝાંખી આપવા માટે સખત મહેનત કરી. હું આશા રાખું છું કે તમે તેનો આનંદ માણ્યો હશે અને તેનો સારો ઉપયોગ કરશો.
એક જવાબ છોડો