Code Module | کد ماژول
1.93K subscribers
357 photos
42 videos
6 files
356 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
با الگوی راکتور در Node.js آشنا بشید🤟

‏Node.js در حوزه معماری‌ ایونت محور، به دلیل توانایی بالای خود در مدیریت تعداد زیادی از اتصالات همزمان متمایزه، که این مهارت از فلسفه طراحی زیربناییش سرچشمه میگیره و به شدت بر الگوی راکتور متکی هست.

الگوی راکتور دقیقا چیه؟ 🤔

‌‏Reactor Pattern ایده ای برای انجام عملیات‌های I/O در Node.js هست. این الگو یک کنترل کننده (در مورد Node.js، یک کالبک فانکشن) ارائه میده، که با هر عملیات I/O مرتبطه، و هنگامی که یک درخواست I/O ساخته میشه، به یک Demultiplexer ارسال میشه.

از الگوی راکتور چه زمانی استفاده میشه؟

در blocking سنتی I/O، زمانی که برنامه یک درخواست I/O (مثله خوندن یک فایل یا برقراری تماس) میده، اجرای برنامه تا زمانی که عملیات کامل بشه متوقف میشه، که این بسیار ناکارآمده، اما Node.js برای مدیریت کارآمده حجم بالایی از اتصالات همزمان از الگوی راکتور استفاده می‌کنه، که اساساً مربوط به مدیریت ناهمزمان عملیات I/O (ورودی/خروجی) هست.

Reactor Pattern چجوری کار میکنه؟

1️⃣Event Demultiplexer: این قلب الگو هست که مسئول نظارت بر چندین منبع I/O (سوکت های شبکه، سیستم فایل ها و... ) هست، و هنگامی که به یک درخواست I/O جدید میرسه، Demultiplexer اون رو به عنوان یک ایونت ثبت میکنه و به یک صف رویداد اضافه میکنه.

2️⃣صف رویداد(Event Queue): این ساختار داده، تمام ایونت های I/O معلق رو به ترتیبی که دریافت کردن، نگه داره میکنه و هر ایونت دارای داده های مرتبط، و یک کالبک فانکشن (handler) هست که باید پس از اتمام عملیات I/O اجرا بشه.

3️⃣ایونت لوپ (Event Loop) : این یک حلقه بی نهایت هست، که به طور مداوم صف ایونت رو نظارت میکنه و از طریق صف، تکرار میشه و ایونت بعدی رو بازیابی میکنه و کالبک فانکشن مرتبط با ایونت رو فراخوانی میکنه.

اما جریان ایونت ها به چه صورته؟ 🤔

‏1. Application Triggers I/O: زمانی برنامه Node.js شما یک عملیات I/O رو شروع کنه، مثل خوندن یک فایل یا درخواست HTTP.

‏2. Demultiplexer شارژ میشه: Demultiplexer درخواست I/O رو قطع میکنه و یک ایونت میسازه و همچنین این ایونت رو در صف ایونت ذخیره می کنه.

3. ایونت لوپ در عمل: ایونت لوپ به طور مداوم صف ایونت رو بررسی میکنه، و هنگامی که عملیات I/O یک ایونت کامل میشه (به عنوان مثال، داده از یک تماس شبکه دریافت میشه) و ایونت مربوطه از صف بازیابی میشه.

4. عملکرد کالبک فانکشن : ایونت لوپ عملکرد کالبک فانکشن مرتبط با ایونت بازیابی شده رو فعال میکنه. این تابع فراخوانی داده های دریافتی رو پردازش میکنه یا عملیات تکمیل شده رو مدیریت میکنه.

5. برگشتن به برنامه: هنگامی که تابع callback کار خودش رو تموم میکنه، برنامه میتونه بدون بلاک شدن توسط عملیات I/O به اجرای خودش ادامه بده.

به صورت کلی الگوی Reactor، پایه و اساس مدل برنامه نویسی ناهمزمان(asynchronous) در Node.js هست. و امکان مدیریت کارآمد عملیات I/O رو فراهم میکنه، که منجر به ساخت برنامه های کاربردی بسیار مقیاس پذیر و پاسخگو میشه. با درک این الگو، میتونیم از قدرت واقعی Node.js برای ساخت برنامه های real-time و ایونت محور استفاده کنیم.

ممکنه در نگاه اول فهمیدن این موضوع سخت باشه، برای همین این مقالات رو پیشنهاد میکنم بخونید :))
🔵 Article
🔵 Article
🔵 Article

#nodejs #reactor
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54😁3