متن خبر

نحوه پیاده سازی صف های پیام در برنامه های Backend خود

نحوه پیاده سازی صف های پیام در برنامه های Backend خود

شناسهٔ خبر: 695352 -




هدف هر توسعه دهنده وب ایجاد محصولی است که برای طیف وسیعی از کاربران جذاب باشد. با این حال، این با مشکلات خود همراه است، که مهمترین آنها مسائل مقیاس پذیری برای برآورده کردن نیازهای کاربران است.

در صورت عدم رسیدگی، این امر می‌تواند منجر به اختلال در ارتباط بین سرویس‌ها شود و اقداماتی را که برای اطمینان از تراکنش‌های منظم پایگاه داده انجام می‌شود، شکست دهد. اما خدا را شکر، ما کارگزاران پیامی برای نجات داریم.

در این مقاله، اهمیت صف پیام را به عنوان بهترین روش برای توسعه بک‌اند، موارد استفاده مرتبط و ابزارهای صف‌بندی پیام محبوب و نحوه پیاده‌سازی صف پیام در برنامه‌های باطنی برجسته می‌کنیم.

در اینجا برخی از پیش نیازهایی که می توانید در این مقاله دنبال کنید آورده شده است:

آشنایی با Node.js

آشنایی با معماری میکروسرویس ها

صف پیام چیست؟

در سیستم های توزیع شده، چندین درخواست و صف در یک زمان ارسال می شود. مفهوم صف پیام، ذخیره سازی پیام ها را به شیوه ای منظم امکان پذیر می کند و به گیرندگان این پیام ها و درخواست ها اجازه می دهد تا آنها را بر اساس آن پردازش کنند.

به صورت ناهمزمان عمل می‌کند و امکان عملکرد مستقل اجزای مختلف یک سیستم توزیع‌شده را فراهم می‌کند. وجود این‌ها تضمین می‌کند که پیام‌های ارسال شده به گیرنده در نهایت بدون توجه به خرابی سیستم، مورد توجه قرار می‌گیرند. پیام ها تا زمانی که تایید شوند به طور ایمن ذخیره می شوند.

موارد استفاده مرتبط کارگزاران پیام

در اینجا برخی از موارد استفاده واقعی کارگزاران پیام آورده شده است.

آنها به طور فعال در برنامه های فین تک مدرن استفاده می شوند تا از اجرای یکپارچه و منظم و پردازش تراکنش های مالی انجام شده در برنامه اطمینان حاصل کنند. این به جلوگیری از اضافه بار سرور و خطاهای تراکنش کمک می کند.

صف پیام در برنامه‌های اعلان‌های روزانه ما نیز استفاده می‌شود و از دریافت زودهنگام اعلان‌های ارسالی از سایر سرویس‌ها اطمینان می‌دهد. این به گیرنده این امکان را می دهد تا به آن اعلان ها علیرغم زمانی که ارسال شده اند یا زمانی که گیرنده به برنامه اعلان دسترسی پیدا می کند، دسترسی داشته باشد.

همچنین در بازارهای مالی برای اجرای یکپارچه و کارآمد سفارشات مالی در حال انجام استفاده می شود. استفاده های دیگر از این ویژگی در جریان رسانه و صنعت مراقبت های بهداشتی دیده می شود.

در پاراگراف بعدی، در مورد ابزارهایی که آپشن های صف پیام را ارائه می‌دهند، بیشتر بحث خواهیم کرد.

طیف گسترده ای از برنامه ها و خدمات ویژگی های صف پیام را ارائه می دهند. برخی از این خدمات در ارائه دهندگان زیرساخت ابری تجاری تعبیه شده اند. در اینجا فهرست ی از برخی از خدمات متداول صف بندی پیام وجود دارد:

RabbitMQ

آپاچی کافکا

ردیس

آمازون SQS

Google Cloud Pub/sub

NATS

تپ اختر

IBM MQ

ما از یک برنامه Rabbit MQ Cloud-as-a-service برای تقویت پیام های خود به دلیل محبوبیت و سهولت استفاده آن استفاده خواهیم کرد. در اینجا یک پیوند به مستندات است. همچنین می توانید سایر برنامه های صف پیام ارائه شده در بالا را تحلیل کنید.

در مرحله بعد، یک پروژه آزمایشی ایجاد می کنیم که از ویژگی های صف پیام استفاده می کند.

پروژه نمایشی

در این پروژه، ما از Rabbit MQ به عنوان یک پلتفرم ابری خدماتی برای ساختن یک سیستم واسطه پیام ساده استفاده خواهیم کرد که امکان ارتباط یکپارچه و منظم بین دو سرور Node.js را فراهم می کند.

در این آموزش، یک ناشر پیام ایجاد می کنیم که به عنوان فرستنده عمل می کند، و یک مصرف کننده پیام که پیام ها را دریافت می کند.

برای شروع، ما باید هر دو سرور Node.js را ایجاد کنیم که با یکدیگر در ارتباط باشند.

می توانید دو فایل مختلف ایجاد کنید و با استفاده از npm init یک پروژه Node را مقداردهی اولیه کنید.

پس از آن، می توانید بسته های مربوطه را نصب کنید که به اجرای ویژگی ها کمک می کند. ما از کتابخانه amqplib ، یک پیاده سازی کتابخانه Node برای Rabbit MQ استفاده خواهیم کرد.

این بسته به ما امکان می دهد تا از طریق برنامه Node.js به سرعت با RabbitMQ ارتباط برقرار کنیم. این یکپارچه به دلیل عملکردهای داخلی خود برای ایجاد صف، انتشار پیام و مصرف پیام به این امر دست می یابد. جزئیات بیشتر در مورد استفاده از آن بعداً مورد بحث قرار خواهد گرفت.

برای نصب آن در پروژه ما، لطفاً اجرا کنید:

 npm i amqplib

تابع انتشار اکنون پیش نویس خواهد شد. پس از آن، ما باید amqplib در پروژه خود مقداردهی کنیم.

 const amp = require (“amqplib”)

همچنین، ما باید کارگزار RabbitMQ خود را راه اندازی کنیم که پیام های ما را مدیریت می کند.

راه‌های مختلفی برای ایجاد سرورهای RabbitMQ وجود دارد که محبوب‌ترین آنها نصب آنها بر روی رایانه خانگی و سپس تنظیم آنها برای تعامل با سرورهای باطن است. می توانید نرم افزار را از اینجا دانلود کنید. با این حال، برای سهولت استفاده، ما از یک کارگزار RabbitMQ مبتنی بر ابر به عنوان یک برنامه خدماتی برای تولید سرور خود استفاده خواهیم کرد.

برای انجام این کار، لطفاً به https://www.cloudamqp.com/ بروید و یک حساب کاربری ایجاد کنید. برای این آموزش، یک نمونه ایجاد شد و در نزدیکترین منطقه به من پیکربندی شد. با ایجاد موفقیت آمیز نمونه، جزئیات Rabbit MQ در دسترس خواهد بود.

صفحه اصلی CloudAMQP

ایجاد یک نمونه رایگان در CloudAMQP

جزئیات نمونه رایگان ایجاد شده است

در ادامه، یک صف پیام ایجاد می کنیم که در آن هر دو طرف می توانند به عنوان خط لوله اتصال استفاده کنند. ما با ایجاد یک تابع برای ارسال پیام شروع خواهیم کرد.

 async function sendMessage ( msg ) { try { const connection = await amqp.connect(url); const channel = await connection.createChannel(); await channel.assertQueue(queue); await channel.sendToQueue(queue, Buffer.from(msg));

در کد بالا، یک اتصال تضمین و حفظ شد. پس از آن، یک کانال ارتباطی نیز ایجاد شد. سپس تابع صف ادعا هنگام اجرا اعلام می شود و اطمینان حاصل می شود که صف موجود حفظ می شود و در صورت عدم وجود صف ایجاد می کند.

پیام پیوست شده به تابع بافر می شود و سپس به صف ایجاد شده ارسال می شود.

 async function receiveMessage ( ) { try { const connection = await amqp.connect(url); const channel = await connection.createChannel(); await channel.assertQueue(queue); await channel.consume(queue, ( msg ) => { console .log( `Received message: ${msg.content.toString()} ` ); channel.ack(msg); });

تابع گیرنده نیز برای دریافت هر پیامی که وارد صف می شود با اجرای روش مصرف در صف دقیق اجرا می شود. در مورد ما، پیام به عنوان یک پیام گزارش خروجی می شود.

اکنون تابع ack برای تایید پیام دریافتی از صف اجرا می شود.

اینم کد کامل پروژه:

 const amqp = require ( "amqplib" ); const url = "amqp://localhost" ; // Replace with your RabbitMQ server URL const queue = "queue" ; async function receiveMessage ( ) { try { const connection = await amqp.connect(url); const channel = await connection.createChannel(); await channel.assertQueue(queue); await channel.consume(queue, ( msg ) => { if (msg !== null ) { console .log( `Received message: ${msg.content.toString()} ` ); channel.ack(msg); } }); } catch (err) { console .error( "Failed to receive message:" , err); } } receiveMessage();

در اینجا کد برنامه ناشر پیام آمده است:

 const amqp = require ( "amqplib" ); const url = "amqp://localhost" ; // Replace with your RabbitMQ server URL const queue = "queue" ; async function sendMessage ( msg ) { try { const connection = await amqp.connect(url); const channel = await connection.createChannel(); await channel.assertQueue(queue); await channel.sendToQueue(queue, Buffer.from(msg)); console .log( `Message sent to ${queue} : ${msg} ` ); await channel.close(); await connection.close(); } catch (err) { console .error( "Failed to send message:" , err); } } sendMessage( "Hello, world!" );

این هم خروجی کد:

کد Node JS اجرا شد

اطلاعات اضافی

تا کنون، ما این آموزش را در مورد صف پیام و نقش آن در تسهیل ارتباطات یکپارچه در سیستم های مختلف تکمیل کرده ایم. برای بهبود بیشتر مجموعه مهارت‌های خود، در اینجا برخی از بهترین شیوه‌های اضافی وجود دارد که باید هنگام ایجاد خدمات پیچیده اجرا شوند:

محدود کردن نرخ

تعادل بار

نظارت بر برنامه و ثبت گزارش

ادغام و استقرار مداوم

خلاصه

ما اهمیت کارگزاران پیام و نحوه اجرای صف پیام در یک برنامه کاربردی را برجسته کرده ایم.

به راحتی می توانید مقالات دیگر من را در اینجا تحلیل کنید. تا دفعه بعد، به کدنویسی ادامه دهید!

خبرکاو

ارسال نظر

دیدگاه‌ها بسته شده‌اند.


تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است