பொருளடக்கம்[மறை][காட்டு]
இன்ஸ்டாகிராம் ஃபீட் என்பது உங்களுக்கு முக்கியமான நபர்கள் மற்றும் விஷயங்களைப் பகிர்வதற்கும் இணைப்பதற்கும் ஒரு தளமாகும். நீங்கள் Instagram ஐத் திறக்கும்போது அல்லது உங்கள் ஊட்டத்தைப் புதுப்பிக்கும்போது, நீங்கள் ஆர்வமாக இருப்பதாக நாங்கள் நினைக்கும் புகைப்படங்களும் வீடியோக்களும் மேலே காட்டப்படும்.
செய்தி ஊட்டமானது, நீங்கள் படிக்கும் வகையில் அமைப்பில் உள்ள பிற நிறுவனங்களால் உருவாக்கப்பட்ட உரை, படங்கள் அல்லது வீடியோக்களைக் கொண்ட உருப்படிகளின் தொகுப்பாகும். மற்ற நிறுவனங்கள் புதிய இடுகைகளை உருவாக்கும் போது இது எப்போதும் மாறிக்கொண்டே இருக்கிறது.
இந்த இடுகையில், இன்ஸ்டாகிராமின் ஊட்டத்தின் கணினி வடிவமைப்பை நாங்கள் நெருக்கமாகப் பார்ப்போம். எனவே, ஆரம்பிக்கலாம்.
1. தேவைகள்
செயல்பாட்டுத் தேவை
- பயனரின் செய்தி ஊட்டமானது, பயனர் பின்பற்றிய அல்லது ஆர்வமுள்ள அமைப்பில் உள்ள பிற நிறுவனங்களின் இடுகைகளிலிருந்து உருவாக்கப்பட்டது.
- உரை, படங்கள் மற்றும் வீடியோக்கள் அனைத்தையும் இடுகைகளில் காணலாம்.
- பயனரின் செய்தி ஊட்டமானது மற்றவர்களால் உருவாக்கப்பட்ட புதிய இடுகைகளுடன் புதுப்பிக்கப்பட வேண்டும்.
செயல்படாத அளவுகோல்
- செய்தி ஊட்டங்களின் உருவாக்கம் நிகழ்நேரத்தில் நடைபெற வேண்டும். இறுதிப் பயனர் 12 வினாடிகள் தாமதத்தை மட்டுமே அனுபவிக்க வேண்டும்.
- புதிய இடுகையைச் சேர்த்தல்: கணினியில் சமர்ப்பிக்கப்பட்ட பிறகு செய்தி ஊட்டக் கோரிக்கையில் புதிய இடுகை தோன்றுவதற்கு 5 வினாடிகளுக்கு மேல் ஆகாது.
2. திறன் மதிப்பீடு
- மார்ச் 2021 நிலவரப்படி, உலக மக்கள் தொகை வெறும் 7.8 பில்லியன் மக்கள் மட்டுமே. உலக மக்கள்தொகையில் 21% பேர் Facebook DAU (தினசரி செயலில் உள்ள பயனர்) மற்றும் 32% பேர் Facebook MAU (மாதாந்திர செயலில் உள்ள பயனர்) (மாதாந்திர செயலில் உள்ள பயனர்) என்பதை இது குறிக்கிறது. அது ஆச்சரியமாக இருக்கிறது.
- விஷயங்களை எளிதாக்க, நாங்கள் உருவாக்கும் அமைப்பில் 1 பில்லியன் DAU உள்ளது என்று பாசாங்கு செய்யலாம்.
- ஒருவர் Facebook இல் 500 நபர்கள் அல்லது வணிகங்களைப் பின்தொடர்கிறார் என்று வைத்துக்கொள்வோம். ஒரு குழு அல்லது ஒரு பக்கம் ஒரு நிறுவனமாக கருதப்படலாம்.
மதிப்பிடப்பட்ட போக்குவரத்து
ஒரு பயனர் சராசரியாக ஒவ்வொரு நாளும் 10 முறை செய்தி ஊட்டத்தைப் பதிவிறக்குகிறார் என்று வைத்துக்கொள்வோம். எனவே இது தோராயமாக 116K QPS மற்றும் 1e10 கோரிக்கைகள் ஒவ்வொரு நாளும்.
சேமிப்பகத்தின் மதிப்பீடுகள்
ஒவ்வொரு பயனரின் செய்தி ஊட்டத்திலிருந்தும் 500 இடுகைகளை விரைவாக மீட்டெடுப்பதற்காக சராசரியாக நினைவகத்தில் நாங்கள் பராமரிக்கிறோம், மேலும் ஒவ்வொரு இடுகையும் 1KB அளவில் இருக்கும். எனவே ஒரு பயனருக்கு 500 KB, அனைத்து DAU களுக்கும் 500 TB மற்றும் ஒவ்வொன்றும் 5000 GB RAM கொண்ட 100 கணினிகள்.
3. கணினிகளுக்கான APIகள்
userId (GUID): செய்தி ஊட்டத்தைப் பெறக்கூடிய பயனர்.
விருப்பத்தேர்வுகள் அளவுருவில் பின்வரும் புலங்கள் கிடைக்கின்றன:
- afterPostId (GUID): பின்வரும் இடுகையிலிருந்து செய்தி ஊட்டத்தைப் பெறுங்கள். குறிப்பிடப்படவில்லை என்றால், சமீபத்திய இடுகைகளைப் பெறவும்.
- எண்ணிக்கை (எண்): ஒவ்வொரு கோரிக்கையும் திரும்பப் பெறக்கூடிய அதிகபட்ச இடுகைகளின் எண்ணிக்கை. எதுவும் வழங்கப்படாவிட்டால், பின்தளத்தில் இயல்புநிலை அதிகபட்ச எண்ணை அமைக்கும்.
- excludeReplies (பூலியன்): செய்தி ஊட்டத்தில் பதில்கள் சேர்க்கப்படுவதைத் தடுக்கிறது.
- JSON திரும்பிய செய்தி ஊட்ட உருப்படிகளின் பட்டியலைக் கொண்டுள்ளது.
4. தரவுத்தளத்தை வடிவமைத்தல்
நிறுவனங்கள்
- பயனர்
- entityId, பெயர், விளக்கம் மற்றும் நேர முத்திரை அனைத்தும் தேவையான புலங்கள்.
- பின்வரும் புலங்கள் தேவை: PostId, தலைப்பு, உரை, authorId மற்றும் நேர முத்திரை.
- நேர முத்திரை, url மற்றும் mediaId
உறவுகள்
- பிற பயனர்கள் அல்லது நிறுவனங்களை ஒரு பயனர் பின்தொடரலாம். (m:n)
- ஆசிரியர்-இடுகை: பயனர்கள் மற்றும் நிறுவனங்கள் இருவரும் இடுகைகளை உருவாக்க முடியும். பயனர்கள் மட்டுமே எளிமைக்காக இடுகைகளை உருவாக்க முடியும் என்று வைத்துக்கொள்வோம். (1:n; authorId உட்பொதிக்கக்கூடியது).
- ஒவ்வொரு இடுகையும் சில வகையான ஊடகங்களுடன் இணைக்கப்பட்டுள்ளது. (1:n)
5. உயர்நிலை வடிவமைப்பு
கட்டிடக்கலை
பணிப்பாய்வுகளையும்
தீவன உற்பத்தி
ஜே தனது செய்தி ஸ்ட்ரீமைக் கோரும்போது, கணினி பின்வருவனவற்றைச் செய்யும்:
- ஜே பின்தொடரும் அனைத்து நபர்களின் ஐடிகள் மற்றும் விஷயங்களை மீட்டெடுக்கவும்.
- மொத்த இடுகைகள்: அந்த ஐடிகளைக் கொடுத்தால், மிகச் சமீபத்திய, பிரபலமான மற்றும் தொடர்புடைய இடுகைகளைப் பெறுங்கள்.
- இடுகைகளை அவற்றின் பொருத்தம் மற்றும் நேரத்திற்கு ஏற்ப வரிசைப்படுத்தவும்.
- தற்காலிக சேமிப்பு: உருவாக்கப்பட்ட ஊட்டங்களைச் சேமித்து, சிறந்த 20 இடுகைகளை ஜெய்க்கு அனுப்பவும்.
- ஜெய் முதல் 20 இடுகைகளைப் படித்து முடித்ததும், அடுத்த 20 இடுகைகளைப் பெற மற்றொரு கோரிக்கை அனுப்பப்படுகிறது.
தீவன விநியோகம்
ஜெய் ஆயுஷைப் பின்தொடர்கிறார் என்றும், ஆயுஷ் புதிதாக எதையும் வெளியிடுகிறார் என்றும் வைத்துக்கொள்வோம். ஜேயின் செய்தி ஊட்டத்தை சிஸ்டம் புதுப்பிக்க வேண்டும்:
- ஆயுஷைப் பின்தொடர்பவர்களின் ஐடிகளை மீட்டெடுக்கவும்.
- புதிய கட்டுரைகளைச் சேர்க்கவும்: அந்த ஐடிகளைப் பின்தொடர்பவர்களின் செய்தி ஊட்டக் குழுவில் ஆயுஷின் இடுகையைச் சேர்க்கவும்.
- இடுகைகளை அவற்றின் பொருத்தம் மற்றும் நேரத்திற்கு ஏற்ப வரிசைப்படுத்தவும்.
- தரவரிசை இடுகையின் தற்காலிக சேமிப்பைப் புதுப்பிக்கவும்.
- புதிய இடுகைகள் வெளியிடப்படும்போது பின்தொடர்பவர்களுக்கு அறிவிக்கப்பட வேண்டும்.
கூறுகள்
பயனர்களின் இணைப்புகள் இணைய சேவையகங்களால் பராமரிக்கப்படுகின்றன.
மேலே குறிப்பிடப்பட்டுள்ள நடைமுறைகள் பயன்பாட்டு சேவையகத்தால் செயல்படுத்தப்படுகின்றன.
தற்காலிக சேமிப்பு மற்றும் தரவுத்தளம்:
- தொடர்புடைய தரவுத்தள பயனர்/நிறுவனம்
- தொடர்புடைய தரவுத்தளம் (இடுகை)
- படம்/வீடியோ பண்பு: ஆயுஷ் ஸ்டோர்ஜ்
- தொடர்புடைய தரவுத்தள மெட்டாடேட்டா
தனிப்பயனாக்கப்பட்ட சேவைகள்:
- தீவன உற்பத்தி
- ஊட்டங்களின் அறிவிப்பு
6. விரிவான வடிவமைப்பு
தீவனத்தை உருவாக்குதல்
ஃபேன்-அவுட் படிக்க அப்பாவியான செயல்படுத்தல்:
இந்த ஒழுங்கற்ற செயலாக்கத்தில் உள்ள சிக்கல்கள்:
- அதிக எண்ணிக்கையிலான நண்பர்கள்/பின்தொடர்பவர்களைக் கொண்ட பயனர்கள் கணிசமான மந்தநிலையைக் கவனிப்பார்கள், ஏனெனில் நாங்கள் அதிக எண்ணிக்கையிலான இடுகைகளைப் பிரித்து, ஒன்றிணைத்து, தரவரிசைப்படுத்த வேண்டும்.
- ஒரு பயனர் தனது பக்கத்தை ஏற்றும்போது, நாங்கள் காலவரிசையை உருவாக்குகிறோம். இது மந்தமாகவும், அதிக தாமதமாகவும் இருக்கலாம்.
- ஒவ்வொரு நிலைப் புதுப்பிப்பும் நேரடிப் புதுப்பிப்புகளுக்குப் பின்தொடர்பவர்கள் அனைவருக்கும் ஊட்டப் புதுப்பிப்புகளை ஏற்படுத்தும். இது எங்கள் நியூஸ்ஃபீட் ஜெனரேஷன் சேவையில் குறிப்பிடத்தக்க தாமதத்தை ஏற்படுத்தலாம்.
செயல்திறனை அதிகரிக்க, காலவரிசையை முன்கூட்டியே உருவாக்கி, நினைவகத்தில் சேமிக்கலாம்.
ஆஃப்லைன் தயாரிப்பு (ரசிகர்கள் எழுதுதல்)
பயனர்களின் செய்தி ஊட்டங்களை நினைவகத்தில் தொடர்ந்து உருவாக்கி சேமித்து வைக்கும் பிரத்யேக சேவையகங்களை நாம் வைத்திருக்க முடியும். பயனர் விரும்பும் போதெல்லாம், முன்பே உருவாக்கப்பட்ட, சேமிக்கப்பட்ட இடத்திலிருந்து செய்தி ஊட்டத்தை வழங்க முடியும்.
ஒரு பயனரின் ஊட்டத்தில் எத்தனை ஊட்டப் பொருட்களை நினைவகத்தில் சேமிக்க வேண்டும்?
உங்கள் பயன்பாட்டு நடத்தையின் அடிப்படையில் மாற்றியமைக்கவும்.
அனைத்து பயனர்களுக்கும் செய்தி ஊட்டத்தை உருவாக்க வேண்டுமா (அதை நினைவகத்தில் சேமிக்கவும்)?
- அடிக்கடி உள்நுழையாதவர்களுக்கு.
- LRU-அடிப்படையிலான கேச்சிங் ஒரு எளிய அணுகுமுறை.
- பயனர்கள் எவ்வாறு உள்நுழைகிறார்கள் என்பதைக் கண்டுபிடிப்பதே சிறந்த தீர்வாகும். அது எப்போது? எந்த வார நாட்களைப் பற்றி பேசுகிறீர்கள்?
ஊட்ட வெளியீடு
Fanout என்பது உங்களைப் பின்தொடர்பவர்கள் அனைவருக்கும் ஒரு இடுகையை அனுப்பும் செயல்முறையாகும்.
ஃபேன்அவுட் ரீட்(இழுக்க)
நீங்கள் செய்தி ஊட்டத்தைக் கோரும்போது, கணினி வாசிப்பு கோரிக்கையைப் பெறுகிறது. Fanout read ஆனது உங்களைப் பின்தொடர்பவர்கள் அனைவருக்கும் படிக்கக் கோரிக்கையை அனுப்பி, அவர்களின் உள்ளடக்கத்தைப் படிக்கும்படி கேட்டுக்கொள்கிறது.
நன்மை:
- எழுதும் செயல்முறை மலிவானது.
- தரவைப் படிக்கும்போது, பல்வேறு திரட்டல் அல்காரிதம்களைப் பயன்படுத்துவது எளிது.
பாதகம்:
- நிறைய பின்தொடர்பவர்களைக் கொண்ட ஒருவருக்கு, வாசிப்பு செயல்பாடு மிகவும் விலை உயர்ந்தது.
- பயனர்கள் புதிய தரவை இழுக்கும் வரை பார்க்க மாட்டார்கள்.
- மிகச் சமீபத்திய இடுகைகளைப் பெற நாங்கள் தொடர்ந்து இழுக்கும்போது, சரியான இழுவைக் கண்டறிவது கடினம், மேலும் பெரும்பாலான இழுத்தல் கோரிக்கைகள் வெற்றுப் பதிலைத் தரும், வளங்களை வீணடிக்கும்.
விசிறி எழுத்து(தள்ளு)
நீங்கள் ஒரு புதிய இடுகையை அனுப்பும்போது கணினிக்கு எழுத கோரிக்கை வைக்கப்படுகிறது. ஃபேன்அவுட் ரைட்டைப் பயன்படுத்தி தங்கள் செய்தி ஊட்டத்தைப் புதுப்பிக்க, உங்களைப் பின்தொடர்பவர்கள் அனைவருக்கும் எழுதும் கோரிக்கை அனுப்பப்படுகிறது.
ப்ரோ
- வாசிப்பு செயல்முறை மலிவானது.
உடன்
- மில்லியன் கணக்கான பின்தொடர்பவர்களைக் கொண்ட பயனருக்கு, தி எழுத செயல்முறை மிகவும் விலை உயர்ந்தது.
ஊட்டத்தின் தரவரிசை
ஊட்டங்களை காலவரிசைப்படி வரிசைப்படுத்துவதற்குப் பதிலாக, இன்றைய தரவரிசை அல்காரிதம்கள், அதிகப் பொருத்தமுள்ள பொருட்களுக்கு முன்னுரிமை அளிக்கப்படும் என்பதற்கு உத்தரவாதம் அளிக்க முயற்சிக்கிறது.
- விருப்பங்கள், கருத்துகள் மற்றும் பகிர்வுகளின் எண்ணிக்கை, கட்டுரையில் புகைப்படங்கள் அல்லது வீடியோக்கள் இருந்தால் உருப்படி கடைசியாகப் புதுப்பிக்கப்பட்ட நேரம் மற்றும் பல போன்ற ஊட்டப் பொருளின் பொருத்தத்தைத் தீர்மானிக்க உதவும் காரணிகளைத் தேர்வுசெய்யவும்.
- குணாதிசயங்களின் அடிப்படையில் மதிப்பெண்ணைக் கணக்கிடுங்கள்.
- இடுகைகளை வரிசைப்படுத்த மதிப்பெண்ணைப் பயன்படுத்தவும்.
எங்கள் தரவரிசை முறை எவ்வளவு பயனுள்ளதாக இருக்கிறது என்பதைப் பார்க்க, பயனர் தக்கவைப்பு, விளம்பர வருமானம் மற்றும் பல போன்ற KPIகளை அமைக்கவும்.
தீர்மானம்
இன்ஸ்டாகிராம் அல்லது அதன் தாய் வணிகமான Facebook ஒரு பெரிய நிறுவனம் என்ற போதிலும், அது ஒரு சிறந்த புரிதலைக் கொண்டுள்ளது அமைப்பு வடிவமைப்பு.
இன்ஸ்டாகிராம் ஊட்டத்தின் உயர்நிலை சுருக்கத்தை உங்களுக்கு வழங்க நான் கடினமாக முயற்சித்தேன்.
இது பயனுள்ளதாக இருந்தது மற்றும் நீங்கள் அதை நன்றாக பயன்படுத்துவீர்கள் என்று நம்புகிறேன்.
ஒரு பதில் விடவும்