ورهايل ايپليڪيشنن جي بلڊنگ بلاڪ. صفر لڳ ڀڳ

ورهايل ايپليڪيشنن جي بلڊنگ بلاڪ. صفر لڳ ڀڳ

دنيا بيٺو ناهي. ترقي نئين ٽيڪنالاجي چئلينج پيدا ڪري ٿي. تبديلين جي ضرورتن جي مطابق، ڄاڻ سسٽم جي فن تعمير کي ترقي ڪرڻ گهرجي. اڄ اسان ايونٽ تي هلندڙ فن تعمير بابت ڳالهائينداسين، اتفاق، اتفاق، اسيئنڪروني، ۽ توهان ڪيئن آرام سان رهي سگهو ٿا انهن سڀني سان Erlang ۾.

تعارف

ڊزائين ڪيل سسٽم جي سائيز ۽ ان جي ضرورتن تي مدار رکندي، اسان، ڊولپرز، سسٽم ۾ معلومات جي تبادلي جو طريقو چونڊيو. اڪثر ڪيسن ۾، خدمتن جي رابطي کي منظم ڪرڻ لاء، هڪ ڪم ڪندڙ اختيار هڪ بروکر سان هڪ اسڪيم ٿي سگهي ٿو، مثال طور، RabbitMQ يا ڪافڪا جي بنياد تي. پر ڪڏهن ڪڏهن واقعن جي وهڪري، SLA ۽ سسٽم تي ڪنٽرول جي سطح اهڙي آهي ته تيار ڪيل پيغام اسان لاء مناسب ناهي. يقينا، توهان ٽرانسپورٽ پرت ۽ ڪلستر ٺهڻ جي ذميواري کڻڻ سان سسٽم کي ٿورو پيچيده ڪري سگهو ٿا، مثال طور ZeroMQ يا nanomsg استعمال ڪندي. پر جيڪڏهن سسٽم وٽ معياري Erlang ڪلستر جي ڪافي throughput ۽ صلاحيتون آهن، ته پوء هڪ اضافي ادارو متعارف ڪرائڻ جو مسئلو تفصيلي مطالعي ۽ اقتصادي جواز جي ضرورت آهي.

رد عمل واري ورهايل ايپليڪيشنن جو موضوع ڪافي وسيع آهي. آرٽيڪل جي فارميٽ ۾ رکڻ لاءِ، اڄ جي بحث جو موضوع صرف هڪجهڙائي وارو ماحول هوندو جيڪو Erlang/Elixir تي ٺهيل هوندو. Erlang/OTP ماحولياتي نظام توهان کي اجازت ڏئي ٿو ته هڪ رد عمل واري فن تعمير کي گهٽ ۾ گهٽ ڪوشش سان. پر ڪنهن به صورت ۾، اسان کي هڪ پيغام پرت جي ضرورت پوندي.

نظرياتي بنياد

ٺاھڻ جي شروعات ٿئي ٿي وضاحت جي مقصدن ۽ پابندين سان. بنيادي مقصد ترقيءَ جي راهه ۾ نه آهي. اسان کي هڪ محفوظ ۽ اسپيبلبل ٽول حاصل ڪرڻ جي ضرورت آهي جنهن جي بنياد تي اسان ٺاهي سگهون ٿا ۽، سڀ کان اهم، مختلف سطحن جي جديد ايپليڪيشنن کي ترقي ڪري سگهون ٿا: سنگل سرور ايپليڪيشنن کان شروع ٿيندڙ ننڍڙن سامعين جي خدمت ڪري، جيڪي بعد ۾ 50 تائين ڪلسٽرز ۾ ترقي ڪري سگهن ٿيون. -60 نوڊس، ڪلستر فيڊريشن سان ختم ٿيڻ. اهڙيء طرح، بنيادي مقصد ترقي جي قيمت کي گهٽائڻ ۽ حتمي نظام جي ملڪيت کي وڌائڻ سان منافعو وڌائڻ آهي.

اچو ته اسان کي نمايان ڪريون 4 بنيادي ضرورتن لاءِ فائنل سسٽم:

  • Сواقعن تي مبني.
    سسٽم هميشه واقعن جي وهڪري مان گذرڻ ۽ ضروري ڪارناما انجام ڏيڻ لاءِ تيار آهي؛
  • Мپيماني تي.
    انفرادي بلاڪ کي عمودي ۽ افقي طور تي ماپ ڪري سگهجي ٿو. سڄو نظام لامحدود افقي ترقي جي قابل هوندو؛
  • Оغلطي رواداري.
    سڀني سطحن ۽ سڀني خدمتن کي خودڪار طور تي ناڪامي کان بحال ڪرڻ جي قابل هجڻ گهرجي؛
  • Гجوابي وقت جي ضمانت.
    وقت قيمتي آهي ۽ صارفين کي تمام گهڻو انتظار نه ڪرڻ گهرجي.

"ننڍي انجڻ جيڪا ٿي سگهي ٿي" بابت پراڻي پراڻي ڪهاڻي ياد رکو؟ ڊزائين ڪيل سسٽم لاءِ ڪاميابيءَ سان پروٽوٽائپ اسٽيج مان نڪرڻ ۽ ترقي پسند ٿيڻ لاءِ، ان جو بنياد گهٽ ۾ گهٽ گهرجن کي پورو ڪرڻ گهرجي. SMOG.

هڪ وڌيڪ نقطو شامل ڪيو ويو آهي پيغام ڏيڻ لاءِ هڪ انفراسٽرڪچر اوزار ۽ سڀني خدمتن جو بنياد: پروگرامرز لاءِ استعمال ۾ آسان.

واقعن تي مبني

ھڪڙي ايپليڪيشن لاءِ ھڪڙي سرور کان ھڪڙي ڪلستر ڏانھن وڌڻ لاءِ، ان جي فن تعمير کي لوز ڪپلنگ جي مدد ڪرڻ گھرجي. هم وقت سازي ماڊل هن گهرج کي پورو ڪري ٿو. ان ۾، موڪليندڙ ۽ وصول ڪندڙ پيغام جي معلومات جي لوڊ جي باري ۾ خيال رکندا آهن ۽ سسٽم جي اندر ٽرانسميشن ۽ روٽنگ بابت پريشان نه ڪندا آهن.

اسڪاليبلٽي

اسڪاليبلٽي ۽ سسٽم جي ڪارڪردگي هڪ ٻئي جي اڳيان آهن. ايپليڪيشن جا حصا لازمي طور تي سڀني موجود وسيلن کي استعمال ڪرڻ جي قابل هوندا. وڌيڪ موثر طريقي سان اسان ظرفيت کي استعمال ڪري سگهون ٿا ۽ اسان جي پروسيسنگ طريقن کي وڌيڪ بهتر بڻائي سگهون ٿا، گهٽ پئسا اسان سامان تي خرچ ڪندا آهيون.

ھڪڙي ھڪڙي مشين اندر، Erlang ھڪڙو اعلي مقابلي واري ماحول پيدا ڪري ٿو. اتفاق ۽ متوازي جي وچ ۾ توازن قائم ڪري سگھجي ٿو Erlang VM وٽ موجود آپريٽنگ سسٽم جي سلسلي جو تعداد ۽ شيڊولرز جو تعداد جيڪي انهن سلسلي کي استعمال ڪن ٿا.
Erlang پروسيس رياست کي حصيداري نٿا ڪن ۽ غير بلاڪنگ موڊ ۾ ڪم ڪن ٿا. هي روايتي بلاڪنگ جي بنياد تي ايپليڪيشنن جي ڀيٽ ۾ نسبتا گهٽ ويڪرائي ۽ اعلي throughput مهيا ڪري ٿو. Erlang جو شيڊولر CPU ۽ IO جي منصفانه مختص کي يقيني بڻائي ٿو، ۽ بلاڪ جي غير موجودگي ايپليڪيشن کي جواب ڏيڻ جي اجازت ڏئي ٿي جيتوڻيڪ چوٽي لوڊ يا ناڪامي دوران.

ڪلستر سطح تي، نيڪال جو مسئلو پڻ موجود آهي. اهو ضروري آهي ته ڪلستر ۾ سڀئي مشينون هڪجهڙائي سان لوڊ ٿيل آهن ۽ نيٽ ورڪ اوورلوڊ نه آهي. اچو ته هڪ صورتحال جو تصور ڪريون: صارف ٽرئفڪ ايندڙ ايندڙ بيلنسرز (haproxy، nginx، وغيره) تي لينڊ ڪندو آهي، اهي پروسيسنگ درخواستن کي ورهائيندا آهن جيترو ممڪن طور تي دستياب پس منظر جي سيٽ جي وچ ۾. ايپليڪيشن انفراسٽرڪچر جي اندر، گهربل انٽرفيس کي لاڳو ڪرڻ واري خدمت صرف آخري ميل آهي ۽ ابتدائي درخواست جي جواب ڏيڻ لاء ٻين خدمتن جي هڪ انگ جي درخواست ڪرڻ جي ضرورت پوندي. اندروني درخواستن کي پڻ روٽنگ ۽ توازن جي ضرورت آهي.
مؤثر طريقي سان ڊيٽا جي وهڪري کي منظم ڪرڻ لاء، پيغام ڏيڻ لازمي آهي ڊولپرز کي هڪ انٽرفيس سان گڏ مهيا ڪرڻ لاء روٽنگ ۽ لوڊ بيلنس کي منظم ڪرڻ لاء. انهي جي مهرباني، ڊولپرز قابل ٿي سگهندا، مائڪرو سروسز جي نمونن کي استعمال ڪندي (مجموعي، پراکسي، زنجير، شاخ، وغيره)، ٻنهي معياري مسئلن کي حل ڪرڻ لاء ۽ جيڪي گهٽ ۾ گهٽ پيدا ٿين ٿا.

ڪاروباري نقطي نظر کان، اسڪاليبلٽي خطري جي انتظام جي اوزار مان هڪ آهي. بنيادي شيء اها آهي ته ڪسٽمر جي درخواستن کي پورو ڪرڻ لاء بهترين طور تي سامان استعمال ڪندي:

  • جڏهن ترقي جي نتيجي ۾ سامان جي طاقت وڌائي ٿي. اهو نامڪمل سافٽ ويئر جي ڪري بيڪار نه ٿيندو. Erlang عمدي طور تي ماپ ڪري ٿو ۽ هميشه سڀني سي پي يو ڪور ۽ دستياب ياداشت کي استعمال ڪرڻ جي قابل هوندو.
  • بادل جي ماحول ۾، اسان سامان جي مقدار کي منظم ڪري سگھون ٿا موجوده يا اڳڪٿي ٿيل لوڊ ۽ ضمانت SLA جي بنياد تي.

غلطي رواداري

اچو ته ٻن محورين تي غور ڪريون: ”ناڪاميون ناقابل قبول آهن“ ۽ ”هميشه ناڪاميون هونديون. ڪاروبار لاءِ، سافٽ ويئر جي ناڪامي جو مطلب آهي پئسو وڃائڻ، ۽ ڇا خراب آهي، شهرت جو نقصان. ممڪن نقصانن جي وچ ۾ توازن ۽ غلطي برداشت ڪندڙ سافٽ ويئر ٺاهڻ جي قيمت، هڪ سمجھوتو اڪثر ڪري سگهجي ٿو.

مختصر مدت ۾، هڪ فن تعمير جنهن ۾ غلطي رواداري شامل آهي، پئسا بچائي ٿو آف شيلف ڪلسترنگ حل خريد ڪرڻ تي. اهي قيمتي آهن ۽ انهن ۾ ڪيڙا پڻ آهن.
ڊگهي مدت ۾، هڪ غلطي برداشت ڪندڙ فن تعمير ترقي جي سڀني مرحلن تي ڪيترائي ڀيرا پاڻ لاء ادا ڪري ٿو.
ڪوڊ بيس جي اندر پيغام رسائي توهان کي تفصيل سان ڪم ڪرڻ جي اجازت ڏئي ٿي سسٽم اندر اجزاء جي رابطي کي ترقي جي مرحلي ۾. هي ناڪامين جو جواب ڏيڻ ۽ انتظام ڪرڻ جي ڪم کي آسان بڻائي ٿو، ڇاڪاڻ ته سڀ نازڪ جزا ناڪامي کي سنڀاليندا آهن، ۽ نتيجو وارو نظام ڄاڻي ٿو ته ڪيئن خودڪار طريقي سان ناڪام ٿيڻ کان پوء عام طور تي معمول تي موٽڻ.

جوابداري

ناڪامين جي باوجود، ايپليڪيشن کي درخواستن جو جواب ڏيڻ ۽ SLA سان ملڻ گهرجي. حقيقت اها آهي ته ماڻهو انتظار ڪرڻ نٿا چاهين، تنهنڪري ڪاروبار لازمي طور تي ترتيب ڏيڻ گهرجن. وڌيڪ ۽ وڌيڪ ايپليڪيشنن جي توقع ڪئي وئي آهي ته انتهائي جوابدار هوندا.
جوابي ايپليڪيشنون ويجهي حقيقي وقت ۾ ڪم ڪن ٿيون. Erlang VM نرم ريئل ٽائيم موڊ ۾ هلندي آهي. ڪجھ علائقن لاءِ، جيئن اسٽاڪ واپار، دوائون، ۽ صنعتي سامان جو ڪنٽرول، سخت ريئل ٽائيم موڊ اھم آھي.
جوابي نظام UX کي بهتر بڻائي ٿو ۽ ڪاروبار کي فائدو ڏئي ٿو.

شروعاتي تتري

جڏهن هن آرٽيڪل جي منصوبابندي ڪري رهيو آهيان، مون کي هڪ پيغام ڏيڻ وارو بروکر ٺاهڻ ۽ ان جي بنياد تي پيچيده سسٽم ٺاهڻ جو منهنجو تجربو حصيداري ڪرڻ چاهيندو هو. پر نظرياتي ۽ motivational حصو ڪافي وسيع ٿي نڪتو.
مضمون جي ٻئي حصي ۾، آئون ايڪسچينج پوائنٽس، پيغام جي نمونن ۽ انهن جي ايپليڪيشن کي لاڳو ڪرڻ جي نونسن بابت ڳالهائيندس.
ٽئين حصي ۾ اسين خدمتن کي منظم ڪرڻ، رستن ۽ توازن جي عام مسئلن تي غور ڪنداسين. اچو ته اسڪاليبلٽي جي عملي پاسي ۽ سسٽم جي غلطي رواداري بابت ڳالهايون.

پهرين حصي جي پڄاڻي.

تصوير @lucabravo.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو