په تیرو دوه لسیزو کې د لوی کچې آنلاین غوښتنلیکونو اوږده لاره موندلې ده. دې نوښتونو زموږ د سافټویر پراختیا په اړه نظرونه بدل کړي. فیسبوک، انسټاګرام، او ټویټر، د بیلګې په توګه، ټول د توزیع وړ پلیټ فارمونه دي.
دا سیسټمونه باید د ترافیک او ډیټا لوی مقدار اداره کولو لپاره رامینځته شي ځکه چې ملیاردونه خلک په ورته وخت کې په ټوله نړۍ کې کاروي. دا کله دی د سیسټم ډیزاین انځور ته ننوځي.
د یو سیسټم لپاره د معمارۍ، انٹرفیسونو او ډیټا رامینځته کولو پروسه چې ځینې معیارونه پوره کوي د سیسټم ډیزاین په نوم پیژندل کیږي. د همغږي او اغیزمن سیسټمونو له لارې، د سیسټم ډیزاین ستاسو د سوداګرۍ یا سازمان غوښتنې پوره کوي.
یوځل چې ستاسو شرکت یا سازمان خپل معیارونه وټاکي، تاسو کولی شئ دوی د فزیکي سیسټم ډیزاین کې شامل کړئ چې ستاسو د پیرودونکو غوښتنې پوره کوي.
که تاسو غوره کوئ چې د غوره پرمختیا، سوداګریزو حلونو، یا د دوو ترکیبونو سره لاړ شئ، تاسو څنګه خپل سیسټم ډیزاین کوئ دا به معلومه کړي چې تاسو یې څنګه جوړ کړئ.
موږ به په دې پوسټ کې د ټویټر مهال ویش سیسټم ډیزاین ته مفصل نظر واخلو، د ټیوټوریل سره بشپړ شو. راځه چي پیل یی کړو.
لومړی ګام: د کارونې قضیه او محدودیتونه
قضیه وکاروئ
- یو کارن یو ټویټ اپلوډ کوي.
- خدمت د ټویټونو پیروانو ته پش خبرتیاوې او بریښنالیکونه لیږي.
- د کارونکي مهال ویش لیدل کیږي (د کارونکي فعالیت)
- کارن د کور مهال ویش ته ګوري (د هغه خلکو فعالیت چې کارن یې تعقیبوي)
- کلیدي کلمې د کارونکي لخوا پلټل کیږي.
- خدمت واقعیا د لاسرسي وړ دی.
له دائرې بهر
- ټویټونه د دې خدمت په کارولو سره ټویټر فایر هوز او نورو جریانونو ته لیږل کیږي.
- خدمت د کارونکي لید لید تنظیماتو پراساس ټویټونه لرې کوي.
- که چیرې کاروونکي هغه کس تعقیب نه کړي چې ځواب یې ورکړی وي، ځواب پټ کړئ.
- د 'ریټویټس پټول' اختیار وګورئ.
- کړي.
محدودیتونه او انګیرنې
د دولت انګیرنې
- ترافیک په مساوي ډول نه ویشل کیږي.
- دا باید ساده وي چې یو ټویټ واستوئ.
- پرته لدې چې تاسو ملیونونه پیروان ولرئ ، ستاسو ټولو پیروانو ته د ټویټ لیږل باید ګړندي وي.
- 100 میلیونه فعال کاروونکي شتون لري.
- هره میاشت 15 ملیارده ټویټونه یا هره ورځ 500 ملیون ټویټونه
- هر ټویټ په اوسط ډول د 10 تحویلۍ مینه وال لري.
- هره ورځ، فینوټ 5 ملیارد ټویټونه وړاندې کوي.
- Fanout هره میاشت 150 ملیارد ټویټونه وړاندې کوي.
- د 250 ملیارد میاشتنۍ لوستلو غوښتنې
- 10 ملیارد میاشتنۍ لټونونه
مهال ویش
- مهال ویش باید د تګ راتګ اسانه وي.
- ټویټر د لیکلو په پرتله د لوستلو په اړه ډیر دی.
- د چټک ټویټ لوستلو لپاره غوره کړئ
- د ټویټ مصرف د وخت مصرف دی.
د لټون
- د لټون پروسه باید چټکه وي.
- دا د لټون لپاره وخت نیسي.
کارول محاسبه کړئ
د هر ټویټ اندازه:
- 8 بایټ ټویټ id
- 32 بایټس د کارونکي id
- د متن 140 بایټ
- رسنۍ - په اوسط ډول 10 KB
- ټولټال: ~10 KB
هره میاشت، د تازه ټویټ منځپانګې 150 TB تولید کیږي.
- * هره ورځ 500 ملیون ټویټونه * په میاشت کې 30 ورځې * په هر ټویټ کې 10 KB
- په دریو کلونو کې، د تازه ټویټ منځپانګې 5.4 PB شتون لري.
په هره ثانیه کې د 100,000 لوستلو غوښتنې شتون لري.
- * (په هره ثانیه کې 400 غوښتنې / په میاشت کې 1 ملیارد غوښتنې) هره میاشت 250 ملیارد لوستل غوښتنې
په هره ثانیه کې 6,000 ټویټونه شتون لري.
- * (په هره ثانیه کې 400 غوښتنې / په میاشت کې 1 ملیارد غوښتنې) هره میاشت 15 ملیارد ټویټونه
په fanout کې، په هره ثانیه کې 60 زره ټویټونه لیږل کیږي.
- فینوټ هره میاشت 150 ملیارد ټویټونه وړاندې کوي * (په هره ثانیه کې 400 غوښتنې / په میاشت کې 1 ملیارد غوښتنې).
په هره ثانیه کې د معلوماتو لپاره 4,000 غوښتنې
- * (په هره ثانیه کې 400 غوښتنې / په میاشت کې 1 ملیارد غوښتنې) هره میاشت 10 ملیارد لټونونه
ځینې ګټورې تبادلې
- هره میاشت 2.5 ملیون ثانیې تیریږي.
- په هره ثانیه کې د 2.5 غوښتنې سره هره میاشت 1 ملیون غوښتنې
- په میاشت کې 100 ملیون غوښتنې x 40 په هره ثانیه کې غوښتنې
- په میاشت کې 1 ملیارد غوښتنې = په هره ثانیه کې 400 غوښتنې
2 ګام: د لوړې کچې ډیاګرام
دریم ګام: د اصلي برخو توضیح کول
موږ کولی شو د کارونکي خپل ټویټونه خوندي کړو ترڅو د کارونکي مهال ویش (د کارونکي فعالیت) په اړوند ډیټابیس کې ډک کړو که چیرې دوی ټویټ وسپاري. د ټویټونو وړاندې کول او د کور مهال ویش رامینځته کول خورا ستونزمن دي (د هغو اشخاصو فعالیت چې کارونکي یې تعقیبوي).
یو عادي ارتباطي ډیټابیس به ټولو پیروانو ته د ټویټونو په ورکولو سره ډیریږي (په هره ثانیه کې 60 زره ټویټونه وړاندې کیږي). موږ به شاید د ګړندي لیکلو ډیټا ذخیره کولو سره لاړ شو لکه د NoSQL ډیټابیس یا حافظې کیچ.
له حافظې څخه په ترتیب سره د 1 MB لوستل شاوخوا 250 مایکرو ثانیې وخت نیسي ، مګر د SSD څخه لوستل 4 ځله وخت نیسي ، او له ډیسک څخه لوستل 80 ځله وخت نیسي.
د آبجیکٹ پلورنځی د معلوماتو ذخیره کولو لپاره کارول کیدی شي لکه عکسونه او ویډیوګانې.
- د ویب سرور، چې د ریورس پراکسي په توګه کار کوي، د پیرودونکي څخه یو ټویټ ترلاسه کوي.
- غوښتنه د ویب سرور لخوا د رائټ API سرور ته لیږل کیږي.
- د رائټ API ټویټ د کارونکي مهال ویش کې د SQL ډیټابیس ته خوندي کوي.
د فین آوټ خدمت د رائټ API لخوا اړیکه نیول کیږي، او دا لاندې دندې ترسره کوي.
- د کارونکي ګراف خدمت پوښتنې کولو سره د حافظې کیچ کې د کارونکي پیروان ومومئ.
- د حافظې په کیچ کې ، ټویټ د کارونکي پیروانو کور مهال ویش کې خوندي شوی.
- 1,000 پیروان = 1,000 لټون او داخلول = O(n) عملیات.
- ټویټ د چټک لټون لپاره د لټون شاخص خدمت کې خوندي شوی.
- د آبجیکٹ سټور د میډیا ذخیره کولو لپاره کارول کیږي.
- د خبرتیا خدماتو له لارې پیروانو ته د فشار خبرتیاوې لیږي.
- په متناسب ډول د خبرتیاو لیږلو لپاره ، دا قطار کاروي.
موږ کولی شو د لاندې جوړښت سره د اصلي ریډیس لیست وکاروو که زموږ د حافظې کیچ ریډیس وي:
د کارونکي کور مهال ویش به د نوي ټویټ سره تازه شي، کوم چې به د حافظې کیچ کې زیرمه شي. موږ به لاندې عامه REST API وکاروو:
د کارونکي مهال ویش د کارونکي لخوا لیدل کیږي.
- ویب سرور د پیرودونکي څخه د کارونکي مهال ویش غوښتنه ترلاسه کوي.
- غوښتنه د ویب سرور لخوا د لوستلو API سرور ته لیږل کیږي.
- د لوستلو API د کارونکي مهال ویش لپاره د SQL ډیټابیس پوښتنې کوي.
REST API به د کور مهال ویش سره ورته کار وکړي، په استثنا سره چې ټول ټویټونه به د هغه خلکو په پرتله چې دوی یې تعقیبوي د کارونکي څخه سرچینه اخلي.
یو کارن د کلیدي کلمو لټون کوي:
- ویب سرور د پیرودونکي څخه د لټون غوښتنه ترلاسه کوي.
- غوښتنه د ویب سرور لخوا د لټون API سرور ته لیږل کیږي.
4 ګام: د ټویټر مهال ویش
د مهال ویش جوړول یو ستونزمن کار دی. د مهال ویش تولید کولو سرور چې ویب یا غوښتنلیک سرورونو سره اړیکه لري اړین دی.
هرکله چې یو کاروونکي لاسلیک کوي، د مهال ویش خدمت د پیروانو په میز کې د کاروونکو څخه نوي ټویټونه تعقیبوي او د کارونکي مهال ویش تازه یا تازه کوي.
موږ دلته هیڅ ډول درجه بندي سیسټم نه پلي کوو؛ پرځای یې، موږ ګومان کوو چې د کارونکي پیروانو څخه غوره 5 ټویټونه د وخت په اوږدو کې د جوړولو وخت په ترتیب کې وړاندې شوي. موږ کولی شو د 50-ټویټ ریفریش کټ آف وساتو. موږ لاهم د دې حد ته رسیدو وروسته د مهال ویش ریفریش یا جوړول بندوو تر هغه چې کارونکي پاڼه تازه کړي.
د لوړ ځنډ او فعالیت اندیښنې به د ژوندی کارونکي فیډ رامینځته کولو څخه راشي. پرځای یې، د آفلاین جریان رامینځته کول چې سمدستي وړاندې کیدی شي د فعالیت ښه کولو غوره لاره ده. وقف شوي مهال ویش سرورونه چل کړئ چې د غوښتنلیک سرور په منظم ډول پینګ کوي ترڅو فیډ ریفریش کړي د هغه وخت پراساس چې رامینځته شوی.
درجه بندي الګوریتم باید مهمې نښې په پام کې ونیسي او وزن چمتو کړي ترڅو تضمین کړي چې د کارونکي مهال ویش د یو یا ډیرو حسابونو څخه د موادو لخوا تسلط نلري چې دوی یې تعقیبوي.
په ډیر دقت سره، موږ کولی شو د هر فیډ توکي پورې اړوند ځانګړتیاوې وټاکو، لکه د لایکونو شمیر، نظرونه، شریکول، او د تازه کولو وخت. د دې معیارونو څخه هر یو باید د ټویټ درجه کولو لپاره وکارول شي، او بیا دا درجه باید په مهال ویش کې د ټویټونو ښودلو لپاره وکارول شي.
ایا موږ باید کاروونکو ته په دوامداره توګه خبرداری ورکړو کله چې د دوی د نیوز فیډ لپاره نوي مینځپانګې شتون ولري؟ کاروونکي کولی شي دا ګټور ومومي کله چې نوي معلومات شتون ولري خبرداری ورکړل شي. په ګرځنده وسیلو کې، په هرصورت، کله چې د معلوماتو کارول خورا ګران وي، دا کولی شي بینډ ویت ضایع کړي.
د پایلې په توګه، موږ کولی شو د موبایل وسیلو ته ډیټا فشار ورنکړو او پرځای یې کاروونکو ته اجازه ورکړو چې د نوي پوسټونو لپاره "د تازه کولو لپاره راوباسي".
5 ګام: د اندازې ډیزاین
یو احتمالي خنډ د فین آؤٹ خدمت دی. د ټویټر کارونکي چې ملیونونه پیروان لري باید څو دقیقې انتظار وکړي ترڅو د دوی ټویټونه پیل شي. دا ممکن ټویټ ته د ځوابونو سره د سیالۍ لامل شي ، کوم چې موږ کولی شو د خدمت په وخت کې د ټویټونو له بیا ترتیب کولو څخه مخنیوی وکړو.
موږ کولی شو د لوی شمیر پیروانو سره د خلکو لخوا د ټویټونو خپریدو مخه هم ونیسو. پرځای یې، موږ ممکن د لوړ تعقیب شوي اشخاصو څخه د ټویټونو لټون وکړو، د لټون پایلې د کارونکي د کور مهال ویش پایلو سره مدغم کړو، او بیا د خدمت په وخت کې ټویټونه بیا تنظیم کړو.
اضافي پرمختګونه پدې کې شامل دي:
- د هر کور مهال ویش لپاره د حافظې کیچ کې یوازې څو سوه ټویټونه وساتئ.
- د حافظې په کیچ کې، یوازې د فعال کاروونکو کور مهاله معلومات خوندي کیږي.
- موږ کولی شو د SQL ډیټابیس څخه کرونولوژي بیا جوړه کړو که چیرې یو کارن په تیرو 30 ورځو کې فعال نه و.
- د دې معلومولو لپاره چې کارن څوک دی، د کاروونکي ګراف خدمت وکاروئ.
- ټویټونه د SQL ډیټابیس څخه په ترلاسه کولو سره د حافظې کیچ ته اضافه کړئ.
- د Tweet Info Service یوازې د یوې میاشتې ارزښت لرونکي ټویټونه خوندي کولی شي.
- د کارن معلوماتو خدمت کې، یوازې فعال کاروونکي خوندي شوي.
- د ځنډ ټیټ ساتلو لپاره، د لټون کلستر به ډیری احتمال ته اړتیا ولري چې په حافظه کې ټویټونه وساتي.
پایله
که څه هم ټویټر یو لوی سازمان دی، دا یو ښه دی د سیسټم ډیزاین پوهه. ما خپله هڅه وکړه چې تاسو ته د ټویټر مهال ویش په اړه د لوړې کچې عمومي کتنه چمتو کړم.
زه هیله لرم چې تاسو له دې څخه ګټور معلومات ترلاسه کړي او کولی شي ښه ګټه پورته کړي.
یو ځواب ورکړئ ووځي