RabbitMQ. حصو 1. تعارف. ارلنگ، AMQP

صبح جو سلام، حبر! مان هڪ درسي ڪتاب- حوالو ڏيڻ وارو علم وارو ڪتاب شيئر ڪرڻ چاهيان ٿو جيڪو مون گڏ ڪرڻ جو انتظام ڪيو RabbitMQ ۽ مختصر سفارشن ۽ نتيجن ۾ گھٽائي.

مضمونن جو جدول

  • RabbitMQ. حصو 1. تعارف. Erlang، AMQP ۽ RPC
  • RabbitMQ. حصو 2. سمجھڻ واري ايڪسچينج
  • RabbitMQ. حصو 3. قطارن ۽ پابندن کي سمجھڻ
  • RabbitMQ. حصو 4. سمجھڻ ته ڇا پيغام ۽ فريم آھن
  • RabbitMQ. حصو 5: اشاعت ۽ پيغام پهچائڻ جي ڪارڪردگي
  • RabbitMQ. حصو 6. فيڊريشن ۽ شوول ماڊلز جو جائزو
  • RabbitMQ. حصو 7. ڪنيڪشن ۽ چينل بابت تفصيل
  • RabbitMQ. حصو 8. RabbitMQ in .NET
  • RabbitMQ. حصو 9. مانيٽرنگ

AMQP بابت مختصر طور

AMQP (Advanced Message Queuing Protocol) ھڪ کليل پروٽوڪول آھي جيڪو سسٽم جي اجزاء جي وچ ۾ پيغامن کي منتقل ڪرڻ لاءِ. بنيادي خيال اهو آهي ته انفرادي سبسسٽم (يا آزاد ايپليڪيشنون) هڪ AMQP بروکر جي ذريعي هڪ خودمختيار طريقي سان پيغامن جي بدلي ڪري سگهن ٿا، جيڪو روٽنگ انجام ڏئي ٿو، ممڪن طور تي پهچائڻ جي ضمانت ڏئي ٿو، ڊيٽا اسٽريمز کي ورهائي ٿو، ۽ گهربل پيغام جي قسمن جي رڪنيت حاصل ڪري ٿو.

پروٽوڪول AMQP ٽن تصورن کي متعارف ڪرايو:

RabbitMQ. حصو 1. تعارف. ارلنگ، AMQP

  • exchange (Exchange point or exchange) - پيغام ان ڏانهن موڪليا ويا آهن. مٽاسٽا پوائنٽ پيغام ورهائي ٿو هڪ يا وڌيڪ قطار ۾. هوءَ رستا پيغامن کي قطار ڏانهن ٺاهيل لنڪ جي بنياد تي (binding) هن ۽ قطار جي وچ ۾
  • queue (قطار) - ڊسڪ تي يا رام ۾ ڊيٽا جي جوڙجڪ جيڪا پيغامن جي لنڪ محفوظ ڪري ٿو ۽ پيغامن جون ڪاپيون ڏئي ٿو consumers (صارفين ڏانهن)
  • binding (پابند) - هڪ ضابطو جيڪو تبادلي واري نقطي کي ٻڌائي ٿو ته انهن پيغامن کي ڪهڙي قطار ۾ وڃڻ گهرجي

پروٽوڪول مٿي تي هلندو آهي TCP / IP.

مختصر طور Erlang جي باري ۾

پروجيڪٽ جو سورس ڪوڊ ريپوزٽري ۾ آهي GitHub. آرڪيٽيڪچر RabbitMQ-سرور تي مبني ارلانگ ۽ بيم.

Erlang ڪمپني پاران ترقي ڪئي وئي Ericsson 1980s جي وچ ۾ ورهايل، غلطي برداشت ڪندڙ، حقيقي وقت واري نظام جي طور تي ايپليڪيشنن لاءِ 99,999٪ اپ ٽائم جي ضرورت آهي. Erlang مختلف صنعتن ۽ جديد ايپليڪيشنن ۾ استعمال ٿيل، مثال طور WhatsApp. توهان مضمون ۾ وڌيڪ پڙهي سگهو ٿا WhatsApp آرڪيٽيڪچر، جنهن کي فيسبوڪ $ 19 بلين ۾ خريد ڪيو

RabbitMQ بابت مختصر طور

رباب ايم هڪ کليل ذريعو پيغام بروکر آهي. اهو پروٽوڪول جي سڀني بنيادي اصولن سان گڏ پيغام رستا آهي ايم پي پي ۾ بيان ڪيو ويو آهي وضاحتون. RabbitMQ پروٽوڪول کي لاڳو ڪري ٿو ۽ اضافي ڪري ٿو AMQP.

۾ پيغام جي ماڊل جو مکيه خيال RabbitMQ شيء آهي producer (پبلشر) سڌو سنئون قطار ۾ پيغام نه موڪليندو آهي. حقيقت ۾، ۽ اڪثر ڪري، پبلشر کي به خبر ناهي ته پيغام ڪنهن به قطار تائين پهچايو ويندو.

ان جي بدران، پبلشر صرف مٽائي ڏانهن پيغام موڪلي سگهي ٿو. هڪ طرف، مٽاسٽا پبلشرز کان پيغام وصول ڪري ٿي، ۽ ٻئي طرف، اهو انهن کي قطار ۾ موڪلي ٿو. مٽا سٽا کي ضرور ڄاڻڻ گهرجي ته ان کي حاصل ڪيل پيغام سان ڇا ڪجي. ڇا ان کي مخصوص قطار ۾ شامل ڪيو وڃي؟ ڇا ان کي گھڻن قطارن ۾ شامل ڪيو وڃي؟ يا پيغام کي نظر انداز ڪيو وڃي.

RabbitMQ. حصو 1. تعارف. ارلنگ، AMQP

مختصر ڪم RabbitMQ هن ريت بيان ڪري سگهجي ٿو:

  1. پبلشر هڪ مخصوص مٽاسٽا ڏانهن پيغام موڪلي ٿو
  2. هڪ مٽا سٽا، هڪ پيغام وصول ڪرڻ بعد، ان کي هڪ يا وڌيڪ قطارن ڏانهن روانو ڪري ٿو ان جي ۽ قطار جي وچ ۾ پابند قاعدن جي مطابق
  3. قطار هن پيغام جو حوالو محفوظ ڪري ٿو. پيغام پاڻ کي RAM يا ڊسڪ ۾ محفوظ ڪيو ويو آهي
  4. هڪ دفعو صارف قطار مان پيغام حاصل ڪرڻ لاء تيار آهي، سرور لنڪ ذريعي پيغام جي ڪاپي ٺاهي ٿو ۽ موڪلي ٿو
  5. صارف پيغام وصول ڪري ٿو ۽ بروکر کي تصديق موڪلي ٿو
  6. بروکر، تصديق حاصل ڪرڻ تي، قطار مان پيغام جي ڪاپي ڪڍي ٿو. پوءِ ريم ۽ ڊسڪ مان ڊليٽ ڪري ٿو

آر پي سي

عمل 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 ڪٿي استعمال ٿيندو آهي؟

microservices جي حوالي سان، پروٽوڪول AMQP ۽ ان تي عمل درآمد RabbitMQ اڪثر لاء استعمال ڪيو ويندو آهي هم وقت سازي رابطي خدمتن جي وچ ۾.

جي حوالي سان IIOT پروٽوڪول AMQP ۽ ان تي عمل درآمد RabbitMQ سرور جي وچ ۾ ڊيٽا مٽائڻ لاء استعمال ڪيو ويو (سرور-سرور). پلگ ان پڻ استعمال ڪريو MQTT پلگ ان RabbitMQ جيڪو پروٽوڪول جو نفاذ آهي ايم ڊي ٽي ٽي سينسر ۽ سرور جي وچ ۾ ڊيٽا کي منتقل ڪرڻ لاء گھٽ رفتار، تيز ويڪرائي ماحول ۾ (سپورٽ پروٽوڪولن جي مڪمل فهرست ڏنل آھي منصوبي جي ويب سائيٽ).

ايندڙ آرٽيڪل ۾ اسان ايڪسچينج کي وڌيڪ تفصيل سان سمجهڻ شروع ڪنداسين.

حوالن

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

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