Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

Mail.ru گروپ تي اسان وٽ Tarantool آهي - هي Lua ۾ هڪ ايپليڪيشن سرور آهي، جيڪو پڻ ڊيٽابيس جي طور تي ٻيڻو ڪري ٿو (يا ان جي برعڪس؟). اهو تيز ۽ ٿڌو آهي، پر هڪ سرور جون صلاحيتون اڃا تائين لامحدود نه آهن. عمودي اسڪيلنگ پڻ هڪ علاج نه آهي، تنهنڪري Tarantool ۾ افقي اسڪيلنگ لاء اوزار آهن - vshard ماڊل [1]. اهو توهان کي ڪيترن ئي سرورن تي ڊيٽا کي ڇڪڻ جي اجازت ڏئي ٿو، پر توهان کي ان کي ترتيب ڏيڻ ۽ ڪاروباري منطق کي ڳنڍڻ لاء ان سان ٽڪر ڪرڻو پوندو.

سٺي خبر: اسان گڏ ڪيو آهي ڪجهه وڏا شاٽ (مثال طور [2], [3]) ۽ هڪ ٻيو فريم ورڪ ٺاهيو جيڪو خاص طور تي هن مسئلي جي حل کي آسان بڻائي ڇڏيندو.

Tarantool ڪارٽريج پيچيده تقسيم نظام جي ترقي لاء هڪ نئون فريم ورڪ آهي. اهو توهان کي بنيادي ڍانچي جي مسئلن کي حل ڪرڻ بدران ڪاروباري منطق لکڻ تي ڌيان ڏيڻ جي اجازت ڏئي ٿو. هيٺ ڏنل ڪٽ مان توهان کي ٻڌايان ٿو ته هي فريم ورڪ ڪيئن ڪم ڪري ٿو ۽ ان کي استعمال ڪندي تقسيم ڪيل خدمتون ڪيئن لکجي.

ڇا واقعي مسئلو آهي؟

اسان وٽ هڪ tarantula آهي، اسان وٽ vshard آهي - توهان وڌيڪ ڇا ٿا چاهيو؟

پهرين، اها سهولت جي ڳالهه آهي. vshard ترتيب ڏنل آھي لوا جدولن ذريعي. ڪيترن ئي Tarantool عملن جي ورهايل سسٽم لاءِ صحيح طريقي سان ڪم ڪرڻ لاءِ، ترتيب هر هنڌ ساڳيو هجڻ گهرجي. ڪو به اهو دستي طور تي ڪرڻ نٿو چاهي. تنهن ڪري، سڀني قسمن جا اسڪرپٽ، جوابي، ۽ ترتيب ڏيڻ وارو نظام استعمال ٿيل آهن.

ڪارٽريج پاڻ vshard ترتيب ترتيب ڏئي ٿو، اهو هن جي بنياد تي ڪندو آهي ذاتي ورهايل ترتيب. اهو لازمي طور تي هڪ سادي YAML فائل آهي، جنهن جي هڪ ڪاپي هر Tarantool مثال ۾ محفوظ ڪئي وئي آهي. سادگي اها آهي ته فريم ورڪ پاڻ پنهنجي ترتيب جي نگراني ڪري ٿو ۽ يقيني بڻائي ٿو ته اهو هر جڳهه ساڳيو آهي.

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

اسان انهن مسئلن کي بار بار حل ڪيو، ۽ ڪجهه نقطي تي اسان هڪ اهڙي طريقي کي ترقي ڪرڻ ۾ ڪامياب ٿي چڪا آهيون جيڪا ايپليڪيشن سان ڪم ڪرڻ کي آسان بڻائي ٿي ان جي سڄي زندگي جي چڪر ۾: تخليق، ترقي، جاچ، CI/CD، سار سنڀال.

ڪارٽريج هر Tarantool عمل لاء ڪردار جو تصور متعارف ڪرايو. ڪردار هڪ تصور آهي جيڪو ڊولپر کي ڪوڊ لکڻ تي ڌيان ڏيڻ جي اجازت ڏئي ٿو. پروجيڪٽ ۾ موجود سڀئي ڪردار هڪ ٽرانٽول مثال تي هلائي سگھجن ٿا، ۽ اهو ٽيسٽ لاءِ ڪافي هوندو.

Tarantool Cartridge جي اهم خاصيتون:

  • خودڪار ڪلستر آرڪيسٽريشن؛
  • نون ڪردارن کي استعمال ڪندي ايپليڪيشن جي ڪارڪردگي کي وڌائڻ؛
  • ڊولپمينٽ ۽ ڊولپمينٽ لاءِ ايپليڪيشن ٽيمپليٽ؛
  • تعمير ٿيل خودڪار شارڊنگ؛
  • Luatest ٽيسٽنگ فريم ورڪ سان انضمام؛
  • WebUI ۽ API استعمال ڪندي ڪلستر انتظام؛
  • پيڪنگنگ ۽ لڳائڻ جا اوزار.

هيلو، دنيا!

مان پاڻ کي فريم ورڪ ڏيکارڻ جو انتظار نٿو ڪري سگهان، تنهنڪري اسان بعد ۾ فن تعمير بابت ڪهاڻي ڇڏينداسين ۽ ڪجهه سادو سان شروع ڪنداسين. جيڪڏهن اسان فرض ڪريون ٿا ته Tarantool پاڻ اڳ ۾ ئي نصب ٿيل آهي، پوء اهو سڀ ڪجهه ڪرڻو آهي

$ tarantoolctl rocks install cartridge-cli
$ export PATH=$PWD/.rocks/bin/:$PATH

اهي ٻه حڪم ڪمانڊ لائن افاديت کي انسٽال ڪندا ۽ توهان کي ٽيمپليٽ مان توهان جي پهرين ايپليڪيشن ٺاهڻ جي اجازت ڏيندا:

$ cartridge create --name myapp

۽ اھو اھو آھي جيڪو اسان حاصل ڪريون ٿا:

myapp/
├── .git/
├── .gitignore
├── app/roles/custom.lua
├── deps.sh
├── init.lua
├── myapp-scm-1.rockspec
├── test
│   ├── helper
│   │   ├── integration.lua
│   │   └── unit.lua
│   ├── helper.lua
│   ├── integration/api_test.lua
│   └── unit/sample_test.lua
└── tmp/

هي هڪ گٽ مخزن آهي هڪ تيار ٿيل "هيلو، ورلڊ!" درخواست. اچو ته ان کي فوري طور تي هلائڻ جي ڪوشش ڪريون، اڳ ۾ ئي انحصار کي نصب ڪيو (بشمول خود فريم ورڪ):

$ tarantoolctl rocks make
$ ./init.lua --http-port 8080

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

ايپليڪيشن ڊولپمينٽ

بس تصور ڪريو، اسان ھڪڙي منصوبي کي ڊزائين ڪري رھيا آھيون جيڪو ڊيٽا حاصل ڪري، ان کي محفوظ ڪريو ۽ ھڪڙي ڏينھن ۾ ھڪڙي رپورٽ ٺاھيو.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

اسان هڪ آريگرام ڊرائنگ شروع ڪريون ٿا ۽ ان تي ٽي حصا رکون ٿا: گيٽ وي، اسٽوريج ۽ شيڊولر. اسان فن تعمير تي وڌيڪ ڪم ڪري رهيا آهيون. جيئن ته اسان vshard کي اسٽوريج طور استعمال ڪندا آهيون، اسان اسڪيم ۾ vshard-router ۽ vshard-storage شامل ڪندا آهيون. نه ئي گيٽ وي ۽ نه ئي شيڊولر سڌو سنئون اسٽوريج تائين رسائي ڪندو؛ اهو آهي جيڪو روٽر لاءِ آهي، اهو ئي آهي جنهن لاءِ ٺاهيو ويو آهي.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

هي آريگرام اڃا تائين صحيح طور تي نمائندگي نٿو ڪري ته اسان منصوبي ۾ ڇا ٺاهي رهيا آهيون ڇو ته اجزاء تجريدي نظر اچن ٿا. اسان کي اڃا تائين ڏسڻ جي ضرورت آهي ته اهو ڪيئن پيش ڪيو ويندو حقيقي Tarantool تي - اچو ته اسان جي اجزاء کي پروسيس ذريعي گروپ ڪريون.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

ويشارڊ روٽر ۽ گيٽ وي کي الڳ الڳ مثالن تي رکڻ ۾ ٿورو نقطو آهي. اسان کي هڪ ڀيرو ٻيهر نيٽ ورڪ کي سرف ڪرڻ جي ضرورت ڇو آهي جيڪڏهن اهو اڳ ۾ ئي روٽر جي ذميواري آهي؟ انهن کي هڪ ئي عمل ۾ هلائڻ گهرجي. اھو آھي، ٻئي گيٽ وي ۽ vshard.router.cfg ھڪڙي عمل ۾ شروع ڪيا ويا آھن، ۽ انھن کي مقامي طور تي رابطو ڪرڻ ڏيو.

ڊزائن اسٽيج تي، ٽن حصن سان ڪم ڪرڻ آسان هو، پر مان، هڪ ڊولپر جي حيثيت سان، ڪوڊ لکڻ وقت، Tarnatool جي ٽن مثالن کي شروع ڪرڻ بابت سوچڻ نه ٿو چاهيان. مون کي ٽيسٽ هلائڻ ۽ چيڪ ڪرڻ جي ضرورت آهي ته مون گيٽ وي صحيح لکيو آهي. يا ٿي سگهي ٿو مان پنهنجي ساٿين کي هڪ خاصيت ڏيکارڻ چاهيان ٿو. مون کي ٽي ڪاپيون ترتيب ڏيڻ جي پريشاني مان ڇو وڃڻ گهرجي؟ اهڙي طرح ڪردار جو تصور پيدا ٿيو. هڪ ڪردار هڪ باقاعده لوش ماڊل آهي جنهن جي زندگي جي چڪر ڪارٽريج طرفان منظم ڪئي وئي آهي. ھن مثال ۾ انھن مان چار آھن - گيٽ وي، روٽر، اسٽوريج، شيڊولر. ڪنهن ٻئي منصوبي ۾ وڌيڪ ٿي سگهي ٿو. سڀئي ڪردار ھڪڙي عمل ۾ هلائي سگھجن ٿا، ۽ اھو ڪافي ٿيندو.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

۽ جڏهن اها اسٽيجنگ يا پيداوار جي مقرري جي ڳالهه اچي ٿي، ته پوءِ اسان هر ٽرانٽول پروسيس کي هارڊويئر جي صلاحيتن جي بنياد تي پنهنجو ڪردار مقرر ڪنداسين:

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

Topology انتظام

معلومات جي باري ۾ ڪٿي ڪٿي ڪردار هلائي رهيا آهن ڪٿي ذخيرو ٿيڻ گهرجي. ۽ هي "ڪٿي" ورهايل ترتيب آهي، جنهن جو مون مٿي ذڪر ڪيو آهي. ان جي باري ۾ سڀ کان اهم شيء ڪلستر ٽوپوولوجي آهي. هتي آهن 3 نقل ڪرڻ وارا گروپ 5 Tarantool پروسيس جا:

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

اسان ڊيٽا کي وڃائڻ نٿا چاهيون، تنهنڪري اسان احتياط سان هلندڙ عملن بابت معلومات جو علاج ڪندا آهيون. ڪارٽريج ٻن مرحلن جي ڪمٽ استعمال ڪندي ترتيب جي ٽريڪ رکي ٿو. هڪ دفعو اسان کي ترتيب ڏيڻ جي تازه ڪاري ڪرڻ چاهيو ٿا، اهو پهريون ڀيرو چيڪ ڪري ٿو ته سڀئي مثال موجود آهن ۽ نئين ترتيب کي قبول ڪرڻ لاء تيار آهن. ان کان پوء، ٻيو مرحلو ترتيب لاڳو ٿئي ٿو. اهڙيءَ طرح، جيتوڻيڪ جيڪڏهن هڪ ڪاپي عارضي طور تي دستياب نه ٿي پوي، ڪجهه به خراب نه ٿيندو. ٺاھ جوڙ آساني سان لاڳو نه ٿيندي ۽ توھان اڳ ۾ ھڪڙي غلطي ڏسندا.

پڻ ٽوپولوجي سيڪشن ۾، هر نقل گروپ جي اڳواڻ جي طور تي هڪ اهم پيٽرولر اشارو ڪيو ويو آهي. عام طور تي هي ڪاپي آهي جيڪا رڪارڊ ڪئي پئي وڃي. باقي اڪثر ڪري صرف پڙهڻ وارا آهن، جيتوڻيڪ اتي استثنا ٿي سگهي ٿي. ڪڏهن ڪڏهن بهادر ڊولپرز تڪرار کان نه ڊڄندا آهن ۽ ڊيٽا کي متوازي طور تي ڪيترن ئي نقلن ڏانهن لکندا آهن، پر ڪجهه آپريشن آهن، جيڪي ڪجهه به نه هجن، ٻه ڀيرا نه ٿيڻ گهرجن. ان لاءِ رهبر جي نشاني آهي.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

ڪردار جي زندگي

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

function init()
function validate_config()
function apply_config()
function stop()

هر ڪردار جو هڪ فنڪشن آهي init. اهو هڪ ڀيرو سڏيو ويندو آهي يا ته جڏهن ڪردار کي فعال ڪيو ويندو آهي يا جڏهن Tarantool ٻيهر شروع ڪيو ويندو آهي. اهو اتي آسان آهي، مثال طور، box.space.create کي شروع ڪرڻ لاء، يا شيڊولر ڪجهه پس منظر فائبر لانچ ڪري سگهي ٿو جيڪو ڪم ڪن خاص وقتن جي وقفن تي.

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

ڪلستر ڪالون validate_config и apply_config هر دفعي ورهايل ترتيب تبديل ٿي. جڏهن هڪ ترتيب لاڳو ٿئي ٿي هڪ ٻن مرحلن جي ڪمٽ ذريعي، ڪلستر چيڪ ڪري ٿو ته هر ڪردار هن نئين ترتيب کي قبول ڪرڻ لاء تيار آهي ۽، جيڪڏهن ضروري هجي ته، صارف کي هڪ غلطي جي رپورٽ ڪري. جڏهن هرڪو اتفاق ڪري ٿو ته ترتيب عام آهي، پوء apply_config.

ڪردارن جو به هڪ طريقو آهي stop، جيڪو ڪردار جي پيداوار کي صاف ڪرڻ جي ضرورت آهي. جيڪڏهن اسان چئون ٿا ته هن سرور تي شيڊولر جي ضرورت ناهي، اهو انهن فائبرن کي روڪي سگهي ٿو جن سان اهو شروع ٿيو init.

ڪردار هڪ ٻئي سان رابطو ڪري سگهن ٿا. اسان Lua ۾ فنڪشن ڪالون لکڻ جا عادي آهيون، پر اهو ٿي سگهي ٿو ته ڏنل عمل ۾ اهو ڪردار نه هجي جيڪو اسان کي گهربل هجي. نيٽ ورڪ تي ڪالن جي سهولت لاءِ، اسان استعمال ڪريون ٿا rpc (ريموٽ پروسيسنگ ڪال) معاون ماڊل، جيڪو Tarantool ۾ ٺهيل معياري نيٽ باڪس جي بنياد تي ٺهيل آهي. اهو ڪارائتو ٿي سگهي ٿو جيڪڏهن، مثال طور، توهان جو گيٽ وي هڪ ڏينهن انتظار ڪرڻ بجاءِ، سڌو سنئون شيڊيولر کان ڪم ڪرڻ لاءِ پڇڻ چاهي ٿو.

هڪ ٻيو اهم نقطو غلطي رواداري کي يقيني بڻائڻ آهي. ڪارٽريج صحت جي نگراني ڪرڻ لاء SWIM پروٽوڪول استعمال ڪري ٿو [4]. مختصر ۾، پروسيس يو ڊي پي تي هڪ ٻئي سان ”افواهون“ مٽائي ٿو- هر عمل پنهنجي پاڙيسرين کي تازيون خبرون ٻڌائي ٿو، ۽ اهي جواب ڏين ٿا. جيڪڏهن اوچتو جواب نه ٿو اچي ته ترنتول کي شڪ ٿيڻ لڳندو آهي ته ڪجهه غلط آهي، ۽ ٿوري دير کان پوءِ هو موت جو ذڪر ڪري ۽ آس پاس جي سڀني کي اها خبر ٻڌائڻ شروع ڪري ٿو.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

هن پروٽوڪول جي بنياد تي، ڪارٽريز خودڪار ناڪامي پروسيسنگ کي منظم ڪري ٿو. هر عمل پنهنجي ماحول کي مانيٽر ڪري ٿو، ۽ جيڪڏهن اڳواڻ اوچتو جواب ڏيڻ بند ڪري ٿو، ريپليڪا پنهنجي ڪردار تي قبضو ڪري سگهي ٿو، ۽ ڪارٽريج مطابق هلندڙ ڪردار کي ترتيب ڏئي ٿو.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

توھان کي ھتي محتاط رھڻ جي ضرورت آھي، ڇاڪاڻ ته بار بار سوئچنگ اڳتي ۽ پوئتي موٽڻ دوران ڊيٽا ۾ تضاد پيدا ٿي سگھي ٿو. يقينا، توهان کي بي ترتيب تي خودڪار ناڪامي کي فعال نه ڪرڻ گهرجي. اسان کي واضح طور تي سمجهڻ گهرجي ته ڇا ٿي رهيو آهي ۽ يقين رکون ٿا ته قائد جي بحال ٿيڻ کان پوء نقل نه ٿيندي ۽ تاج کيس واپس ڪيو ويندو.

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

Docker جي برعڪس، اسان صرف هڪ ڪردار "تصويري" نه ٿا ڪري سگهون، ان کي ڪنهن ٻئي مشين ڏانهن وٺي وڃو ۽ ان کي اتي هلايو. اسان جا ڪردار ڊاکر ڪنٽينرز وانگر الڳ الڳ نه آهن. انهي سان گڏ، اسان هڪ مثال تي ٻه هڪجهڙا ڪردار نه ٿا هلائي سگهون. هڪ ڪردار يا ته موجود آهي يا اهو نه آهي؛ هڪ لحاظ کان، اهو هڪ اڪيلو آهي. ۽ ٽيون، ڪردار سڄي نقل ڪرڻ واري گروپ ۾ ساڳيا هجڻ گهرجن، ڇاڪاڻ ته ٻي صورت ۾ اهو بيڪار هوندو - ڊيٽا ساڳي آهي، پر ترتيب مختلف آهي.

لڳائڻ جا اوزار

مون واعدو ڪيو ته ڏيکاريو ڪيئن ڪارٽريج ايپليڪيشنن کي ترتيب ڏيڻ ۾ مدد ڪري ٿي. ٻين لاءِ زندگي آسان ڪرڻ لاءِ، فريم ورڪ پيڪيجز RPM پيڪيجز:

$ cartridge pack rpm myapp -- упакует для нас ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm

انسٽال ٿيل پيڪيج ۾ لڳ ڀڳ هر شيءِ تي مشتمل آهي جيڪا توهان کي گهربل آهي: ٻئي ايپليڪيشن ۽ انسٽال ٿيل انحصار. Tarantool به RPM پيڪيج جي انحصار جي طور تي سرور تي پهچندو، ۽ اسان جي خدمت شروع ڪرڻ لاءِ تيار آهي. اهو سسٽم ڊي ذريعي ڪيو ويندو آهي، پر پهريان توهان کي ٿوري ترتيب لکڻ جي ضرورت آهي. گھٽ ۾ گھٽ، هر عمل جي URI بيان ڪريو. مثال طور ٽي ڪافي آهي.

$ sudo tee /etc/tarantool/conf.d/demo.yml <<CONFIG
myapp.router: {"advertise_uri": "localhost:3301", "http_port": 8080}
myapp.storage_A: {"advertise_uri": "localhost:3302", "http_enabled": False}
myapp.storage_B: {"advertise_uri": "localhost:3303", "http_enabled": False}
CONFIG

هتي هڪ دلچسپ nuance آهي. صرف بائنري پروٽوڪول پورٽ جي وضاحت ڪرڻ جي بدران، اسان پروسيس جو سڄو عوامي پتو بيان ڪريون ٿا بشمول ميزبان نالو. اهو ضروري آهي ته ڪلستر نوڊس ڄاڻن ٿا ته ڪيئن هڪ ٻئي سان ڳنڍڻ. 0.0.0.0 کي advertise_uri ايڊريس طور استعمال ڪرڻ هڪ خراب خيال آهي؛ اهو هڪ خارجي IP پتو هجڻ گهرجي، ساکٽ بائنڊ نه. ان کان سواء، ڪجھ به ڪم نه ڪندو، تنهنڪري ڪارٽريج صرف توهان کي غلط advertise_uri سان نوڊ لانچ ڪرڻ نه ڏيندو.

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

$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B

ٺاھ جوڙ ۾، اسان HTTP پورٽ جي وضاحت ڪئي آھي جنھن تي ڪارٽريج ويب انٽرفيس جي خدمت ڪندو آھي - 8080. اچو ته ان ڏانھن وڃو ۽ ھڪ نظر وٺو:

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

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

اچو ته توهان جي پسنديده مشروب جو گلاس ڀريو ۽ هڪ ڊگهو ڪم هفتي کان پوء آرام ڪريو. اپليڪيشن استعمال ڪري سگهجي ٿو.

Tarantool Cartridge: ٽن لائينن ۾ لوا جي پس منظر کي شارڊنگ

نتيجو

نتيجا ڇا آهن؟ ان جي ڪوشش ڪريو، ان کي استعمال ڪريو، راء ڏيو، Github تي ٽڪيٽ ٺاھيو.

حوالن

[1] Tarantool » 2.2 » حوالو » راڪس ريفرنس » ماڊل vshard

[2] ڪيئن اسان Tarantool جي بنياد تي Alfa-Bank جي سيڙپڪاري ڪاروبار جي بنيادي کي لاڳو ڪيو

[3] نئون نسل بلنگ آرڪيٽيڪچر: ٽرانٽول ڏانهن منتقلي سان تبديلي

[4] SWIM - ڪلستر تعميراتي پروٽوڪول

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - tarantool/cartridge

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

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