Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظام

Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظام

TL، ڊاڪٽر: وضاحت ڪلائنٽ-سرور جي فن تعمير جي اسان جي اندروني نيٽ ورڪ جي جوڙجڪ مينيجمينٽ سسٽم، QControl. اهو هڪ ٻه-پرت ٽرانسپورٽ پروٽوڪول تي ٻڌل آهي جيڪو ڪم ڪري ٿو gzip-packed پيغامن جي بغير ختم ٿيڻ جي وچ ۾. ورهايل روٽرز ۽ آخري پوائنٽون ترتيبن جي تازه ڪاريون حاصل ڪن ٿيون، ۽ پروٽوڪول پاڻ کي مقامي وچولي رليز جي انسٽاليشن جي اجازت ڏئي ٿو. سسٽم اصول تي ٺهيل آهي فرق جي بيڪ اپ ("تازو-مستحڪم"، هيٺ بيان ڪيو ويو آهي) ۽ JMESpath سوال جي ٻولي استعمال ڪري ٿو جنجا ٽيمپليٽنگ انجڻ سان گڏ ترتيب ڏيڻ واري فائلن کي پيش ڪرڻ لاءِ.

Qrator Labs هڪ عالمي سطح تي ورهايل حملي جي خاتمي واري نيٽ ورڪ کي هلائي ٿو. اسان جو نيٽ ورڪ ڪنهن به ڪاسٽ جي اصول تي هلندي آهي، ۽ سبنيٽس BGP ذريعي اشتهار ڏنا ويندا آهن. BGP ڪنهن به ڪاسٽ نيٽ ورڪ هجڻ جي ڪري جسماني طور تي ڌرتيءَ جي ڪيترن ئي علائقن ۾ واقع آهي، اسان غير قانوني ٽريفڪ کي پروسيس ڪري سگھون ٿا ۽ فلٽر ڪري سگھون ٿا انٽرنيٽ جي بنيادي ويجهو - ٽائر-1 آپريٽرز.

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

شروعات ۾ لفظ هو. اهو جلدي هڪ مواصلاتي پروٽوڪول بڻجي ويو هڪ تازه ڪاري جي ضرورت ۾.


QControl جي وجود جو بنياد، ۽ ساڳئي وقت هن قسم جي پروٽوڪول جي تعمير تي وقت ۽ وسيلن جي هڪ اهم رقم خرچ ڪرڻ جو بنيادي سبب، ترتيب ڏيڻ جو هڪ واحد مستند ذريعو حاصل ڪرڻ جي ضرورت آهي، ۽ آخرڪار، اسان جي موجودگي جي نقطي کي هم وقت سازي ڪرڻ جي ضرورت آهي. ان سان. اسٽوريج پاڻ QControl جي ترقي دوران ڪيترن ئي گهرجن مان صرف هڪ هو. ان کان علاوه، اسان کي موجوده ۽ منصوبابندي ڪيل خدمتن سان گڏ انضمام جي ضرورت آهي پوائنٽس آف موجودگي (POP)، سمارٽ (۽ حسب ضرورت) طريقن جي ڊيٽا جي تصديق لاءِ، انهي سان گڏ رسائي ڪنٽرول. ان کان علاوه، اسان فائلن ۾ ترميم ڪرڻ بجاءِ ڪمانڊ استعمال ڪندي اهڙي نظام کي ڪنٽرول ڪرڻ چاهيون ٿا. QControl کان اڳ، ڊيٽا تقريبا دستي طور تي موجودگي جي پوائنٽن ڏانهن موڪليو ويو. جيڪڏهن موجودگي جي پوائنٽن مان هڪ دستياب نه هئي ۽ اسان ان کي بعد ۾ تازه ڪاري ڪرڻ وساري ڇڏيو، ترتيب جي هم وقت سازي ختم ٿي ويندي ۽ اسان کي ان کي واپس وٺڻ ۽ هلائڻ ۾ وقت ضايع ڪرڻو پوندو.

نتيجي طور، اسان ھيٺ ڏنل اسڪيم سان آيا:
Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظام
ترتيب ڏيڻ وارو سرور ڊيٽا جي تصديق ۽ اسٽوريج لاءِ ذميوار آهي؛ روٽر وٽ ڪيترائي آخري نقطا آهن جيڪي ڪلائنٽ ۽ سپورٽ ٽيمن کان سرور تائين ترتيب جي تازه ڪاريون وصول ڪن ٿا ۽ نشر ڪن ٿا، ۽ سرور کان موجودگي جي پوائنٽن تائين.

انٽرنيٽ ڪنيڪشن جي معيار اڃا تائين پوري دنيا ۾ وڏي پيماني تي مختلف آهي - هن نقطي کي بيان ڪرڻ لاء، اچو ته هڪ سادي MTR کي ڏسو پراگ، چيڪ ريپبلڪ کان سنگاپور ۽ هانگ ڪانگ تائين.

Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظام
MTR پراگ کان سنگاپور تائين

Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظام
هانگ ڪانگ لاءِ ساڳي ڳالهه

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

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

تازو-مستحڪم ڊيزائن

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

نتيجي طور، اسان هڪ بلڪه دلچسپ حل تي آيا آهيون - اسان وٽ صرف هڪ حوالو پرت آهي، مقرر، اچو ته ان کي مستحڪم سڏين، ۽ ان لاء صرف هڪ فرق - تازو. هر تازو آخري ٺاهيل مستحڪم تي ٻڌل آهي ۽ ترتيب واري ڊيٽا کي ٻيهر تعمير ڪرڻ لاء ڪافي آهي. جيئن ئي تازو تازو پنهنجي منزل تي پهچندو آهي، تيئن پراڻي جي ضرورت نه رهي آهي.

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

ٻه-سطح ٽرانسپورٽ جو فن تعمير

اسان پنهنجي ٽرانسپورٽ کي ٻن سطحن تي ڇو ٺاهيو؟ جواب بلڪل سادو آهي - اسان او ايس آءِ ماڊل مان انسپائريشن وٺي، ان جي ٽرانسپورٽ ۽ ايپليڪيشن ليئرز سان اعليٰ سطحي منطق کان روئٽنگ کي ڊيڪول ڪرڻ چاهيون ٿا. اسان ٽرانسپورٽ پروٽوڪول جي ڪردار لاءِ Thrift استعمال ڪيو، ۽ msgpack سيريلائيزيشن فارميٽ ڪنٽرول پيغامن جي اعليٰ سطحي شڪل لاءِ. اهو ئي سبب آهي ته روٽر (ملٽي ڪاسٽ/براڊ ڪاسٽ/ريلي پرفارم ڪري رهيو آهي) msgpack اندر نٿو ڏسجي، مواد کي ان پيڪ يا پيڪ نٿو ڪري، ۽ صرف ڊيٽا کي اڳتي وڌائي ٿو.

Thrift (انگريزي مان - "thrift"، تلفظ [θrift]) هڪ انٽرفيس وضاحت جي ٻولي آهي جيڪا مختلف پروگرامنگ ٻولين لاءِ خدمتون بيان ڪرڻ ۽ ٺاهڻ لاءِ استعمال ٿيندي آهي. اهو ريموٽ پروسيسنگ ڪالز (RPC) لاءِ هڪ فريم ورڪ آهي. هڪ سافٽ ويئر پائپ لائن کي ڪوڊ جنريشن انجڻ سان گڏ ڪري ٿو خدمتن کي ڊولپ ڪرڻ لاءِ جيڪي ڪم ڪن ٿيون يا گهٽ موثر ۽ آساني سان ٻولين جي وچ ۾.

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

Qrator فلٽرنگ نيٽ ورڪ ترتيب جي انتظام جو نظامٻيا اختيار آھن، جھڙوڪ protobuf / gRPC، جيتوڻيڪ، جڏھن اسان پنھنجي منصوبي کي شروع ڪيو، gRPC بلڪل نئين ھئي ۽ اسان ان کي بورڊ تي آڻڻ جي جرئت نه ڪئي.

يقينا، اسان (۽ حقيقت ۾ هجڻ گهرجي) اسان جي پنهنجي سائيڪل ٺاهي سگهون ٿا. اهو آسان ٿيندو هڪ پروٽوڪول ٺاهڻ لاءِ جيڪو اسان کي گهربل آهي ڇاڪاڻ ته ڪلائنٽ-سرور آرڪيٽيڪچر نسبتا سڌو آهي لاڳو ڪرڻ لاءِ هڪ روٽر ٺهڻ جي مقابلي ۾ Thrift تي. هڪ طريقو يا ٻيو، اتي هڪ روايتي تعصب آهي خود لکيل پروٽوڪول ۽ مشهور لائبريرين جي عملن تي عمل ڪرڻ لاءِ (سٺو سببن لاءِ)؛ ان کان علاوه، بحثن دوران هميشه اهو سوال اچي ٿو: ”اسان هن کي ٻين ٻولين ۾ ڪيئن پورٽ ڪرڻ وارا آهيون؟ سو اسان فوري طور تي سائيڪل جو خيال ڪڍي ڇڏيو.

Msgpack JSON سان ملندڙ جلندڙ آهي، پر تيز ۽ ننڍو. اهو هڪ بائنري ڊيٽا سيريلائيزيشن فارميٽ آهي جيڪو ڊيٽا کي ڪيترن ئي ٻولين جي وچ ۾ مٽائڻ جي اجازت ڏئي ٿو.

پهرين سطح تي اسان وٽ گھٽ ۾ گھٽ معلومات سان گڏ آهي روٽر پيغام کي اڳتي وڌائڻ لاءِ ضروري آهي. ٻئي سطح تي پيڪيج ٿيل msgpack جوڙجڪ آهن.

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

JMESPath
JMESPath هڪ JSON سوال جي ٻولي آهي.
اھو اھو آھي جيڪو تفصيل اسان کي سرڪاري JMESPath دستاويزن مان حاصل ڪري ٿو، پر حقيقت ۾، اھو ان کان گھڻو وڌيڪ آھي. JMESPath توهان کي اجازت ڏئي ٿو ڳولا ۽ فلٽر ڪرڻ لاءِ ذيلي وڻن جي وڻن جي بناوت ۾، ۽ لاڳو ڪريو تبديلين تي ڊيٽا ۾. اهو توهان کي خاص فلٽر ۽ ڊيٽا جي تبديلي جي طريقيڪار کي شامل ڪرڻ جي اجازت ڏئي ٿو. جيتوڻيڪ اهو، يقينا، سمجهڻ لاء دماغ جي ڪوشش جي ضرورت آهي.

Jinja
ڪجھ صارفين لاء، اسان کي ھڪڙي فائل ۾ ترتيب ڏيڻ جي ضرورت آھي - تنھنڪري اسان ھڪڙي ٽيمپليٽ انجڻ استعمال ڪندا آھيون ۽ جنجا واضح انتخاب آھي. ان جي مدد سان، اسان منزل تي حاصل ڪيل ٽيمپليٽ ۽ ڊيٽا مان هڪ ترتيب واري فائيل ٺاهيندا آهيون.

ھڪڙي ٺاھ جوڙ واري فائل ٺاھيو، اسان کي ھڪڙي JMESPath درخواست جي ضرورت آھي، ھڪڙي ٽيمپليٽ لاء فائل جي جڳھ لاء FS، ۽ ھڪڙي ٽيمپليٽ پاڻ کي ترتيب ڏيڻ لاء. اهو پڻ هڪ سٺو خيال آهي هن اسٽيج تي فائل جي اجازتن کي واضح ڪرڻ لاء. هي سڀ ڪاميابيءَ سان هڪ فائل ۾ گڏ ڪيو ويو - ترتيب ڏيڻ واري ٽيمپليٽ جي شروعات کان اڳ، اسان YAML فارميٽ ۾ هيڊر رکون ٿا جيڪو باقي بيان ڪري ٿو.

مثال طور

---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft] ...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

نئين خدمت لاءِ ڪانفيگريشن فائل ٺاهڻ لاءِ، اسان صرف نئين ٽيمپليٽ فائل شامل ڪندا آهيون. موجودگي جي پوائنٽن تي سورس ڪوڊ يا سافٽ ويئر ۾ ڪا به تبديلي جي ضرورت ناهي.

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

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

مواد لکڻ ۾ توهان جي مدد لاء مهرباني. ولان ڊامروڊ, serenheit, نه.

انگريزي ورزن پوسٽ.

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

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