د دې کار کولو لپاره ، موږ اړتیا لرو په یو ډول دا زیرمه اداره کړو ، موږ اړتیا لرو په دې کې عکسونه بیا تنظیم کړو ، او داسې نور. دا هم یو ډیر ابتدايي بهیر دی.
نګینکس په ساده ډول د هرې غوښتنې لپاره RAMDisk access.log ته لیکي ، په کوم کې چې دا د عکس لاره په ګوته کوي چې دا مهال یې خدمت کړی دی (نسباتي لاره ، البته) ، او کوم تقسیم چې دا خدمت شوی و. هغوی. دا ممکن "عکس 1" ووایی او بیا یا بفر، یا ګرم کیچ، یا سړه کیچ، یا پراکسي.
تر ټولو عام انتخاب Round Robin دی. یا دا په ناڅاپي ډول ترسره کوئ؟
دا په ښکاره ډول یو شمیر زیانونه لري ځکه چې موږ به په داسې حالت کې کیچ په خورا غیر موثر ډول وکاروو. غوښتنې به په ځینو تصادفي ماشینونو کې ځای په ځای شي: دلته دا زیرمه شوې ، مګر په راتلونکي کې دا نور شتون نلري. او که دا ټول کار وکړي، دا به خورا بد وي. حتی په کلستر کې د لږ شمیر ماشینونو سره.
هغه. څه باید وکړو؟ موږ باید په یو ډول د کیچ مؤثره کار واخلو، ورته غوښتنه په ورته سرور کې بار بار ځای پر ځای کړو، مګر د بیا ځای پرځای کولو په وړاندې مقاومت وکړو. او داسې حل شتون لري، دا دومره پیچلې نه ده. دا د دوامداره هشنګ په نوم یادیږي.
دا د عکسونو بیرته راستنیدو اندیښنه لري. دلته هرڅه خورا روښانه او څرګند دي. زه فکر کوم چې ما امریکا نه ده موندلې، نږدې هر CDN دا کار کوي.
او، ډیری احتمال، یو پیچلي اوریدونکی شاید پوښتنه ولري: ولې یوازې هر څه CDN ته نه بدلوي؟ دا به ورته وي؛ ټول عصري CDN کولی شي دا کار وکړي. او یو شمیر لاملونه شتون لري.
لومړی عکسونه دي.
دا زموږ د زیربنا یو له مهمو ټکو څخه دی، او موږ د امکان تر حده ډیر کنټرول ته اړتیا لرو. که دا د دریمې ډلې پلورونکي څخه یو ډول حل وي ، او تاسو پدې باندې هیڅ ځواک نلرئ ، نو دا به ستاسو لپاره خورا ستونزمن وي چې ورسره ژوند وکړئ کله چې تاسو لوی ډیټاسیټ ولرئ ، او کله چې تاسو خورا لوی جریان ولرئ. د کاروونکي غوښتنې.
اجازه راکړئ تاسو ته یو مثال درکړم. اوس، زموږ د زیربنا سره، موږ کولی شو، د بیلګې په توګه، د ځینو ستونزو یا د ځمکې لاندې ټکانونو په صورت کې، ماشین ته لاړ شو او هلته په نسبي توګه خبرې وکړو. موږ کولی شو د ځینې میټریکونو ټولګه اضافه کړو چې موږ ورته اړتیا لرو، موږ کولی شو یو څه تجربه کړو، وګورو چې دا څنګه په ګرافونو اغیزه کوي، او داسې نور. اوس د دې کیچنګ کلستر په اړه ډیری احصایې راټولیږي. او موږ وخت په وخت دې ته ګورو او د ځینې بې نظمیو په سپړلو کې اوږد وخت تیروو. که دا د CDN اړخ کې و، نو کنټرول به یې خورا ستونزمن وي. یا، د مثال په توګه، که یو ډول حادثه رامنځته شي، موږ پوهیږو چې څه پیښ شوي، موږ پوهیږو چې څنګه ورسره ژوند وکړو او څنګه یې له منځه یوسو. دا لومړۍ پایله ده.
دویمه پایله هم تاریخي ده، ځکه چې سیسټم د اوږدې مودې لپاره وده کوي، او په مختلفو مرحلو کې ډیری مختلف سوداګریزې اړتیاوې وې، او دوی تل د CDN مفهوم سره سمون نلري.
او هغه ټکی چې د تیر څخه تعقیب کیږي
دا ځکه چې د عکس په کیچونو کې موږ ډیری ځانګړي منطق لرو ، کوم چې تل د غوښتنې سره اضافه کیدی نشي. دا امکان نلري چې کوم CDN به ستاسو په غوښتنه تاسو ته ځینې دودیز شیان اضافه کړي. د مثال په توګه، د URLs کوډ کول که تاسو نه غواړئ چې پیرودونکي د یو څه بدلولو توان ولري. ایا تاسو غواړئ په سرور کې URL بدل کړئ او کوډ یې کړئ، او بیا دلته ځینې متحرک پیرامیټونه واستوئ.
او ستاسو په قضیه کې، که تاسو کوم ځانګړي سوداګریزې اړتیاوې لرئ، نو تاسو کولی شئ په اسانۍ سره هغه څه پلي کړئ چې ما تاسو ته ښودلي. او دا به د ورته بار پروفایل سره سم کار وکړي.
مګر که تاسو یو ډول عمومي حل لرئ، او دنده خورا مشخص نه وي، تاسو کولی شئ په بشپړ ډول په خوندي ډول CDN واخلئ. یا که وخت او سرچینې تاسو ته د کنټرول په پرتله خورا مهم دي.
او عصري CDNs نږدې هرڅه لري چې ما تاسو ته اوس په اړه وویل. د جمع یا منفي ځینې ځانګړتیاو استثنا سره.
د کیشینګ سرورونه اضافه شوي، د فعالیت ستونزې لرې شوې. هر څه سم دي. ډیټاسیټ وده کوي. تر 2013 پورې، موږ شاوخوا 80 سرورونه د ذخیره کولو سره وصل درلودل، او په هر DC کې شاوخوا 40 کیشینګ. دا په هر DC کې د 560 ټیرابایټ ډیټا دی، i.e. په مجموع کې د یو پیټابایټ په اړه.
او د ډیټاسیټ وده سره ، عملیاتي لګښتونه د پام وړ لوړیدل پیل کړل. دا څه مانا؟
پدې ډیاګرام کې چې رسم شوی - د SAN سره ، د ماشینونو او کیچونو سره چې ورسره وصل دی - د ناکامۍ ډیری ټکي شتون لري. که موږ دمخه دمخه د کیچ کولو سرورونو ناکامۍ سره معامله کړې وي ، هرڅه لږ یا لږ د وړاندوینې وړ او د پوهیدو وړ و ، مګر د ذخیره کولو اړخ کې هرڅه خورا خراب وو.
دا یو پیچلی څو اجزاو سیسټم دی، او د سیسټم انجنیران کولی شي سخت وخت ولري چې ورسره کار وکړي.
او وروستی، خورا مهم ټکی. که چیرې په دې دریو ټکو کې ناکامي رامینځته شي ، نو موږ د کارونکي ډیټا له لاسه ورکولو غیر صفر چانس لرو ځکه چې د فایل سیسټم ممکن خراب شي.
راځئ چې ووایو زموږ د فایل سیسټم مات شوی. لومړی، د هغې بیا رغونه ډیر وخت نیسي - دا کولی شي د ډیرو معلوماتو سره یوه اونۍ وخت ونیسي. او دوهم ، په پای کې به موږ ډیری احتمال د نه پوهیدو وړ فایلونو سره پای ته ورسوو چې اړتیا به یې په یو ډول د کارونکي عکسونو سره یوځای شي. او موږ د معلوماتو له لاسه ورکولو خطر لرو. خطر خورا لوړ دی. او هرڅومره چې دا ډول حالتونه پیښیږي ، او په دې ټول سلسله کې ډیرې ستونزې رامینځته کیږي ، نو دا خطر خورا لوړ دی.
په دې اړه باید یو څه وشي. او موږ پریکړه وکړه چې موږ یوازې د معلوماتو بیک اپ ته اړتیا لرو. دا واقعیا یو څرګند حل او ښه دی. موږ څه کړي دي؟
دا هغه څه دي چې زموږ سرور داسې ښکاري کله چې دا دمخه د ذخیره کولو سره وصل شوی و. دا یوه اصلي برخه ده ، دا یوازې د بلاک وسیله ده چې واقعیا د آپټیکس له لارې د ریموټ ذخیره کولو لپاره ماونټ نمایش کوي.
موږ یوازې دویمه برخه اضافه کړه.
موږ د دې تر څنګ دوهم ذخیره کیښوده (له نېکه مرغه، دا د پیسو په شرایطو کې دومره ګران نه دی)، او دا یې د بیک اپ برخې په نوم یاد کړ. دا د آپټیکس له لارې هم وصل دی او په ورته ماشین کې موقعیت لري. مګر موږ اړتیا لرو چې یو څه د دوی ترمینځ ډاټا همغږي کړو.
هغه ډېره بوخته نه ده. موږ پوهیږو چې موږ کافي ریکارډونه نلرو. کتار په MySQL کې یوازې یو میز دی چې پکې "تاسو د دې عکس بیک اپ کولو ته اړتیا لرئ" په څیر لیکې لیکل شوي. د هر ډول بدلون یا اپلوډ سره، موږ د غیر متناسب یا یوازې یو ډول شالید کارکونکي په کارولو سره د اصلي برخې څخه بیک اپ ته کاپي کوو.
او په دې توګه موږ تل دوه ثابتې برخې لرو. حتی که د دې سیسټم یوه برخه ناکامه شي، موږ کولی شو تل د بیک اپ سره اصلي برخه بدل کړو، او هرڅه به کار ته دوام ورکړي.
مګر د دې له امله ، د لوستلو بار خورا ډیریږي ، ځکه چې ... د پیرودونکو سربیره چې د اصلي برخې څخه لوستل کیږي، ځکه چې دوی لومړی هلته عکس ګوري (دا هلته وروستی دی)، او بیا یې په بیک اپ کې وګورئ، که دوی دا ونه موندل (مګر NGINX یوازې دا کوي) زموږ سیسټم هم یو پلس بیک اپ دی چې اوس د اصلي برخې څخه لوستل کیږي. دا نده چې دا یو خنډ و ، مګر زه نه غواړم بار ډیر کړم ، په لازمي ډول ، د ورته په څیر.
او موږ دریم ډیسک اضافه کړ، کوم چې یو کوچنی SSD دی، او دا یو بفر نومیږي.
دا اوس څنګه کار کوي.
کارونکي بفر ته عکس اپلوډ کوي ، بیا یوه پیښه په کتار کې اچول کیږي چې دا په ګوته کوي چې دا باید په دوه برخو کې کاپي شي. دا کاپي شوی، او عکس د یو څه وخت لپاره په بفر کې ژوند کوي (ووایه، یوه ورځ)، او یوازې بیا له هغه ځایه پاکیږي. دا د کاروونکي تجربه خورا ښه کوي، ځکه چې کاروونکي عکس اپلوډ کوي، د یوې قاعدې په توګه، غوښتنې سمدلاسه تعقیب پیل کوي، یا هغه پخپله پاڼه تازه کړه او تازه یې کړه. مګر دا ټول په هغه غوښتنلیک پورې اړه لري چې اپلوډ کوي.
یا، د بیلګې په توګه، نور خلک چې هغه یې خپل ځان ښودل پیل کړل سمدلاسه د دې عکس وروسته غوښتنې واستول. دا لا تر اوسه په کیچ کې نه دی؛ لومړۍ غوښتنه په چټکۍ سره واقع کیږي. اساسا د عکس کیچ څخه ورته ورته. ورو ذخیره په دې کې دخیل نه ده. او کله چې یوه ورځ وروسته دا پاک شي ، دا دمخه یا زموږ د کیشینګ پرت کې زیرمه شوی ، یا ، ډیری احتمال ، هیڅوک ورته اړتیا نلري. هغوی. دلته د کارونکي تجربه د داسې ساده لاسوهنو له امله خورا ښه وده کړې.
ښه، او تر ټولو مهم: موږ د معلوماتو له لاسه ورکول بند کړل.
راځئ یوازې ووایو چې موږ ودریږو په بالقوه توګه ډاټا له لاسه ورکړئ، ځکه چې موږ واقعیا له لاسه نه ورکوو. مګر خطر شتون درلود. موږ ګورو چې دا حل البته ښه دی، مګر دا د دې پر ځای چې په بشپړه توګه حل شي، د ستونزې نښې نښانې له منځه یوسي. او ځینې ستونزې دلته پاتې دي.
لومړی، دا پخپله د فزیکي کوربه په بڼه کې د ناکامۍ نقطه ده چې دا ټول ماشینونه پرمخ ځي؛ هغه نه دی تللی.
دوهم، د SANs سره لاهم ستونزې شتون لري، د دوی سخت ساتنه او نور پاتې دي. دا نه و چې دا یو مهم فکتور و، مګر ما غوښتل هڅه وکړم چې یو څه پرته له دې ژوند وکړم.
هیڅ ستونزه! د سیسټم انجنیر ممکن حتی د شپې ویښ نشي، هغه به تر سهار پورې انتظار وکړي، هیڅ بد به نه وي.
که حتی که دا ماشین ناکام شي، کتار له ترتیب څخه بهر وي، هیڅ ستونزه هم شتون نلري، لاګ به په ساده ډول لومړی په ژوندی ماشین کې راټول شي، بیا به په کتار کې اضافه شي، او بیا به موټر ته لاړ شي. یو څه وخت وروسته عملیات پیل کړئ.
دلته د کیشینګ پرت CPU د دې په پرتله خورا ارزانه ښکاري که چیرې موږ په دوامداره توګه دا اندازې په هر ذخیره کې له سره رامینځته کړو. راځئ چې ووایو چې موږ یو نوی اضافه کول غواړو، دا به یوه میاشت وخت ونیسي - هرچیرې یو سکریپټ چلوي چې دا ټول په ښه توګه ترسره کړي، پرته له دې چې کلستر ویجاړ کړي. هغوی. که تاسو اوس د غوره کولو فرصت لرئ، نو دا به غوره وي چې د امکان تر حده لږ فزیکي اندازې جوړ کړئ، مګر دا چې لږترلږه یو څه ویش وي، ووایئ، درې. او نور هرڅه په ساده ډول د چمتو شوي ماډلونو په کارولو سره په الوتنه کې تنظیم کیدی شي. دا ټول اوس خورا اسانه او د لاسرسي وړ دي.
او زیاتیدونکي غیر متناسب بیک اپ ښه دی.
لکه څنګه چې زموږ تمرین ښودلی، دا سکیم د بدل شوي فایلونو ځنډول شوي کاپي سره ښه کار کوي.
وروستی ټکی هم څرګند دی. که ستاسو زیربنا اوس داسې ستونزې نه لري، مګر یو څه شتون لري چې ماتولی شي، دا به خامخا مات شي کله چې یو څه نور شي. له همدې امله، دا غوره ده چې د دې په اړه مخکې له مخکې فکر وکړئ او د دې سره ستونزې تجربه نه کړئ. دا ټول ما غوښتل ووایم.