Ignite سروس گرڊ - ريبوٽ

26 فيبروري تي، اسان هڪ Apache Ignite GreenSource ميٽنگ منعقد ڪئي، جتي اوپن سورس پروجيڪٽ ۾ حصو وٺندڙن ڳالهايو Apache Ignite. هن ڪميونٽي جي زندگيء ۾ هڪ اهم واقعو حصو جي restruction هو Ignite سروس گرڊ، جيڪو توهان کي اجازت ڏئي ٿو ڪسٽم مائڪرو سروسز سڌو سنئون Ignite ڪلستر ۾. هن ملاقات ۾ هن مشڪل عمل بابت ڳالهايو Vyacheslav Daradur، سافٽ ويئر انجنيئر ۽ Apache Ignite مدد ڪندڙ ٻن سالن کان وڌيڪ.

Ignite سروس گرڊ - ريبوٽ

اچو ته شروع ڪريون ته Apache Ignite عام طور تي ڇا آهي. هي هڪ ڊيٽابيس آهي جيڪو SQL، ٽرانزيڪشن ۽ ڪيشنگ جي مدد سان ورهايل ڪي/ويل اسٽوريج آهي. ان کان علاوه، Ignite توهان کي اجازت ڏئي ٿو ته ڪسٽم سروسز سڌو سنئون Ignite ڪلستر ۾. ڊولپر کي انهن سڀني اوزارن تائين رسائي آهي جيڪي Ignite مهيا ڪري ٿي - ورهايل ڊيٽا ڍانچي، ميسيجنگ، اسٽريمنگ، ڪمپيوٽ ۽ ڊيٽا گرڊ. مثال طور، ڊيٽا گرڊ استعمال ڪرڻ وقت، ڊيٽا اسٽوريج لاءِ الڳ انفراسٽرڪچر جو انتظام ڪرڻ جو مسئلو ۽ نتيجي طور، مٿيون قيمتون غائب ٿي وڃن ٿيون.

Ignite سروس گرڊ - ريبوٽ

سروس گرڊ API استعمال ڪندي، توھان ھڪڙي خدمت کي ترتيب ڏئي سگھوٿا صرف ترتيب ڏيڻ واري اسڪيم کي بيان ڪندي ۽، مطابق، خدمت پاڻ کي ترتيب ۾.

عام طور تي، هڪ ترتيب ڏيڻ وارو منصوبو مثالن جي تعداد جو اشارو آهي جيڪو ڪلستر نوڊس تي مقرر ڪيو وڃي. اتي ٻه عام لڳائڻ وارا منصوبا آهن. پهريون آهي ڪلستر سنگلٽن: ڪنهن به وقت، صارف جي خدمت جو هڪ مثال ڪلستر ۾ دستياب هجڻ جي ضمانت آهي. ٻيو نوڊ سنگلٽن آهي: خدمت جو هڪ مثال هر ڪلستر نوڊ تي لڳايو ويو آهي.

Ignite سروس گرڊ - ريبوٽ

صارف پڻ پوري ڪلستر ۾ خدمت جي مثالن جو تعداد بيان ڪري سگھي ٿو ۽ مناسب نوڊس کي فلٽر ڪرڻ لاء ھڪڙو اڳڪٿي بيان ڪري سگھي ٿو. هن منظر ۾، سروس گرڊ پاڻ کي حساب ڪندو بهترين تقسيم جي خدمتن کي ترتيب ڏيڻ لاء.

ان کان سواء، اتي هڪ اهڙي خاصيت آهي جيئن لاڳاپو سروس. لاڳاپو هڪ فنڪشن آهي جيڪو بيان ڪري ٿو ڪنجي جي رشتي کي پارٽيشنن ۽ پارٽين جي رشتي کي نوڊس جي ٽوپولوجي ۾. چيڪ کي استعمال ڪندي، توھان طئي ڪري سگھوٿا پرائمري نوڊ جنھن تي ڊيٽا محفوظ ٿيل آھي. هن طريقي سان توهان پنهنجي خدمت کي هڪ اهم ۽ لاڳاپو فنڪشن ڪيش سان ڳنڍي سگهو ٿا. جيڪڏهن لاڳاپو فنڪشن تبديل ٿئي ٿي، خودڪار ٻيهر بحالي ٿيندي. هن طريقي سان، خدمت هميشه ڊيٽا جي ويجهو هوندي جيڪا ان کي هٿي وٺائڻ جي ضرورت آهي، ۽، مطابق، معلومات تائين رسائي جي اوور هيڊ کي گھٽائي. هن اسڪيم کي collocated ڪمپيوٽنگ جو هڪ قسم سڏيو ڪري سگهجي ٿو.

هاڻي ته اسان اهو معلوم ڪيو آهي ته سروس گرڊ جي خوبصورتي ڇا آهي، اچو ته ان جي ترقي جي تاريخ بابت ڳالهايون.

اڳي ڇا ٿيو

سروس گرڊ جو اڳوڻو عمل Ignite جي ٽرانزيڪشنل ريپليڪٽڊ سسٽم ڪيش تي ٻڌل هو. Ignite ۾ لفظ "ڪيش" اسٽوريج ڏانهن اشارو ڪري ٿو. اهو آهي، اهو ڪجهه عارضي ناهي، جيئن توهان سوچيو. ان حقيقت جي باوجود ته ڪيش نقل ٿيل آهي ۽ هر نوڊ ۾ پوري ڊيٽا سيٽ شامل آهي، ڪيش جي اندر ان کي ورهاڱي واري نمائندگي آهي. اهو اسٽوريج جي اصلاح جي ڪري آهي.

Ignite سروس گرڊ - ريبوٽ

ڇا ٿيو جڏهن صارف خدمت کي ترتيب ڏيڻ چاهي ٿو؟

  • ڪلستر ۾ سڀ نوڊس سبسڪرائب ڪيا ويا ڊيٽا کي اپڊيٽ ڪرڻ لاءِ اسٽوريج ۾ تعمير ٿيل مسلسل سوال ميڪانيزم استعمال ڪندي.
  • شروعاتي نوڊ، هڪ پڙهيل ڪم ٿيل ٽرانزيڪشن جي تحت، ڊيٽابيس ۾ هڪ رڪارڊ ٺاهيو جنهن ۾ خدمت جي ترتيب شامل آهي، جنهن ۾ سيريل ٿيل مثال شامل آهي.
  • جڏهن نئين داخلا جي اطلاع ڏني وئي، ڪوآرڊينيٽر ترتيب جي بنياد تي ورڇ جو حساب ڪيو. نتيجو وارو اعتراض ڊيٽابيس ڏانهن واپس لکيو ويو.
  • جيڪڏهن هڪ نوڊ تقسيم جو حصو هو، ڪوآرڊينيٽر کي ان کي ترتيب ڏيڻو پوندو.

جيڪو اسان کي مناسب نه هو

ڪجهه نقطي تي اسان نتيجي تي آيا آهيون: هي خدمت سان ڪم ڪرڻ جو طريقو ناهي. ان جا ڪيترائي سبب هئا.

جيڪڏھن ڪجھ نقص ٺاھڻ دوران ٿي ويو، پوء اھو صرف نوڊ جي لاگن مان معلوم ٿي سگھي ٿو جتي سڀ ڪجھ ٿيو آھي. اتي صرف غير مطابقت پذير مقرري هئي، تنهنڪري مقرري جي طريقي کان صارف کي ڪنٽرول واپس ڪرڻ کان پوء، خدمت شروع ڪرڻ لاء ڪجهه اضافي وقت جي ضرورت هئي - ۽ ان دوران صارف ڪجھ به ڪنٽرول نه ڪري سگهيو. سروس گرڊ کي اڳتي وڌائڻ لاءِ، نيون خاصيتون ٺاھڻ، نوان استعمال ڪندڙن کي راغب ڪرڻ ۽ ھر ڪنھن جي زندگيءَ کي آسان بنائڻ لاءِ، ڪجھ تبديل ڪرڻ جي ضرورت آھي.

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

ان کان علاوه، مان عمل درآمد کي آسان ڪرڻ چاهيان ٿو، يعني، ٽرانزيڪشن ۽ ٻيهر توازن کان پري. ان حقيقت جي باوجود ته ڪيش کي نقل ڪيو ويو آهي ۽ ڪو به توازن نه آهي، ڪيترن ئي نوڊس سان وڏي تعیناتي دوران مسئلا پيدا ٿيا. جڏهن ٽوپولوجي بدلجي ٿي، نوڊس کي معلومات جي مٽاسٽا ڪرڻ جي ضرورت آهي، ۽ وڏي ڊيپلائيشن سان، هي ڊيٽا تمام گهڻو وزن ڪري سگهي ٿو.

جڏهن ٽوپولوجي غير مستحڪم هئي، ڪوآرڊينيٽر کي خدمتن جي ورڇ جي ٻيهر ڳڻپ ڪرڻ جي ضرورت هئي. ۽ عام طور تي، جڏهن توهان کي ڪم ڪرڻو پوندو ٽرانزيڪشن سان هڪ غير مستحڪم ٽوپولوجي تي، اهو ٿي سگهي ٿو مشڪلاتن جي اڳڪٿي ڪرڻ جي غلطي.

پريشاني

مسئلن سان گڏ عالمي تبديليون ڇا آهن؟ انهن مان پهرين ٽوپولوجي ۾ تبديلي هئي. توهان کي اهو سمجهڻ جي ضرورت آهي ته ڪنهن به وقت، سروس جي تعیناتي جي وقت تي، هڪ نوڊ داخل ڪري سگهي ٿو يا ڪلستر کي ڇڏي ڏيو. ان کان علاوه، جيڪڏهن مقرري جي وقت نوڊ ڪلستر ۾ شامل ٿئي ٿي، اهو ضروري هوندو ته مسلسل خدمتن بابت سڀني معلومات کي نئين نوڊ ڏانهن منتقل ڪيو وڃي. ۽ اسان ڳالهائي رهيا آهيون نه رڳو ان بابت جيڪي اڳ ۾ ئي مقرر ڪيا ويا آهن، پر موجوده ۽ مستقبل جي تعينات بابت پڻ.

اهو صرف انهن مسئلن مان هڪ آهي جيڪو هڪ الڳ فهرست ۾ گڏ ڪري سگهجي ٿو:

  • نوڊ جي شروعات تي جامد ترتيب ڏنل خدمتن کي ڪيئن ترتيب ڏيڻ؟
  • ڪلستر مان نوڊ ڇڏڻ - ڇا ڪجي جيڪڏهن نوڊ ميزباني ڪيل خدمتون؟
  • ڇا ڪجي جيڪڏهن ڪوآرڊينيٽر بدلجي ويو آهي؟
  • ڇا ڪجي جيڪڏهن ڪلائنٽ ٻيهر ڪلستر سان ڳنڍي ٿو؟
  • ڇا چالو ڪرڻ / غير فعال ڪرڻ جي درخواستن تي عمل ڪرڻ جي ضرورت آهي ۽ ڪيئن؟
  • ڇا جيڪڏهن اهي ڪيش تباهي لاءِ سڏين ٿا، ۽ اسان وٽ لاڳاپا خدمتون ان سان ڳنڍيل آهن؟

۽ اهو سڀ ڪجهه ناهي.

فيصلو

ھدف جي طور تي، اسان پيغامن جي استعمال سان پروسيس ڪميونيڪيشن کي لاڳو ڪرڻ سان واقعي تي ھلندڙ طريقي کي چونڊيو. Ignite اڳ ۾ ئي ٻه حصا لاڳو ڪري ٿو جيڪي نوڊس کي پاڻ ۾ پيغامن کي اڳتي وڌائڻ جي اجازت ڏين ٿا - ڪميونيڪيشن-اسپي ۽ دريافت-اسپي.

Ignite سروس گرڊ - ريبوٽ

ڪميونيڪيشن-سپي نوڊس کي سڌو سنئون ۽ اڳتي پيغام پهچائڻ جي اجازت ڏئي ٿي. اهو ڊيٽا جي وڏي مقدار موڪلڻ لاء مناسب آهي. Discovery-spi توهان کي ڪلستر ۾ سڀني نوڊس ڏانهن پيغام موڪلڻ جي اجازت ڏئي ٿي. معياري عمل ۾، هي هڪ انگوزي ٽوپولوجي استعمال ڪندي ڪيو ويندو آهي. زوڪيپر سان گڏ انضمام پڻ آهي، انهي صورت ۾ هڪ اسٽار ٽوپولوجي استعمال ڪيو ويندو آهي. هڪ ٻيو اهم نقطو نوٽ ڪرڻ جي قابل آهي ته دريافت-سپي ضمانت فراهم ڪري ٿي ته پيغام يقيني طور تي صحيح ترتيب ۾ سڀني نوڊس تائين پهچايو ويندو.

اچو ته ترتيب ڏيڻ واري پروٽوڪول کي ڏسو. ڊيپلائيمينٽ ۽ بيروزگاري لاءِ سڀئي صارف درخواستون دريافت-اسپي ذريعي موڪليا ويا آهن. هي هيٺ ڏنل ڏئي ٿو ضمانتون:

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

جڏهن هڪ درخواست ملي ٿي، ڪلستر ۾ نوڊس ان کي تصديق ڪن ٿا ۽ پروسيسنگ ڪم ٺاهي رهيا آهن. اهي ڪم قطار ۾ رکيا ويندا آهن ۽ پوءِ هڪ ٻئي سلسلي ۾ هڪ الڳ ڪم ڪندڙ طرفان عمل ڪيو ويندو آهي. اهو هن طريقي سان لاڳو ڪيو ويو آهي ڇاڪاڻ ته تعیناتي هڪ اهم وقت وٺي سگهي ٿي ۽ قيمتي دريافت جي وهڪري کي ناقابل برداشت طور تي دير ڪري سگهي ٿي.

قطار مان سڀني درخواستن تي عمل ڪيو وڃي ٿو ترتيب ڏيڻ واري مينيجر طرفان. اهو هڪ خاص ڪم ڪندڙ آهي جيڪو هن قطار مان هڪ ڪم کي ڇڪي ٿو ۽ ان کي ترتيب ڏيڻ شروع ڪرڻ جي شروعات ڪري ٿو. ان کان پوء، هيٺيان عمل ٿيندا آهن:

  1. هر نوڊ آزاديءَ سان ورهائڻ جو حساب ڪري ٿو هڪ نئين مقرراتي اسائنمينٽ فنڪشن جي مهرباني.
  2. نوڊس ٺاھڻ جي نتيجن سان گڏ ھڪڙو پيغام ٺاھيو ۽ ان کي ڪوآرڊينيٽر ڏانھن موڪليو.
  3. ڪوآرڊينيٽر سڀني پيغامن کي گڏ ڪري ٿو ۽ پوري ترتيب ڏيڻ واري عمل جو نتيجو پيدا ڪري ٿو، جيڪو دريافت-اسپي ذريعي ڪلستر ۾ سڀني نوڊس ڏانهن موڪليو ويو آهي.
  4. جڏهن نتيجو حاصل ڪيو ويو آهي، ترتيب ڏيڻ وارو عمل ختم ٿي ويندو آهي، جنهن کان پوء اهو ڪم قطار مان هٽايو ويندو آهي.

Ignite سروس گرڊ - ريبوٽ
نئين واقعي تي هلندڙ ڊيزائن: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java

جيڪڏهن تعیناتي دوران هڪ غلطي ٿئي ٿي، نوڊ فوري طور تي هن غلطي کي پيغام ۾ شامل ڪري ٿو جيڪو اهو ڪوآرڊينيٽر ڏانهن موڪلي ٿو. پيغام گڏ ڪرڻ کان پوء، ڪوآرڊينيٽر کي مقرري دوران سڀني غلطين بابت ڄاڻ هوندي ۽ اهو پيغام دريافت-spi ذريعي موڪليندو. غلطي جي معلومات ڪلستر ۾ ڪنهن به نوڊ تي دستياب هوندي.

سروس گرڊ ۾ سڀ اهم واقعا هن آپريٽنگ الگورتھم استعمال ڪندي پروسيس ڪيا ويندا آهن. مثال طور، ٽوپولوجي کي تبديل ڪرڻ پڻ دريافت-اسپي ذريعي هڪ پيغام آهي. ۽ عام طور تي، جڏهن ان جي مقابلي ۾ اڳي هئي، پروٽوڪول ڪافي ٿلهي ۽ قابل اعتماد ثابت ٿيو. تعیناتي دوران ڪنهن به صورتحال کي سنڀالڻ لاء ڪافي.

ا Whatتي Whatا ٿيندو

هاڻي منصوبن جي باري ۾. Ignite پروجيڪٽ ۾ ڪا به وڏي تبديلي Ignite بهتري جي شروعات جي طور تي مڪمل ڪئي وئي آهي، جنهن کي IEP سڏيو ويندو آهي. سروس گرڊ جي ٻيهر ڊيزائن ۾ پڻ IEP آهي - IEP #17 ٺٺولي واري عنوان سان ”سروس گرڊ ۾ تيل جي تبديلي“. پر حقيقت ۾، اسان انجڻ جو تيل نه، پر سڄي انجڻ کي تبديل ڪيو.

اسان IEP ۾ ڪمن کي 2 مرحلن ۾ ورهايو. پهريون مرحلو هڪ اهم مرحلو آهي، جنهن ۾ ڊيپلائيمينٽ پروٽوڪول کي ٻيهر ڪم ڪرڻ شامل آهي. اهو اڳ ۾ ئي ماسٽر ۾ شامل آهي، توهان ڪوشش ڪري سگهو ٿا نئين سروس گرڊ، جيڪو 2.8 ورزن ۾ ظاهر ٿيندو. ٻئي مرحلي ۾ ٻيا ڪيترائي ڪم شامل آھن:

  • گرم ٻيهر ترتيب ڏيڻ
  • خدمت جو نسخو
  • وڌايل غلطي رواداري
  • پتلي ڪلائنٽ
  • مختلف ميٽرڪ جي نگراني ۽ حساب ڪرڻ لاء اوزار

آخرڪار، اسان توهان کي مشورو ڏئي سگهون ٿا سروس گرڊ تي تعمير ڪرڻ لاءِ غلطي برداشت ڪندڙ، اعلي دستيابي سسٽم. اسان توهان کي پڻ دعوت ڏيون ٿا ته اسان وٽ وڃو dev-list и استعمال ڪندڙ جي فهرست پنهنجو تجربو حصيداري ڪريو. توهان جو تجربو واقعي ڪميونٽي لاءِ اهم آهي؛ اهو توهان کي سمجهڻ ۾ مدد ڪندو ته اڳتي ڪٿي وڃڻو آهي، مستقبل ۾ جزو کي ڪيئن ترقي ڪجي.

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

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