د ترنټول ډیټا گرډ جوړښت او وړتیاوې

د ترنټول ډیټا گرډ جوړښت او وړتیاوې

په 2017 کې، موږ د الفا بانک د پانګوونې سوداګرۍ د لیږد اصلي اصلي پراختیا لپاره سیالي وګټله او کار یې پیل کړ (په HighLoad++ 2018 کې د پانګوونې سوداګرۍ اصلي راپور سره خبرې وکړې ولادیمیر ډرینکین، د الفا بانک د پانګونې سوداګرۍ د لیږد اصلي مشر). دا سیسټم باید په مختلفو بڼو کې د مختلفو سرچینو څخه د لیږد ډیټا راټول کړي، ډاټا په یو متحد شکل کې راوړي، ذخیره کړي او ورته لاسرسی چمتو کړي.

د پرمختیایي پروسې په جریان کې، سیسټم وده وکړه او فعالیت یې ترلاسه کړ، او په یو وخت کې موږ پوهیږو چې موږ یوازې د غوښتنلیک سافټویر څخه ډیر څه کرسټالیز کوو چې د دندو د سخت تعریف شوي سلسلې حل کولو لپاره رامینځته شوي: موږ بریالي شو. د دوامداره ذخیره کولو سره د توزیع شوي غوښتنلیکونو جوړولو لپاره سیسټم. هغه تجربه چې موږ ترلاسه کړې د نوي محصول اساس جوړوي - د ترنتول ډیټا گرډ (TDG).

زه غواړم د TDG جوړښت او هغه حلونو په اړه وغږیږم چې موږ د پراختیا پروسې په جریان کې راغلي یو، تاسو اصلي فعالیت ته معرفي کړئ او وښیم چې څنګه زموږ محصول د بشپړ حلونو رامینځته کولو اساس کیدی شي.

په معمارۍ کې، موږ سیسټم په جلا جلا ویشلی رولونه، چې هر یو یې د یو لړ ستونزو د حل لپاره مسؤل دی. د یو واحد چلونکي غوښتنلیک مثال د یو یا څو رول ډولونه پلي کوي. په یوه کلستر کې د ورته ډول ډیری رولونه کیدی شي:

د ترنټول ډیټا گرډ جوړښت او وړتیاوې

د نښلونکی

نښلونکی د بهرنۍ نړۍ سره د اړیکو مسولیت لري؛ د دې دنده دا ده چې غوښتنه ومني ، پارس یې کړئ ، او که دا بریالۍ شي ، نو د ان پټ پروسیسر ته د پروسس کولو لپاره ډیټا واستوئ. موږ د HTTP، SOAP، کافکا، FIX فارمیټونو ملاتړ کوو. جوړښت تاسو ته اجازه درکوي په ساده ډول د نوي فارمیټونو لپاره ملاتړ اضافه کړئ ، د IBM MQ ملاتړ سره ژر راځي. که د غوښتنې تحلیل ناکامه شي، نښلونکی به یوه تېروتنه بیرته راولي؛ که نه نو، دا به ځواب ووايي چې غوښتنه په بریالیتوب سره پروسس شوې، حتی که د دې نور پروسس کولو په وخت کې کومه تېروتنه رامنځته شوې وي. دا په ځانګړې توګه د سیسټمونو سره د کار کولو لپاره ترسره شوي چې نه پوهیږي چې څنګه غوښتنې تکرار کړي - یا، برعکس، دا په دوامداره توګه ترسره کړئ. د دې لپاره چې ډاټا له لاسه ورنکړي، د ترمیم کتار کارول کیږي: اعتراض لومړی په هغې کې راځي او یوازې د بریالي پروسس کولو وروسته له هغې څخه لیرې کیږي. مدیر کولی شي د ترمیم په کتار کې د پاتې شیانو په اړه خبرتیا ترلاسه کړي، او د سافټویر غلطی یا هارډویر ناکامۍ له منځه وړلو وروسته، بیا هڅه وکړئ.

د ننوت پروسیسر

د انپټ پروسیسر ترلاسه شوي ډاټا د ځانګړتیاوو له مخې طبقه بندي کوي او مناسب پروسیسرونه غږوي. لاسي کونکي د لوا کوډ دي چې په شګو بکس کې تیریږي، نو دوی نشي کولی د سیسټم په فعالیت اغیزه وکړي. په دې مرحله کې، ډاټا کولی شي اړین شکل ته راټیټ شي، او که اړتیا وي، د دندو یو منظم شمیر پیل کیدی شي چې اړین منطق پلي کړي. د مثال په توګه ، په MDM (ماسټر ډیټا مدیریت) محصول کې چې په ټرنټول ډیټا ګریډ کې جوړ شوی ، کله چې نوی کارونکي اضافه کوي ، د دې لپاره چې د غوښتنې پروسس ورو نه کړي ، موږ د جلا دندې په توګه د طلایی ریکارډ رامینځته کول پیل کوو. سینڈ باکس د معلوماتو لوستلو ، بدلولو او اضافه کولو غوښتنې ملاتړ کوي ، تاسو ته اجازه درکوي د ذخیره کولو ډول او د پایلې راټولولو په ټولو رولونو کې یو څه فعالیت ترسره کړئ (نقشه / کمول).

سمبالونکي په فایلونو کې تشریح کیدی شي:

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"] 
}

د دې توضیحاتو پراساس ، DDL (د ډیټا تعریف ژبه) په اوتومات ډول د ټرانټولا DBMS لپاره رامینځته کیږي او ګراف د معلوماتو د لاسرسي لپاره سکیما.

د غیر متناسب ډیټا نقل ملاتړ شوی (د همغږي اضافه کولو پلانونه شتون لري).

د تولید پروسیسر

ځینې ​​​​وختونه دا اړینه ده چې بهرني مصرف کونکو ته د نوي ډیټا د رسیدو په اړه خبر ورکړئ؛ د دې هدف لپاره ، د آوټ پټ پروسیسر رول شتون لري. د معلوماتو خوندي کولو وروسته ، دا اړونده هینډلر ته لیږدول کیدی شي (د مثال په توګه ، دا د پیرودونکي لخوا اړین فارم ته راوړل) - او بیا د لیږلو لپاره نښلونکي ته لیږدول کیدی شي. دلته د ترمیم کتار هم کارول کیږي: که هیڅوک اعتراض ونه مني، مدیر کولی شي وروسته بیا هڅه وکړي.

اندازه کول

نښلونکی، ان پټ پروسیسر، او د محصول پروسیسر رولونه بې بنسټه دي، موږ ته اجازه راکوي چې سیسټم په افقی ډول اندازه کړو په ساده ډول د غوښتل شوي رول ډول فعالولو سره د نوي غوښتنلیک مثالونه اضافه کولو سره. ذخیره د افقی اندازه کولو لپاره کارول کیږي یوه روش د مجازی بالټونو په کارولو سره د کلستر تنظیم کول. د نوي سرور اضافه کولو وروسته، د پخوانیو سرورونو څخه ځینې بالټونه په شالید کې نوي سرور ته لیږدول کیږي؛ دا د کاروونکو لپاره په شفاف ډول پیښیږي او د ټول سیسټم عملیات اغیزه نه کوي.

د ډاټا ملکیتونه

توکي کیدای شي ډیر لوی وي او نور شیان ولري. موږ په یوه مجازی بالټ کې د ټولو انحصارونو سره د اعتراض ذخیره کولو سره د ډیټا اضافه کولو او تازه کولو اتوميتیا تضمین کوو. دا اعتراض د ډیری فزیکي سرورونو په اوږدو کې د "پریال" کیدو مخه نیسي.

نسخه ملاتړ کیږي: د یو څیز هر تازه کول یوه نوې نسخه رامینځته کوي ، او موږ کولی شو تل د وخت ټوټه واخلو او وګورو چې نړۍ هغه وخت څنګه ښکاري. د ډیټا لپاره چې اوږد تاریخ ته اړتیا نلري، موږ کولی شو د نسخو شمیر محدود کړو یا حتی یوازې یو ذخیره کړو - وروستی یو - دا دی، د یو ځانګړي ډول لپاره د نسخه کول غیر فعال کړي. تاسو کولی شئ د وخت په واسطه تاریخ هم محدود کړئ: د مثال په توګه ، د یو ځانګړي ډول ټول توکي له 1 کال څخه زاړه حذف کړئ. آرشیف کول هم ملاتړ کیږي: موږ کولی شو له ټاکل شوي وخت څخه زاړه شیان پورته کړو، په کلستر کې ځای خالي کړو.

دندې

په زړه پورې ځانګړتیاو کې، دا د یادولو وړ ده چې په مهال ویش کې د دندو پیل کولو وړتیا، د کاروونکي په غوښتنه، یا په پروګرام کې د سینڈ باکس څخه:

د ترنټول ډیټا گرډ جوړښت او وړتیاوې

دلته موږ بل رول ګورو - رنر. دا رول بې ریاسته دی، او د دې رول سره اضافي غوښتنلیک مثالونه په کلستر کې د اړتیا سره سم اضافه کیدی شي. د رنر مسؤلیت د دندو بشپړول دي. لکه څنګه چې یادونه وشوه، دا ممکنه ده چې د سینڈ باکس څخه نوي دندې رامینځته کړئ؛ دوی د ذخیره کولو په کتار کې خوندي شوي او بیا په رنر کې اعدام شوي. دې ډول دندې ته دنده ویل کیږي. موږ د ټاسک په نوم د دندې ډول هم لرو - دا د کارونکي لخوا ټاکل شوي دندې دي چې په مهالویش کې پرمخ ځي (د کرون ترکیب په کارولو سره) یا د غوښتنې پراساس. د داسې کارونو د پیل او تعقیب لپاره، موږ یو مناسب کاري مدیر لرو. د دې لپاره چې دا فعالیت شتون ولري، تاسو باید د مهالویش رول فعال کړئ؛ دا رول یو دولت لري، نو دا اندازه نه کوي، په هرصورت، اړتیا نلري؛ په ورته وخت کې، د نورو ټولو رولونو په څیر، دا کولی شي یو نقل ولري چې کار پیل کوي که چیرې ماسټر ناڅاپه انکار وکړي.

لوګر

بل رول د لوګر په نوم یادیږي. دا د کلستر ټولو غړو څخه لاګونه راټولوي او د ویب انٹرفیس له لارې یې د پورته کولو او لیدو لپاره انٹرفیس چمتو کوي.

خدمتونه

دا د یادولو وړ ده چې سیسټم د خدماتو رامینځته کول اسانه کوي. د ترتیب کولو فایل کې، تاسو کولی شئ مشخص کړئ چې کومې غوښتنې د کارونکي لخوا لیکل شوي هینډلر ته لیږل کیږي چې په سینڈ باکس کې تیریږي. په دې هینډلر کې، تاسو کولی شئ، د بیلګې په توګه، یو ډول تحلیلي پوښتنې پرمخ وړئ او پایله یې بیرته راوړئ.

خدمت د ترتیب کولو فایل کې تشریح شوی:

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

د ګراف کیو ایل API په اوتومات ډول رامینځته کیږي او خدمت د زنګ وهلو لپاره شتون لري:

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

دا به سمبالونکي ته زنګ ووهي sumکوم چې پایله به بیرته راولي:

3

د پوښتنې پروفایل او میټریکونه

د سیسټم عملیات او د پروفایل کولو غوښتنو پوهیدو لپاره، موږ د OpenTracing پروتوکول ملاتړ پلي کړ. سیسټم کولی شي د غوښتنې په اړه معلومات وسیلو ته واستوي چې د دې پروتوکول ملاتړ کوي، لکه Zipkin، کوم چې تاسو ته اجازه درکوي پوه شئ چې غوښتنه څنګه اجرا شوې:

د ترنټول ډیټا گرډ جوړښت او وړتیاوې

په طبیعي توګه، سیسټم داخلي میټریکونه چمتو کوي چې د پرومیتیوس په کارولو سره راټول کیدی شي او د ګرافانا په کارولو سره لیدل کیدی شي.

ګمارل

د ترانتول ډیټا گرډ د RPM کڅوړو یا آرشیف څخه ځای په ځای کیدی شي ، د توزیع یا ځواب ورکولو څخه د یوټیلټي په کارولو سره ، د کوبرنیټس لپاره هم ملاتړ شتون لري (د ترانتول کبرنیټس آپریټر).

هغه غوښتنلیک چې د سوداګرۍ منطق پلي کوي (تشکیلات، سمبالونکي) د ګمارل شوي ټرانټول ډیټا ګریډ کلستر کې د UI له لارې د آرشیف په بڼه یا زموږ لخوا چمتو شوي API له لارې د سکریپټ په کارولو سره بار شوي.

د نمونې غوښتنلیکونه

کوم غوښتنلیکونه د Tarantool Data Grid په کارولو سره رامینځته کیدی شي؟ په حقیقت کې، ډیری سوداګریزې دندې په یو ډول د پروسس کولو، ذخیره کولو او د معلوماتو جریان ته لاسرسي پورې تړاو لري. له همدې امله ، که تاسو د ډیټا لوی جریان لرئ چې په خوندي ډول زیرمه کولو او لاسرسي ته اړتیا لرئ ، نو زموږ محصول کولی شي ستاسو د پراختیا ډیر وخت خوندي کړي او ستاسو د سوداګرۍ منطق باندې تمرکز وکړي.

د مثال په توګه، موږ غواړو د املاکو بازار په اړه معلومات راټول کړو، ترڅو په راتلونکي کې، د مثال په توګه، موږ به د غوره وړاندیزونو په اړه معلومات ولرو. پدې حالت کې، موږ به لاندې دندې په ګوته کړو:

  1. هغه روبوټونه چې د خلاصو سرچینو څخه معلومات راټولوي زموږ د معلوماتو سرچینې وي. تاسو کولی شئ دا ستونزه د چمتو شوي حلونو یا په هره ژبه کې د لیکلو کوډ په کارولو سره حل کړئ.
  2. بل، د ترنټول ډیټا گرډ به ډاټا ومني او خوندي کړي. که چیرې د مختلفو سرچینو څخه د معلوماتو بڼه توپیر ولري، نو تاسو کولی شئ په لوا کې کوډ ولیکئ چې یو واحد ب formatه ته تبادله ترسره کړي. د پروسس کولو دمخه مرحله کې، تاسو به د دې وړتیا هم ولرئ، د بیلګې په توګه، د نقل وړاندیزونه فلټر کړئ یا په ډیټابیس کې په بازار کې د کار کولو اجنټانو په اړه معلومات تازه کړئ.
  3. اوس تاسو دمخه په کلستر کې د توزیع وړ حل لرئ چې د ډیټا څخه ډک کیدی شي او د ډیټا انتخابونه کولی شي. بیا تاسو کولی شئ نوي فعالیت پلي کړئ ، د مثال په توګه ، یو خدمت ولیکئ چې د ډیټا لپاره غوښتنه وکړي او هره ورځ خورا ګټور وړاندیز ورکړي - دا به د تنظیم کولو فایل کې یو څو لینونو او یو څه لوا کوډ ته اړتیا ولري.

څه راتلونکو؟

زموږ لومړیتوب دا دی چې د پراختیا اسانتیا په کارولو سره وده ومومي د ترنتول ډیټا گرډ. د مثال په توګه، دا یو IDE دی چې د پروفایل کولو او ډیبګ کولو هینډلرونو لپاره ملاتړ کوي چې په سینڈ باکس کې روان دي.

موږ د خوندیتوب مسلو ته هم ډیره پاملرنه کوو. همدا اوس موږ د روسیې د FSTEC لخوا تصدیق کوو ترڅو د لوړې کچې امنیت تایید کړي او د شخصي معلوماتو معلوماتو سیسټمونو او دولتي معلوماتو سیسټمونو کې کارول شوي سافټویر محصولاتو تصدیق کولو اړتیاوې پوره کړي.

سرچینه: www.habr.com

Add a comment