પાછલા બે દાયકામાં મોટા પાયે ઓનલાઈન અરજીઓએ લાંબો રસ્તો કાઢ્યો છે. આ નવીનતાઓએ સોફ્ટવેર ડેવલપમેન્ટની અમારી ધારણાઓને બદલી નાખી છે. ફેસબુક, ઇન્સ્ટાગ્રામ અને ટ્વિટર, ઉદાહરણ તરીકે, બધા સ્કેલેબલ પ્લેટફોર્મ છે.
આ સિસ્ટમ્સ ટ્રાફિક અને ડેટાના વિશાળ જથ્થાને મેનેજ કરવા માટે બનાવવી આવશ્યક છે કારણ કે સમગ્ર વિશ્વમાં એક જ સમયે અબજો લોકો તેનો ઉપયોગ કરે છે. આ ત્યારે છે સિસ્ટમ ડિઝાઇન ચિત્ર પ્રવેશે છે.
ચોક્કસ માપદંડોને પૂર્ણ કરતી સિસ્ટમ માટે આર્કિટેક્ચર, ઇન્ટરફેસ અને ડેટા સ્થાપિત કરવાની પ્રક્રિયાને સિસ્ટમ ડિઝાઇન તરીકે ઓળખવામાં આવે છે. સુસંગત અને કાર્યક્ષમ સિસ્ટમો દ્વારા, સિસ્ટમ ડિઝાઇન તમારા વ્યવસાય અથવા સંસ્થાની માંગને સંતોષે છે.
એકવાર તમારી કંપની અથવા સંસ્થાએ તેના માપદંડો નક્કી કરી લીધા પછી, તમે તેમને ભૌતિક સિસ્ટમ ડિઝાઇનમાં સમાવિષ્ટ કરવાનું શરૂ કરી શકો છો જે તમારા ગ્રાહકોની માંગને પૂર્ણ કરે છે.
તમે બેસ્પોક ડેવલપમેન્ટ, કોમર્શિયલ સોલ્યુશન્સ અથવા બેના મિશ્રણ સાથે જવાનું પસંદ કરો છો, તમે તમારી સિસ્ટમ કેવી રીતે ડિઝાઇન કરો છો તે નક્કી કરશે કે તમે તેને કેવી રીતે બનાવશો.
અમે આ પોસ્ટમાં ટ્વિટર ટાઈમલાઈનની સિસ્ટમ ડિઝાઈન પર વિગતવાર જોઈશું, ટ્યુટોરીયલ સાથે પૂર્ણ. ચાલો, શરુ કરીએ.
પગલું 1: રૂપરેખા ઉપયોગ કેસ અને અવરોધો
કેસનો ઉપયોગ કરો
- એક વપરાશકર્તા ટ્વિટ અપલોડ કરે છે.
- સેવા ટ્વીટ્સના અનુયાયીઓને પુશ સૂચનાઓ અને ઇમેઇલ્સ મોકલે છે.
- વપરાશકર્તાની સમયરેખા જોવામાં આવે છે (વપરાશકર્તાની પ્રવૃત્તિ)
- વપરાશકર્તા હોમ ટાઈમલાઈન જુએ છે (વપરાશકર્તા જે લોકો અનુસરી રહ્યા છે તેમની પ્રવૃત્તિ)
- કીવર્ડ્સ વપરાશકર્તા દ્વારા શોધવામાં આવે છે.
- સેવા ખરેખર સુલભ છે.
અવકાશ બહાર
- આ સેવાનો ઉપયોગ કરીને ટ્વિટર ફાયરહોઝ અને અન્ય સ્ટ્રીમ પર ટ્વિટ્સ મોકલવામાં આવે છે.
- સેવા વપરાશકર્તાની દૃશ્યતા સેટિંગ્સના આધારે ટ્વીટ્સ દૂર કરે છે.
- જો યુઝર જે વ્યક્તિને જવાબ આપવામાં આવી રહ્યો છે તેને પણ અનુસરતો નથી, તો જવાબ છુપાવો.
- 'રીટ્વીટ છુપાવો' વિકલ્પનું અવલોકન કરો.
- ઍનલિટિક્સ
અવરોધો અને ધારણાઓ
રાજ્ય ધારણાઓ
- ટ્રાફિક સમાન રીતે વિખરાયેલો નથી.
- ટ્વીટ મોકલવું સરળ હોવું જોઈએ.
- જ્યાં સુધી તમારી પાસે લાખો અનુયાયીઓ ન હોય, ત્યાં સુધી તમારા બધા અનુયાયીઓને ટ્વિટ મોકલવાનું ઝડપી હોવું જોઈએ.
- 100 મિલિયન સક્રિય વપરાશકર્તાઓ છે.
- દર મહિને 15 અબજ ટ્વીટ્સ અથવા દરરોજ 500 મિલિયન ટ્વીટ્સ
- દરેક ટ્વીટમાં સરેરાશ 10 ડિલિવરીનો ફેનઆઉટ હોય છે.
- દરરોજ, ફેનઆઉટ 5 અબજ ટ્વીટ્સ વિતરિત કરે છે.
- ફેનઆઉટ દર મહિને 150 અબજ ટ્વીટ્સ વિતરિત કરે છે.
- 250 અબજ માસિક વાંચન વિનંતીઓ
- 10 અબજ માસિક શોધ
સમયરેખા
- સમયરેખા નેવિગેટ કરવા માટે સરળ હોવી જોઈએ.
- ટ્વિટર લખવા કરતાં વાંચવા વિશે વધુ છે.
- ઝડપી ટ્વિટ વાંચન માટે ઑપ્ટિમાઇઝ કરો
- ટ્વીટનો વપરાશ સમય માંગી લે તેવી છે.
શોધો
- શોધ પ્રક્રિયા ઝડપી હોવી જોઈએ.
- તે શોધવા માટે સમય માંગી લે છે.
વપરાશની ગણતરી કરો
દરેક ટ્વિટનું કદ:
- 8 બાઇટ્સ ટ્વીટ આઈડી
- 32 બાઇટ્સ યુઝર-આઇડી
- ટેક્સ્ટની 140 બાઇટ્સ
- મીડિયા - સરેરાશ 10 KB
- કુલ: ~10 KB
દર મહિને, 150 TB તાજી ટ્વીટ સામગ્રી જનરેટ થાય છે.
- * દરરોજ 500 મિલિયન ટ્વીટ્સ * 30 દિવસ દર મહિને * 10 KB પ્રતિ ટ્વીટ
- ત્રણ વર્ષમાં, 5.4 PB તાજી ટ્વીટ સામગ્રી છે.
દરેક સેકન્ડે 100,000 વાંચવાની વિનંતીઓ છે.
- * (દર મહિને 400 વિનંતીઓ / દર મહિને 1 અબજ વિનંતીઓ) દર મહિને 250 અબજ વાંચન વિનંતીઓ
દરેક સેકન્ડે 6,000 ટ્વીટ્સ થાય છે.
- * (દર મહિને 400 વિનંતીઓ / દર મહિને 1 બિલિયન વિનંતીઓ) દર મહિને 15 બિલિયન ટ્વીટ્સ
ફેનઆઉટ પર, દર સેકન્ડે 60 હજાર ટ્વિટ્સ મોકલવામાં આવે છે.
- ફેનઆઉટ દર મહિને 150 બિલિયન ટ્વીટ્સ પહોંચાડે છે* (દર મહિને 400 વિનંતીઓ / 1 બિલિયન વિનંતીઓ).
દર સેકન્ડે માહિતી માટે 4,000 વિનંતીઓ
- * (દર મહિને 400 વિનંતીઓ / દર મહિને 1 બિલિયન વિનંતીઓ) દર મહિને 10 બિલિયન શોધ
કેટલાક ઉપયોગી રૂપાંતરણ
- દર મહિને 2.5 મિલિયન સેકન્ડ પસાર થાય છે.
- પ્રતિ સેકન્ડ 2.5 વિનંતી પર દર મહિને 1 મિલિયન વિનંતીઓ
- દર મહિને 100 મિલિયન વિનંતીઓ x 40 વિનંતીઓ પ્રતિ સેકન્ડ
- દર મહિને 1 બિલિયન વિનંતીઓ = 400 વિનંતીઓ પ્રતિ સેકન્ડ
પગલું 2: ઉચ્ચ-સ્તરની આકૃતિ
પગલું 3: મુખ્ય ઘટકો સમજાવવું
જો તેઓ ટ્વીટ સબમિટ કરે તો અમે વપરાશકર્તાની ટાઈમલાઈન (વપરાશકર્તાની પ્રવૃત્તિ)ને રિલેશનલ ડેટાબેઝમાં પોપ્યુલેટ કરવા માટે તેમની પોતાની ટ્વીટ્સ સાચવી શકીએ છીએ. ટ્વીટ્સ વિતરિત કરવી અને હોમ ટાઈમલાઈન વિકસાવવી વધુ મુશ્કેલ છે (વપરાશકર્તા અનુસરે છે તે વ્યક્તિઓની પ્રવૃત્તિ).
તમામ અનુયાયીઓ (દર સેકન્ડમાં 60 હજાર ટ્વીટ્સ વિતરિત કરવામાં આવે છે) ને ટ્વીટ કરીને એક લાક્ષણિક રીલેશનલ ડેટાબેઝ ભરાઈ જશે. અમે કદાચ NoSQL ડેટાબેઝ અથવા મેમરી કેશ જેવા ફાસ્ટ-રાઇટ ડેટા સ્ટોરેજ સાથે જવા માંગીએ છીએ.
મેમરીમાંથી ક્રમિક રીતે 1 MB વાંચવામાં લગભગ 250 માઇક્રોસેકન્ડ લાગે છે, પરંતુ SSD માંથી વાંચવામાં 4 ગણો સમય લાગે છે, અને ડિસ્કમાંથી વાંચવામાં 80 ગણો સમય લાગે છે.
ઑબ્જેક્ટ સ્ટોરનો ઉપયોગ ઇમેજ અને વીડિયો જેવા ડેટા સ્ટોર કરવા માટે થઈ શકે છે.
- વેબ સર્વર, જે રિવર્સ પ્રોક્સી તરીકે કામ કરી રહ્યું છે, તે ક્લાયન્ટ તરફથી એક ટ્વિટ મેળવે છે.
- વેબ સર્વર દ્વારા Write API સર્વરને વિનંતી મોકલવામાં આવે છે.
- Write API ટ્વીટને વપરાશકર્તાની સમયરેખામાં SQL ડેટાબેઝમાં સાચવે છે.
ફેન-આઉટ સેવાનો સંપર્ક Write API દ્વારા કરવામાં આવે છે, અને તે નીચેના કાર્યો કરે છે.
- વપરાશકર્તા ગ્રાફ સેવાને ક્વેરી કરીને મેમરી કેશમાં વપરાશકર્તાના અનુયાયીઓને શોધે છે.
- મેમરી કેશ પર, ટ્વીટ યુઝરના ફોલોઅર્સની હોમ ટાઈમલાઈનમાં સેવ થાય છે.
- 1,000 અનુયાયીઓ = 1,000 લુકઅપ્સ અને ઇન્સર્ટ્સ = O(n) ઓપરેશન.
- ટ્વીટ ઝડપી શોધ માટે સર્ચ ઇન્ડેક્સ સર્વિસમાં સાચવવામાં આવે છે.
- ઑબ્જેક્ટ સ્ટોરનો ઉપયોગ મીડિયા સ્ટોર કરવા માટે થાય છે.
- સૂચના સેવા દ્વારા અનુયાયીઓને પુશ ચેતવણીઓ મોકલે છે.
- અસુમેળ રીતે ચેતવણીઓ મોકલવા માટે, તે કતારનો ઉપયોગ કરે છે.
જો અમારી મેમરી કેશ રેડિસ હોય તો અમે નીચેની રચના સાથે મૂળ રેડિસ સૂચિનો ઉપયોગ કરી શકીએ છીએ:
વપરાશકર્તાની હોમ ટાઈમલાઈન નવી ટ્વીટ સાથે અપડેટ કરવામાં આવશે, જે મેમરી કેશમાં સંગ્રહિત થશે. અમે નીચેના સાર્વજનિક REST API નો ઉપયોગ કરીશું:
વપરાશકર્તા સમયરેખા વપરાશકર્તા દ્વારા જોવામાં આવે છે.
- વેબ સર્વરને ક્લાયંટ તરફથી વપરાશકર્તા સમયરેખા વિનંતી પ્રાપ્ત થાય છે.
- વેબ સર્વર દ્વારા રીડ API સર્વરને વિનંતી મોકલવામાં આવે છે.
- રીડ API વપરાશકર્તા સમયમર્યાદા માટે SQL ડેટાબેઝને પૂછે છે.
REST API હોમ ટાઈમલાઈનની જેમ જ કામ કરશે, અપવાદ સિવાય કે તમામ ટ્વીટ્સ તેઓ જે લોકોને અનુસરે છે તેના કરતાં યુઝર પાસેથી જ આવશે.
વપરાશકર્તા કીવર્ડ્સ માટે શોધ કરે છે:
- વેબ સર્વરને ક્લાયન્ટ તરફથી શોધ વિનંતી પ્રાપ્ત થાય છે.
- વેબ સર્વર દ્વારા શોધ API સર્વરને વિનંતી મોકલવામાં આવે છે.
પગલું 4: Twitter સમયરેખા
સમયરેખા બનાવવી એ મુશ્કેલ કાર્ય છે. સમયરેખા જનરેટ કરતું સર્વર કે જે વેબ અથવા એપ્લિકેશન સર્વર્સ સાથે લિંક કરે છે તે જરૂરી છે.
દરેક વખતે જ્યારે વપરાશકર્તા સાઇન ઇન કરે છે, સમયરેખા સેવા અનુયાયીના કોષ્ટકમાં વપરાશકર્તાઓની નવી ટ્વીટ્સનો ટ્રૅક જાળવી રાખે છે અને વપરાશકર્તાની સમયરેખાને અપડેટ અથવા રિફ્રેશ કરે છે.
અમે અહીં કોઈપણ પ્રકારની રેન્કિંગ સિસ્ટમ લાગુ કરતા નથી; તેના બદલે, અમે ધારીએ છીએ કે વપરાશકર્તાના અનુયાયીઓ તરફથી ટોચની 5 ટ્વીટ્સ સમયરેખામાં સર્જન સમયના ક્રમમાં રજૂ કરવામાં આવી છે. અમે 50-ટ્વીટ રિફ્રેશ કટઓફ જાળવી શકીએ છીએ. જ્યાં સુધી વપરાશકર્તા પૃષ્ઠને રિફ્રેશ ન કરે ત્યાં સુધી અમે તે થ્રેશોલ્ડ સુધી પહોંચી ગયા પછી પણ તાજું કરવાનું અથવા સમયરેખા બનાવવાનું બંધ કરીએ છીએ.
લાઇવ યુઝર ફીડ બનાવટથી ઉચ્ચ વિલંબ અને પ્રદર્શન ચિંતાઓ આવશે. તેના બદલે, ઑફલાઇન સ્ટ્રીમ બનાવવી જે તરત જ પ્રસ્તુત કરી શકાય છે તે પ્રદર્શનને બહેતર બનાવવાની શ્રેષ્ઠ રીત છે. સમર્પિત ટાઈમલાઈન સર્વર્સ ચલાવો જે એપ્લીકેશન સર્વરને નિયમિત ધોરણે પિંગ કરે છે જેથી ફીડ બનાવવામાં આવી હોય તે સમયના આધારે તેને રિફ્રેશ કરે.
રેન્કિંગ અલ્ગોરિધમને નિર્ણાયક સંકેતો ધ્યાનમાં લેવા જોઈએ અને ખાતરી આપવા માટે વજન પ્રદાન કરવું જોઈએ કે વપરાશકર્તાની સમયરેખા તેઓ અનુસરતા એકાઉન્ટ્સમાંથી એક અથવા વધુની સામગ્રી દ્વારા પ્રભુત્વ ધરાવતા નથી.
વધુ સ્પષ્ટ રીતે, અમે કોઈપણ ફીડ આઇટમની સુસંગતતા સાથે સંબંધિત સુવિધાઓ પસંદ કરી શકીએ છીએ, જેમ કે પસંદ, ટિપ્પણીઓ, શેર્સની સંખ્યા અને અપડેટ સમય. આમાંના દરેક માપદંડનો ઉપયોગ ટ્વીટને રેટ કરવા માટે થવો જોઈએ અને પછી તે રેન્કનો ઉપયોગ ટાઈમલાઈન પર ટ્વીટ બતાવવા માટે થવો જોઈએ.
શું અમે વપરાશકર્તાઓને તેમના ન્યૂઝફીડ માટે નવી સામગ્રી ઉપલબ્ધ થવા પર સતત ચેતવણી આપવી જોઈએ? જ્યારે નવો ડેટા ઉપલબ્ધ થાય છે ત્યારે યુઝર્સને એલર્ટ થવાનું ફાયદાકારક લાગે છે. મોબાઇલ ઉપકરણો પર, જો કે, જ્યારે ડેટાનો ઉપયોગ ખૂબ ખર્ચાળ હોય છે, ત્યારે તે બેન્ડવિડ્થનો બગાડ કરી શકે છે.
પરિણામે, અમે મોબાઇલ ઉપકરણો પર ડેટા ન પુશ કરવાનું પસંદ કરી શકીએ છીએ અને તેના બદલે વપરાશકર્તાઓને નવી પોસ્ટિંગ માટે "પુલ ટુ રિફ્રેશ" કરવાની મંજૂરી આપી શકીએ છીએ.
પગલું 5: સ્કેલિંગ ડિઝાઇન
સંભવિત અડચણ એ ફેનઆઉટ સેવા છે. લાખો ફોલોઅર્સ ધરાવતા ટ્વિટર યુઝર્સે તેમની ટ્વીટ રોલ આઉટ થવા માટે ઘણી મિનિટ રાહ જોવી પડશે. આનાથી ટ્વીટના જવાબો સાથે રેસ થઈ શકે છે, જે અમે સેવાના સમયે ટ્વીટ્સનો ફરીથી ઓર્ડર કરીને ટાળી શકીએ છીએ.
અમે મોટી સંખ્યામાં ફોલોઅર્સ ધરાવતા લોકોની ટ્વિટ ફેલાવતા પણ રોકી શકીએ છીએ. તેના બદલે, અમે ખૂબ અનુસરતા વ્યક્તિઓ તરફથી ટ્વીટ્સ માટે શોધ કરી શકીએ છીએ, વપરાશકર્તાના હોમ ટાઈમલાઈન પરિણામો સાથે શોધ પરિણામોને એકીકૃત કરી શકીએ છીએ, અને પછી સેવાના સમયે ટ્વીટ્સને ફરીથી ગોઠવી શકીએ છીએ.
વધારાના ઉન્નત્તિકરણોમાં શામેલ છે:
- દરેક હોમ ટાઈમલાઈન માટે મેમરી કેશમાં માત્ર થોડાક સો ટ્વીટ્સ રાખો.
- મેમરી કેશમાં, ફક્ત સક્રિય વપરાશકર્તાઓની હોમ સમયરેખા માહિતી સાચવવામાં આવે છે.
- જો વપરાશકર્તા અગાઉના 30 દિવસમાં સક્રિય ન હોય તો અમે SQL ડેટાબેઝમાંથી ઘટનાક્રમનું પુનઃનિર્માણ કરી શકીએ છીએ.
- વપરાશકર્તા કોણ છે તે શોધવા માટે, વપરાશકર્તા ગ્રાફ સેવાનો ઉપયોગ કરો.
- ટ્વીટ્સને SQL ડેટાબેઝમાંથી પુનઃપ્રાપ્ત કરીને મેમરી કેશમાં ઉમેરો.
- Tweet Info Service માત્ર એક મહિનાની ટ્વીટની કિંમત બચાવી શકે છે.
- વપરાશકર્તા માહિતી સેવામાં, ફક્ત સક્રિય વપરાશકર્તાઓ જ સાચવવામાં આવે છે.
- લેટન્સી ઓછી રાખવા માટે, સર્ચ ક્લસ્ટરને મોટે ભાગે ટ્વીટ્સને મેમરીમાં જાળવી રાખવાની જરૂર પડશે.
ઉપસંહાર
ટ્વિટર એક મોટી સંસ્થા હોવા છતાં, તેની પાસે વધુ સારું છે સિસ્ટમ ડિઝાઇનની સમજ. મેં તમને Twitter ટાઈમલાઈનનું ઉચ્ચ સ્તરીય વિહંગાવલોકન આપવા માટે મારા શ્રેષ્ઠ પ્રયાસો કર્યા.
હું આશા રાખું છું કે તમે તેમાંથી ઉપયોગી માહિતી મેળવી હશે અને તેનો સારો ઉપયોગ કરી શકશો.
એક જવાબ છોડો