Tarantool ڊيٽا گرڊ جي فن تعمير ۽ صلاحيتون

Tarantool ڊيٽا گرڊ جي فن تعمير ۽ صلاحيتون

2017 ۾، اسان Alfa-Bank جي سيڙپڪاري واري ڪاروبار جي ٽرانزيڪشنل ڪور کي ترقي ڪرڻ لاءِ مقابلو کٽيو ۽ ڪم شروع ڪيو (HighLoad++ 2018 تي هڪ رپورٽ سان گڏ سيڙپڪاري جو ڪاروبار انجام ڏنو Vladimir Drynkin، Alfa بئنڪ جي سيڙپڪاري ڪاروبار جي ٽرانزيڪشنل ڪور جو سربراهه). هن سسٽم کي مختلف ذريعن کان ٽرانزيڪشن ڊيٽا کي مختلف فارميٽ ۾ گڏ ڪرڻ، ڊيٽا کي هڪ متحد فارم ۾ آڻڻ، ان کي ذخيرو ڪرڻ ۽ ان تائين رسائي فراهم ڪرڻ هو.

ترقي جي عمل دوران، سسٽم ترقي ڪئي ۽ ڪارڪردگي حاصل ڪئي، ۽ ڪجهه نقطي تي اسان اهو محسوس ڪيو ته اسان صرف ايپليڪيشن سافٽ ويئر کان وڌيڪ ڪجهه ڪم ڪري رهيا هئاسين جيڪو ڪمن جي سخت وضاحت ڪيل حد کي حل ڪرڻ لاء ٺهيل آهي: اسان ڪامياب ٿي ويا مسلسل اسٽوريج سان ورهايل ايپليڪيشنن جي تعمير لاء سسٽم. جيڪو تجربو اسان حاصل ڪيو اهو هڪ نئين پيداوار جو بنياد بڻيو. Tarantool ڊيٽا گرڊ (TDG).

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

تعميراتي طور تي، اسان سسٽم کي الڳ الڳ ۾ ورهايو ڪردار، جن مان هر هڪ مخصوص مسئلن کي حل ڪرڻ جو ذميوار آهي. ھڪڙي هلندڙ ايپليڪيشن مثال ھڪڙي يا وڌيڪ ڪردار جي قسمن کي لاڳو ڪري ٿو. ھڪڙي ڪلستر ۾ ھڪڙي قسم جا ڪيترائي ڪردار ٿي سگھن ٿا:

Tarantool ڊيٽا گرڊ جي فن تعمير ۽ صلاحيتون

Connector

Connector ٻاهرين دنيا سان رابطي لاء ذميوار آهي؛ ان جو ڪم آهي درخواست کي قبول ڪرڻ، ان کي پارس ڪرڻ، ۽ جيڪڏهن اهو ڪامياب ٿئي ٿو، ته پوءِ ان پٽ پروسيسر کي پروسيسنگ لاءِ ڊيٽا موڪليو. اسان HTTP، SOAP، Kafka، FIX فارميٽ کي سپورٽ ڪريون ٿا. آرڪيٽيڪچر توهان کي صرف نئين فارميٽ لاءِ سپورٽ شامل ڪرڻ جي اجازت ڏئي ٿو، IBM MQ جي مدد سان جلدي اچي رهيو آهي. جيڪڏهن درخواست کي پارس ڪرڻ ۾ ناڪام ٿيو، ڪنيڪٽر هڪ غلطي واپس ڪندو؛ ٻي صورت ۾، اهو جواب ڏيندو ته درخواست ڪاميابيءَ سان عمل ۾ آئي، جيتوڻيڪ ان جي وڌيڪ پروسيسنگ دوران ڪا غلطي ٿي. اهو خاص طور تي ڪيو ويو سسٽم سان ڪم ڪرڻ لاءِ جيڪي نه ٿا ڄاڻن ته درخواستن کي ڪيئن ورجايو - يا، ان جي برعڪس، اهو تمام گهڻو لڳاتار ڪريو. ڊيٽا کي نه وڃائڻ لاء، مرمت جي قطار استعمال ڪئي وئي آهي: اعتراض پهريون ڀيرو ان ۾ داخل ٿئي ٿو ۽ صرف ڪامياب پروسيسنگ کان پوء ان مان هٽايو ويو آهي. منتظم مرمت جي قطار ۾ باقي شين جي باري ۾ الرٽ حاصل ڪري سگهي ٿو، ۽ سافٽ ويئر جي غلطي يا هارڊويئر جي ناڪامي کي ختم ڪرڻ کان پوء، ٻيهر ڪوشش ڪريو.

ان پٽ پروسيسر

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

ھينڊلر فائلن ۾ بيان ڪري سگھجن ٿا:

sum.lua

local x, y = unpack(...)
return x + y

۽ پوء، تشڪيل ۾ اعلان ڪيو:

functions:
  sum: { __file: sum.lua }

ڇو لوا؟ لوا تمام سادي ٻولي آهي. اسان جي تجربي جي بنياد تي، ان کي ڄاڻڻ کان ڪجهه ڪلاڪن بعد، ماڻهو ڪوڊ لکڻ شروع ڪن ٿا جيڪو انهن جو مسئلو حل ڪري ٿو. ۽ اهي نه رڳو پيشه ور ڊولپر آهن، پر، مثال طور، تجزيه نگار. ان کان سواء، جيٽ ڪمپلر جي مهرباني، لوا تمام جلدي هلندو آهي.

اسٽوريج

اسٽوريج مسلسل ڊيٽا کي محفوظ ڪري ٿو. محفوظ ڪرڻ کان پهريان، ڊيٽا ڊيٽا اسڪيما جي خلاف تصديق ڪئي وئي آهي. سرڪٽ کي بيان ڪرڻ لاءِ اسان استعمال ڪريون ٿا وڌايل فارميٽ Apache Avro. مثال:

{
    "name": "User",
    "type": "record",
    "logicalType": "Aggregate",
    "fields": [ 
        { "name": "id", "type": "string"}, 
        {"name": "first_name", "type": "string"}, 
        {"name": "last_name", "type": "string"} 
    ], 
    "indexes": ["id"] 
}

ھن وضاحت جي بنياد تي، ڊي ڊي ايل (ڊيٽا ڊيفينيشن لئنگويج) پاڻمرادو ٺاھي وئي آھي ٽرانٽلا ڊي بي ايم ايس ۽ گرافڪ ڊيٽا جي رسائي لاء اسڪيما.

Asynchronous ڊيٽا نقل ڪرڻ جي حمايت ڪئي وئي آهي (اتي هم وقت سازي کي شامل ڪرڻ جو منصوبو آهي).

آئوٽ پٽ پروسيسر

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

اسڪيلنگ

ڪنيڪٽر، ان پٽ پروسيسر، ۽ آئوٽ پُٽ پروسيسر جا ڪردار غير رياستي آهن، اسان کي اجازت ڏئي ٿو ته سسٽم کي افقي طور تي ماپ ڪري سگھون ٿا صرف نئين ايپليڪيشن مثالن کي شامل ڪندي گهربل ڪردار جي قسم سان. اسٽوريج افقي اسڪيلنگ لاء استعمال ڪيو ويندو آهي هڪ اچڻ مجازي بالٽ استعمال ڪندي ڪلستر کي منظم ڪرڻ لاء. نئون سرور شامل ڪرڻ کان پوءِ، پراڻن سرورن مان ڪجھ بڪيٽ پس منظر ۾ نئين سرور ڏانھن منتقل ڪيا ويا آھن؛ اهو شفاف طور تي صارفين سان ٿئي ٿو ۽ سڄي سسٽم جي آپريشن کي متاثر نٿو ڪري.

ڊيٽا پراپرٽيز

شيون تمام وڏيون ٿي سگھن ٿيون ۽ ٻيون شيون شامل آھن. اسان ڊيٽا کي شامل ڪرڻ ۽ تازه ڪاري ڪرڻ جي ايٽمي کي يقيني بڻايون ٿا هڪ اعتراض کي ذخيرو ڪرڻ سان سڀني انحصار سان هڪ مجازي بالٽ ۾. هي اعتراض کي ڪيترن ئي جسماني سرورن تي "پکڙيل" ٿيڻ کان روڪي ٿو.

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

ڪمن

دلچسپ خاصيتن مان، اهو قابل ذڪر آهي ته ڪمن کي شيڊول تي شروع ڪرڻ جي صلاحيت، صارف جي درخواست تي، يا سينڊ باڪس مان پروگرام سان:

Tarantool ڊيٽا گرڊ جي فن تعمير ۽ صلاحيتون

هتي اسان هڪ ٻيو ڪردار ڏسو - رنر. هي ڪردار بي رياست آهي، ۽ هن ڪردار سان اضافي ايپليڪيشن مثالن کي ڪلستر ۾ شامل ڪري سگهجي ٿو جيئن ضرورت هجي. رنر جي ذميواري ڪمن کي مڪمل ڪرڻ آهي. جيئن ذڪر ڪيو ويو آهي، اهو ممڪن آهي ته سينڊ باڪس مان نوان ڪم پيدا ڪرڻ؛ اهي اسٽوريج تي قطار ۾ محفوظ ڪيا ويا آهن ۽ پوء رنر تي عمل ڪيو ويو آهي. هن قسم جي ڪم کي نوڪري سڏيو ويندو آهي. اسان وٽ ٽاسڪ جو ھڪڙو قسم آھي جنھن کي ٽاسڪ سڏيو ويندو آھي - اھي آھن صارف پاران بيان ڪيل ڪم جيڪي ھڪڙي شيڊول تي ھلندا آھن (ڪرون نحو استعمال ڪندي) يا طلب تي. اهڙن ڪمن کي شروع ڪرڻ ۽ ٽريڪ ڪرڻ لاءِ، اسان وٽ هڪ آسان ٽاسڪ مئنيجر آهي. ھن ڪارڪردگيءَ لاءِ دستياب ٿيڻ لاءِ، توھان کي لازمي طور تي شيڊيولر ڪردار کي فعال ڪرڻ گھرجي؛ هن ڪردار کي هڪ رياست آهي، تنهنڪري اهو پيماني تي نه آهي، جنهن جي، جيتوڻيڪ، گهربل ناهي؛ ساڳئي وقت، ٻين سڀني ڪردارن وانگر، اهو هڪ نقل ٿي سگهي ٿو جيڪو ڪم ڪرڻ شروع ڪري ٿو جيڪڏهن ماسٽر اوچتو انڪار ڪري ٿو.

بوجر

ٻيو ڪردار logger سڏيو ويندو آهي. اهو ڪلستر جي سڀني ميمبرن کان لاگس گڏ ڪري ٿو ۽ انهن کي ويب انٽرفيس ذريعي اپلوڊ ڪرڻ ۽ ڏسڻ لاءِ هڪ انٽرنيٽ مهيا ڪري ٿو.

خدمتون

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

خدمت ترتيب واري فائل ۾ بيان ڪئي وئي آهي:

services:
   sum:
      doc: "adds two numbers"
      function: sum
      return_type: int
      args:
         x: int
         y: int

GraphQL API خودڪار طور تي ٺاهي وئي آهي ۽ خدمت ڪال ڪرڻ لاء دستياب ٿي ويندي آهي:

query {
   sum(x: 1, y: 2) 
}

هي سنڀاليندڙ کي سڏيندو sumجيڪو نتيجو ڏيندو:

3

سوالن جي پروفائلنگ ۽ ميٽرڪس

سسٽم جي آپريشن ۽ پروفائلنگ جي درخواستن کي سمجهڻ لاءِ، اسان OpenTracing پروٽوڪول لاءِ سپورٽ لاڳو ڪئي. سسٽم مطالبو تي معلومات موڪلي سگهي ٿو اوزارن ڏانهن جيڪي هن پروٽوڪول کي سپورٽ ڪن ٿا، جهڙوڪ Zipkin، جيڪو توهان کي اهو سمجهڻ جي اجازت ڏيندو ته درخواست تي عمل ڪيئن ڪيو ويو:

Tarantool ڊيٽا گرڊ جي فن تعمير ۽ صلاحيتون

قدرتي طور تي، سسٽم اندروني ميٽرڪس مهيا ڪري ٿو جيڪا گڏ ڪري سگهجي ٿي Prometheus استعمال ڪندي ۽ گرافانا استعمال ڪندي بصري.

مقرر ڪرڻ

Tarantool ڊيٽا گرڊ کي RPM پيڪيجز يا آرڪائيو مان لڳايو وڃي ٿو، تقسيم يا جوابي مان هڪ يوٽيلٽي استعمال ڪندي، ڪبرنيٽس لاءِ سپورٽ پڻ آهي (Tarantool Kubernetes آپريٽر).

ايپليڪيشن جيڪا ڪاروباري منطق کي لاڳو ڪري ٿي (ترتيب، هينڊلر) ڊيپلائي ٿيل Tarantool ڊيٽا گرڊ ڪلسٽر ۾ UI ذريعي آرڪائيو جي صورت ۾ يا اسان پاران مهيا ڪيل API ذريعي اسڪرپٽ استعمال ڪندي.

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

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

مثال طور، اسان ريئل اسٽيٽ مارڪيٽ جي باري ۾ معلومات گڏ ڪرڻ چاهيون ٿا، ته جيئن مستقبل ۾، مثال طور، اسان وٽ بهترين آڇن بابت معلومات هوندي. انهي حالت ۾، اسان هيٺ ڏنل ڪم کي اجاگر ڪنداسين:

  1. روبوٽ جيڪي کليل ذريعن کان معلومات گڏ ڪندا آهن اهي اسان جي ڊيٽا جا ذريعا هوندا. توھان ھي مسئلو حل ڪري سگھوٿا تيار ٿيل حل استعمال ڪندي يا ڪنھن به ٻوليءَ ۾ ڪوڊ لکڻ.
  2. اڳيون، Tarantool ڊيٽا گرڊ ڊيٽا کي قبول ۽ محفوظ ڪندو. جيڪڏهن مختلف ذريعن کان ڊيٽا فارميٽ مختلف آهي، ته پوءِ توهان Lua ۾ ڪوڊ لکي سگهو ٿا جيڪو هڪ واحد فارميٽ ۾ تبديل ڪندو. پروسيسنگ کان اڳ واري مرحلي ۾، توهان پڻ قابل هوندا، مثال طور، نقل ڪيل آڇون فلٽر ڪرڻ يا اضافي طور تي ڊيٽابيس ۾ مارڪيٽ ۾ ڪم ڪندڙ ايجنٽن بابت معلومات کي اپڊيٽ ڪرڻ.
  3. ھاڻي توھان وٽ اڳ ۾ ئي ھڪڙو اسپيبل حل آھي ھڪڙي ڪلستر ۾ جيڪو ڊيٽا سان ڀريو وڃي ٿو ۽ ڊيٽا جي چونڊ ڪري سگھي ٿو. پوءِ توھان لاڳو ڪري سگھوٿا نئين ڪارڪردگي، مثال طور، ھڪڙي خدمت لکو جيڪا ڊيٽا لاءِ درخواست ڪندي ۽ روزانو سڀ کان وڌيڪ فائدي واري آڇ ڏيندو - ان لاءِ ڪنفيگريشن فائل ۾ ڪجھ لائينون ۽ ٿورڙو لوا ڪوڊ جي ضرورت پوندي.

ايندڙ ڇا آهي؟

اسان جي ترجيح استعمال ڪندي ترقي جي آسانيء کي بهتر ڪرڻ آهي Tarantool ڊيٽا گرڊ. مثال طور، هي هڪ IDE آهي جيڪو هڪ سينڊ باڪس ۾ هلندڙ پروفائلنگ ۽ ڊيبگنگ هينڊلر جي مدد سان آهي.

اسان حفاظت جي مسئلن تي پڻ وڏي ڌيان ڏيون ٿا. هن وقت اسان روس جي FSTEC پاران تصديق ڪري رهيا آهيون اعلي سطحي سيڪيورٽي جي تصديق ڪرڻ ۽ ذاتي ڊيٽا انفارميشن سسٽم ۽ سرڪاري انفارميشن سسٽم ۾ استعمال ٿيندڙ سافٽ ويئر پروڊڪٽس جي سرٽيفڪيشن جي گهرجن کي پورو ڪرڻ لاءِ.

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

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