පටුන[සඟවන්න][පෙන්වන්න]
Instagram සංග්රහය යනු ඔබට වැදගත් වන පුද්ගලයින් සහ දේවල් සමඟ බෙදා ගැනීමට සහ සම්බන්ධ වීමට වේදිකාවකි. ඔබ Instagram විවෘත කරන විට හෝ ඔබේ සංග්රහය නැවුම් කරන විට, ඔබ උනන්දු යැයි අප සිතන ඡායාරූප සහ වීඩියෝ ඉහළට පෙන්වනු ඇත.
ප්රවෘත්ති සංග්රහය යනු ඔබට කියවීමට ඉලක්ක කර ඇති පද්ධතියේ වෙනත් ආයතන විසින් නිර්මාණය කරන ලද පෙළ, රූප, හෝ වීඩියෝ අඩංගු අයිතම එකතුවකි. වෙනත් ආයතන නැවුම් තනතුරු තනන අතරේ එය සැමවිටම වෙනස් වේ.
මෙම ලිපියෙන්, අපි Instagram හි සංග්රහයේ පද්ධති සැලසුම දෙස සමීපව බලමු. ඉතින්, අපි පටන් ගනිමු.
1. අවශ්යතා
ක්රියාකාරී අවශ්යතාවය
- පරිශීලකයාගේ ප්රවෘත්ති සංග්රහය නිර්මාණය කර ඇත්තේ පරිශීලකයා අනුගමනය කළ හෝ උනන්දුවක් දක්වන පද්ධතියේ වෙනත් ආයතනවල පළ කිරීම් මගිනි.
- පෙළ, පින්තූර සහ වීඩියෝ සියල්ලම පළ කිරීම් වලින් සොයා ගත හැක.
- පරිශීලකයාගේ පුවත් සංග්රහය වෙනත් අය විසින් සාදන ලද නව පළ කිරීම් සමඟ යාවත්කාලීන කළ යුතුය.
ක්රියාකාරී නොවන නිර්ණායකය
- ප්රවෘත්ති සංග්රහ නිර්මාණය කිරීම තත්ය කාලීනව සිදු විය යුතුය. අවසාන පරිශීලකයා අත්විඳිය යුත්තේ තත්පර 12ක ප්රමාදයක් පමණි.
- නව පළ කිරීමක් එකතු කිරීම: පද්ධතියට ඉදිරිපත් කිරීමෙන් පසු ප්රවෘත්ති සංග්රහ ඉල්ලීමක නව පළ කිරීමක් දිස් වීමට තත්පර 5කට වඩා ගත නොවිය යුතුය.
2. ධාරිතාව ඇස්තමේන්තු කිරීම
- 2021 මාර්තු වන විට ලෝක ජනගහනය බිලියන 7.8 ක් පමණි. ලෝක ජනගහනයෙන් 21%ක් Facebook DAU (Daily Active User) සහ 32% Facebook MAU (Monthly Active User) (Monthly Active User) බව එයින් පෙන්නුම් කෙරේ. ඒක පුදුමයි.
- දේවල් පහසු කිරීම සඳහා අපි ගොඩනඟන පද්ධතියට DAU බිලියන 1ක් ඇති බව මවාපාමු.
- පුද්ගලයෙකු ෆේස්බුක් හි පුද්ගලයින් 500ක් හෝ ව්යාපාර අනුගමනය කරන බව උපකල්පනය කරන්න. සමූහයක් හෝ පිටුවක් ආයතනයක් ලෙස සැලකිය හැකිය.
ඇස්තමේන්තුගත ගමනාගමනය
එක් පරිශීලකයෙකු සාමාන්යයෙන් දිනකට 10 වතාවක් පුවත් සංග්රහය බාගත කරන බව උපකල්පනය කරන්න. එබැවින් එය දළ වශයෙන් 116K QPS සහ සෑම දිනකම 1e10 ඉල්ලීම් වේ.
ගබඩා කිරීමේ ඇස්තමේන්තු
ඉක්මන් ලබා ගැනීම සඳහා අපි එක් එක් පරිශීලකයාගේ ප්රවෘත්ති සංග්රහයෙන් පළ කිරීම් 500ක් සාමාන්යයෙන් මතකයේ පවත්වා ගෙන යන අතර, සෑම පළකිරීමක්ම ප්රමාණයෙන් 1KB වේ යැයි උපකල්පනය කරමු. එබැවින් එක් පරිශීලකයෙකුට 500 KB, සියලුම DAU සඳහා 500 TB, සහ 5000 GB RAM එකක් සහිත පරිගණක 100 ක්.
3. පද්ධති සඳහා API
userId (GUID): පුවත් සංග්රහය ලබා ගන්නා පරිශීලකයා.
විකල්ප විකල්ප පරාමිතිය තුළ පහත ක්ෂේත්ර තිබේ:
- afterPostId (GUID): පහත පළවන පෝස්ටුවෙන් පුවත් සංග්රහය ලබා ගන්න. නිශ්චිතව දක්වා නොමැති නම්, වඩාත්ම මෑත පළ කිරීම් ලබා ගන්න.
- ගණන් (සංඛ්යාව): එක් එක් ඉල්ලීමට ආපසු ලබා දිය හැකි උපරිම තනතුරු ගණන. කිසිවක් සපයා නොමැති නම් පසු අන්තය පෙරනිමි උපරිම අංකයක් සකසයි.
- excludeReplies (boolean): ප්රවෘත්ති සංග්රහයට පිළිතුරු ඇතුළත් කිරීම වළක්වයි.
- JSON ආපසු ප්රවෘත්ති සංග්රහ අයිතම ලැයිස්තුවක් අඩංගු වේ.
4. දත්ත සමුදායක් සැලසුම් කිරීම
ආයතන
- පරිශීලක
- entityId, නම, විස්තරය සහ වේලා මුද්රාව අවශ්ය ක්ෂේත්ර වේ.
- පහත ක්ෂේත්ර අවශ්ය වේ: PostId, title, text, authorId, සහ timestamp.
- වේලා මුද්දර, url, සහ mediaId
සබඳතා
- වෙනත් පරිශීලකයන් හෝ ආයතන පරිශීලකයෙකු විසින් අනුගමනය කළ හැක. (m:n)
- කර්තෘ-පළ කිරීම: පරිශීලකයන් සහ ආයතන යන දෙකටම තනතුරු සෑදිය හැක. සරල බව සඳහා පෝස්ට් සෑදිය හැක්කේ පරිශීලකයින්ට පමණක් යැයි උපකල්පනය කරන්න. (1:n; authorId එබ්බවිය හැකි ය).
- සෑම පළ කිරීමක්ම යම් ආකාරයක මාධ්යයක් සමඟ ඇත. (1:n)
5. ඉහළ මට්ටමේ නිර්මාණය
ගෘහ නිර්මාණ ශිල්පය
කාර්ය ප්රවාහ
ආහාර නිෂ්පාදනය
ජේ ඇගේ ප්රවෘත්ති ප්රවාහය ඉල්ලා සිටින විට, පද්ධතිය පහත දේ කරනු ඇත:
- ජේ අනුගමනය කරන සියලුම පුද්ගලයින්ගේ සහ දේවල් වල ID ලබා ගන්න.
- තනතුරු එකතු කරන්න: එම හැඳුනුම්පත් ලබා දී, වඩාත්ම මෑත, ජනප්රිය සහ අදාළ තනතුරු ලබා ගන්න.
- තනතුරු ඒවායේ අදාළත්වය සහ වේලාව අනුව ශ්රේණිගත කරන්න.
- හැඹිලිය: සාදන ලද සංග්රහ සුරකින්න සහ හොඳම පළ කිරීම් 20 ජේ යවන්න.
- ජේ මුල් පෝස්ට් 20 කියවල ඉවර උනාම ඊලග පෝස්ට් 20 ගන්න කියල තව රික්වෙස්ට් එකක් එවනවා.
ආහාර බෙදා හැරීම
ජේ ආයුෂ් පසුපස යන බවත් ආයුෂ් අලුත් දෙයක් පළ කරන බවත් උපකල්පනය කරන්න. Jayගේ පුවත් සංග්රහය පද්ධතිය මගින් යාවත්කාලීන කිරීමට අවශ්ය වනු ඇත:
- ආයුෂ්ගේ අනුගාමිකයින්ගේ හැඳුනුම්පත් ලබා ගන්න.
- නව ලිපි එක් කරන්න: ආයුෂ්ගේ පළ කිරීම එම හැඳුනුම්පත්වල අනුගාමිකයින්ගේ පුවත් සංග්රහ සංචිතයට එක් කරන්න.
- තනතුරු ඒවායේ අදාළත්වය සහ වේලාව අනුව ශ්රේණිගත කරන්න.
- ශ්රේණිගත කිරීමේ තනතුරේ හැඹිලිය යාවත්කාලීන කරන්න.
- නව පළ කිරීම් පළ කරන විට අනුගාමිකයින්ට දැනුම් දිය යුතුය.
සංරචක
පරිශීලක සම්බන්ධතා පවත්වාගෙන යනු ලබන්නේ වෙබ් සර්වර් මගිනි.
ඉහත දක්වා ඇති ක්රියා පටිපාටි යෙදුම් සේවාදායකය විසින් ක්රියාත්මක කරනු ලැබේ.
හැඹිලි සහ දත්ත සමුදාය:
- සම්බන්ධතා දත්ත සමුදාය පරිශීලක/අස්ථි
- සම්බන්ධතා දත්ත සමුදාය (පශ්චාත්)
- රූපය/වීඩියෝ ගුණාංගය: Aayush storge
- සම්බන්ධතා දත්ත සමුදා පාර-දත්ත
පුද්ගලාරෝපිත සේවා:
- ආහාර නිෂ්පාදනය
- පෝෂණය පිළිබඳ දැනුම්දීම
6. සවිස්තරාත්මක නිර්මාණය
ආහාර නිෂ්පාදනය
Fan-out කියවන්න බොළඳ ක්රියාත්මක කිරීම:
මෙම අලස ක්රියාත්මක කිරීමේ ගැටළු වලට ඇතුළත් වන්නේ:
- මිතුරන්/අනුගාමිකයින් විශාල සංඛ්යාවක් සිටින පරිශීලකයින් සැලකිය යුතු මන්දගාමිත්වයක් දකිනු ඇත, මන්ද අප විසින් පළ කිරීම් විශාල සංඛ්යාවක් වෙන්කර, ඒකාබද්ධ කිරීමට සහ ශ්රේණිගත කළ යුතු බැවිනි.
- පරිශීලකයෙකු ඔවුන්ගේ පිටුව පූරණය කරන විට, අපි කාලරේඛාව ගොඩනඟමු. මෙය මන්දගාමී විය හැකි අතර විශාල ප්රමාදයක් තිබිය හැකිය.
- සෑම තත්ව යාවත්කාලීනයක්ම සජීවී යාවත්කාලීන සඳහා සියලුම අනුගාමිකයින් සඳහා සංග්රහ යාවත්කාලීන කිරීම් ඇති කරයි. මෙය අපගේ Newsfeed Generation Service හි සැලකිය යුතු ප්රමාදයන් ඇති කළ හැක.
අපට කාලානුක්රමය පූර්ව ජනනය කර කාර්යක්ෂමතාව වැඩි කිරීම සඳහා මතකයේ සුරැකිය හැක.
නොබැඳි නිෂ්පාදනය (Fan-out ලිවීම)
පරිශීලකයින්ගේ ප්රවෘත්ති සංග්රහ නිරන්තරයෙන් නිර්මාණය කර ගබඩා කරන කැපවූ සේවාදායකයන් අපට මතකයේ තිබිය හැකිය. පරිශීලකයෙකුට අවශ්ය විටෙක අපට පුවත් සංග්රහය පෙර-ජනනය කළ, සුරකින ලද ස්ථානයෙන් ලබා දිය හැක.
පරිශීලකයාගේ සංග්රහය මතකයේ කොපමණ සංග්රහ අයිතම ප්රමාණයක් ගබඩා කළ යුතුද?
ඔබේ භාවිත හැසිරීම මත පදනම්ව අනුවර්තනය වන්න.
අපි සියලුම පරිශීලකයින් සඳහා ප්රවෘත්ති සංග්රහයක් සෑදිය යුතුද (සහ එය මතකයේ තබා ගන්න)?
- බොහෝ විට ලොග් නොවන පුද්ගලයින් සඳහා.
- LRU මත පදනම් වූ හැඹිලිගත කිරීම සරල ප්රවේශයකි.
- වඩා හොඳ විසඳුමක් වන්නේ පරිශීලකයින් ලොග් වන්නේ කෙසේදැයි සොයා බැලීමයි. එය කවදාද? ඔබ කතා කරන්නේ කුමන සතියේ දින ගැනද?
ආහාර ප්රකාශනය
Fanout යනු ඔබගේ සියලු අනුගාමිකයින් වෙත පළ කිරීමක් යැවීමේ ක්රියාවලියයි.
රසික කියවීම (අදින්න)
ඔබ ප්රවෘත්ති සංග්රහයක් ඉල්ලා සිටින විට, පද්ධතියට කියවීමේ ඉල්ලීමක් ලැබේ. Fanout කියවීම ඔබේ සියලු අනුගාමිකයින්ට ඔවුන්ගේ අන්තර්ගතය කියවීමට කියමින් කියවීමේ ඉල්ලීමක් යවයි.
කිහිප දෙනකුගේ හොඳ:
- ලිවීමේ ක්රියා පටිපාටිය මිළ අඩුයි.
- දත්ත කියවීමේදී, විවිධ එකතු කිරීමේ ඇල්ගොරිතම භාවිතා කිරීම පහසුය.
අවාසි:
- බොහෝ අනුගාමිකයින් සිටින පුද්ගලයෙකුට, කියවීමේ මෙහෙයුම තරමක් මිල අධිකය.
- පරිශීලකයින් එය ඇද ගන්නා තෙක් නැවුම් දත්ත නොදකිනු ඇත.
- අපි නිතිපතාම මෑත පළ කිරීම් ලබා ගැනීමට අඳින විට, නිසි ඇදීමේ කේඩරය සොයා ගැනීමට අපහසු වන අතර, බොහෝ ඇදීමේ ඉල්ලීම් සම්පත් නාස්ති කරමින් හිස් පිළිතුරක් ලබා දෙනු ඇත.
රසික ලිවීම (තල්ලු)
ඔබ නව තනතුරක් යවන විට පද්ධතියට ලිවීමේ ඉල්ලීමක් කරනු ලැබේ. Fanout write භාවිතයෙන් ඔවුන්ගේ newsfeed යාවත්කාලීන කිරීම සඳහා ලිවීමේ ඉල්ලීම ඔබගේ සියලුම අනුගාමිකයින්ට යවනු ලැබේ.
සඳහා
- කියවීමේ ක්රියාවලිය මිළ අඩුයි.
සමඟ
- මිලියන ගණනක් අනුගාමිකයින් සිටින පරිශීලකයෙකු සඳහා, ලියන්න ක්රියා පටිපාටිය මිල අධිකයි.
සංග්රහයේ තරාතිරම
සංග්රහයන් කාලානුක්රමිකව ඇණවුම් කරනවා වෙනුවට, අද ශ්රේණිගත කිරීමේ ඇල්ගොරිතම ඊට අමතරව වැඩි අදාළත්වයක් ඇති අයිතමවලට ප්රමුඛත්වය දී ඇති බව සහතික කිරීමට උත්සාහ කරයි.
- කැමති, අදහස්, සහ කොටස් ගණන, ලිපියේ ඡායාරූප හෝ වීඩියෝ තිබේ නම් අයිතමය අවසන් වරට යාවත්කාලීන කළ කාලය සහ යනාදිය වැනි සංග්රහ අයිතමයක අදාළත්වය තීරණය කිරීමට ඔබට උපකාර කළ හැකි සාධක තෝරන්න.
- ලක්ෂණ මත පදනම්ව ලකුණු ගණනය කරන්න.
- තනතුරු ශ්රේණිගත කිරීමට ලකුණු භාවිතා කරන්න.
අපගේ ශ්රේණිගත කිරීමේ ක්රමය කෙතරම් ඵලදායි දැයි බැලීමට පරිශීලක රඳවා තබා ගැනීම, දැන්වීම් ආදායම සහ යනාදී KPIs පිහිටුවන්න.
නිගමනය
ඉන්ස්ටග්රෑම් හෝ එහි මව් ව්යාපාරය වන ෆේස්බුක් දැවැන්ත සංස්ථාවක් වුවද, එයට වඩා හොඳ අවබෝධයක් ඇත පද්ධති නිර්මාණය.
Instagram සංග්රහයේ ඉහළ මට්ටමේ සාරාංශයක් ඔබට ලබා දීමට මම මගේ උපරිමයෙන් උත්සාහ කළෙමි.
එය ප්රයෝජනවත් වූ අතර ඔබ එය හොඳින් භාවිතා කරනු ඇතැයි මම බලාපොරොත්තු වෙමි.
ඔබමයි