RabbitMQ. 1 برخه. پیژندنه. ایرلنګ، AMQP

ماسپښین ښه، حبر! زه غواړم د درسي کتاب - د پوهې د حوالې کتاب شریک کړم چې ما یې په راټولولو اداره کړ RabbitMQ او په لنډو سپارښتنو او نتیجو کې راټولیږي.

فهرست

  • RabbitMQ. 1 برخه. پیژندنه. Erlang، AMQP او RPC
  • RabbitMQ. برخه 2. د تبادلې پوهه
  • RabbitMQ. دریمه برخه. د قطارونو او بندیزونو پوهیدل
  • RabbitMQ. 4 برخه. پوهیدل چې پیغامونه او چوکاټونه څه دي
  • RabbitMQ. پنځمه برخه: د پیغام خپرول او مصرف کول
  • RabbitMQ. 6 برخه. د فدراسیون او شاول ماډلونو عمومي کتنه
  • RabbitMQ. برخه 7. د ارتباط او چینل په اړه توضیحات
  • RabbitMQ. 8 برخه. په .NET کې RabbitMQ
  • RabbitMQ. 9 برخه. څارنه

په لنډه توګه د AMQP په اړه

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

پروتوکول AMQP درې مفهومونه معرفي کوي:

RabbitMQ. 1 برخه. پیژندنه. ایرلنګ، AMQP

  • exchange (د تبادلې نقطه یا تبادله) - پیغامونه ورته لیږل کیږي. د تبادلې نقطه پیغام توزیع کوي په یو یا ډیرو کتارونو کې. هغې پیغامونه کتار ته رسوي د جوړ شوي لینکونو پر بنسټ (binding) د هغه او کتار ترمنځ
  • queue (قطار) - په ډیسک یا په رام کې د معلوماتو جوړښت د پیغامونو لینکونه ذخیره کوي او د پیغامونو کاپي ورکوي consumers (د پیرودونکو لپاره)
  • binding ( پابند) - یو قاعده چې د تبادلې نقطې ته وایي چې دا پیغامونه باید کوم کتار ته لاړ شي

پروتوکول په سر کې تیریږي TCP / IP.

په لنډه توګه د Erlang په اړه

د پروژې سرچینې کوډ په ذخیره کې دی GitHub. معمارۍ RabbitMQ-سرور پر بنسټ ایرلینګ او BEAM.

Erlang د شرکت لخوا رامینځته شوی Ericsson د 1980s په مینځ کې د توزیع شوي ، خطا زغمونکي ، ریښتیني وخت سیسټم په توګه د غوښتنلیکونو لپاره چې 99,999٪ اپټایم ته اړتیا لري. Erlang په مختلفو صنعتونو او عصري غوښتنلیکونو کې کارول کیږي، د بیلګې په توګه WhatsApp. تاسو کولی شئ په مقاله کې نور ولولئ د WhatsApp جوړښت، کوم چې فیسبوک په 19 ملیارد ډالرو پیرودلی

په لنډه توګه د RabbitMQ په اړه

RabbitMQ د خلاصې سرچینې پیغام بروکر دی. دا د پروتوکول ټولو اساسي اصولو سره پیغامونه لیږدوي AMQP کې تشریح شوی مشخصات. RabbitMQ پروتوکول پلي کوي او بشپړوي AMQP.

په کې د پیغام رسولو ماډل اصلي مفکوره RabbitMQ خبره ده producer (نشر) په مستقیم ډول کتار ته پیغامونه نه لیږي. په حقیقت کې، او ډیری وختونه، خپرونکی حتی نه پوهیږي چې ایا پیغام به کوم کتار ته وسپارل شي.

پرځای یې، خپرونکی کولی شي یوازې تبادلې ته پیغامونه واستوي. له یوې خوا، تبادله د خپرونکو څخه پیغامونه ترلاسه کوي، او له بلې خوا، دوی قطارونو ته لیږي. تبادله باید په سمه توګه پوه شي چې د هغه پیغام سره څه وکړي چې دا ترلاسه کوي. ایا دا باید په ځانګړي کتار کې اضافه شي؟ ایا دا باید په څو کتارونو کې اضافه شي؟ یا پیغام باید له پامه غورځول شي.

RabbitMQ. 1 برخه. پیژندنه. ایرلنګ، AMQP

لنډ کار RabbitMQ په لاندې ډول تشریح کیدی شي:

  1. خپرونکی یو ځانګړي تبادلې ته پیغام لیږي
  2. یو تبادله، د پیغام ترلاسه کولو سره، دا د هغې او کتار ترمنځ د پابند قواعدو سره سم یو یا ډیرو کتارونو ته رسوي
  3. قطار دې پیغام ته یوه حواله ذخیره کوي. پیغام پخپله په RAM یا ډیسک کې زیرمه شوی
  4. یوځل چې پیرودونکي د قطار څخه پیغام ترلاسه کولو لپاره چمتو وي ، سرور د لینک له لارې د پیغام یوه کاپي رامینځته کوي او لیږي.
  5. پیرودونکي پیغام ترلاسه کوي او بروکر ته تایید لیږي
  6. بروکر، د تایید په ترلاسه کولو سره، د پیغام یوه کاپي له کتار څخه لیرې کوي. بیا له رام او ډیسک څخه حذف کیږي

RPC

پروسه RPC (د لرې پروسیجر کال) د نیوکلیوس سره نږدې ټول تعاملات لاندې لري RabbitMQ. د بیلګې په توګه، د مراجعینو سره د شرایطو په اړه ابتدايي خبرې اترې RabbitMQ، یو مشخص بهیر څرګندوي RPC. کله چې دا لړۍ بشپړه شي، RabbitMQ د پیرودونکي غوښتنې منلو ته به چمتو وي:

RabbitMQ. 1 برخه. پیژندنه. ایرلنګ، AMQP

همدارنګه په مشخصاتو کې AMQP پیرودونکي او سرور دواړه کولی شي حکمونه صادر کړي. دا پدې مانا ده چې پیرودونکي د سرور سره خبرو اترو ته انتظار باسي. کمانډونه ټولګي او میتودونه دي. د مثال په ډول، Connection.Start - د تلیفون طریقه Start کلونه Connection.

ارتباط او چینلونه

د مراجعینو او سرور ترمنځ د دې ډول معلوماتو تبادلې لپاره، چینلونه. چینلونه دننه جوړ شوي دي ځانګړې اړیکه. هر چینل د نورو چینلونو څخه جلا دی. په همغږي قضیه کې، دا ممکنه نده چې راتلونکی کمانډ اجرا کړئ تر هغه چې ځواب ترلاسه نشي.

د دې لپاره چې په موازي ډول د امرونو لیږلو وړتیا ولرئ، تاسو باید ډیری چینلونه پرانیزئ. هر چینل جلا جلا جوړوي Erlang پروسه یوه اړیکه کولی شي څو چینلونه ولري (ملټي پلیکسینګ). د هر چینل لپاره په حافظه کې ځینې جوړښتونه او توکي شتون لري. له همدې امله، هرڅومره چینلونه چې په اړیکه کې وي، د RabbitMQ ډیر حافظه کاروي د داسې اړیکې اداره کول.

RabbitMQ. 1 برخه. پیژندنه. ایرلنګ، AMQP

په کارولو سره د ارتباط او چینل رامینځته کولو ساده مثال RabbitMQ.Client:

// ...
private void TryConnect()
{
    var factory = new ConnectionFactory() 
    {
        HostName = "host_name",
        UserName = "user_name",
        Password = "p@ssword",
        // Включение автоматичекого восстановления
        // соединения после сбоев сети 
        AutomaticRecoveryEnabled = true
    };
    _connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
    _channel = _connection.CreateModel();
    // other options 
}

د هر عملیات لپاره د نوي پیوستون پرانیستل په کلکه د دې په څیر هڅول کیږي د لوړ لګښت لامل شي. چینلونه هم باید دوامداره وي، مګر ډیری پروتوکول غلطۍ د دې سبب کیږي چې چینل بند شي، نو د چینل ژوند ممکن د ارتباط په پرتله لنډ وي.

RabbitMQ چیرته کارول کیږي؟

د مایکرو خدماتو په شرایطو کې، پروتوکول AMQP او د هغې تطبیق په کې RabbitMQ اکثرا لپاره کارول کیږي غیر متناسب تعامل د خدماتو ترمنځ.

په شرایطو کې IIOT پروتوکول AMQP او د هغې تطبیق په کې RabbitMQ د سرورونو (سرور-سرور) ترمنځ د معلوماتو تبادلې لپاره کارول کیږي. پلگ ان هم وکاروئ د MQTT پلگ ان RabbitMQ کوم چې د پروتوکول پلي کول دي ايم سي ټي ټي د ټیټ سرعت، لوړ ځنډ چاپیریال کې د سینسر او سرور ترمنځ د معلوماتو لیږدولو لپاره (د ملاتړ شوي پروتوکولونو بشپړ لیست په کې لیست شوی دی. د پروژې ویب پاڼه).

په راتلونکې مقاله کې به موږ په ډیر تفصیل سره د تبادلې په پوهیدو پیل وکړو.

مرجع

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

Add a comment